diff --git a/components/panasonic_heatpump/decode.cpp b/components/panasonic_heatpump/decode.cpp index 8b19744..d9785a3 100644 --- a/components/panasonic_heatpump/decode.cpp +++ b/components/panasonic_heatpump/decode.cpp @@ -79,6 +79,19 @@ constexpr const uint8_t KnownModels[NUMBER_OF_MODELS][10] = { {0xE2, 0xD5, 0x0B, 0x34, 0x99, 0x83, 0x92, 0x0C, 0x27, 0x98}, // 52 {0x42, 0xD4, 0x0B, 0x83, 0x71, 0x32, 0xD2, 0x0C, 0x44, 0x55}, // 53 {0xE2, 0xCF, 0x0C, 0x74, 0x09, 0x12, 0xD0, 0x0E, 0x94, 0x05}, // 54 + {0x12, 0xD7, 0x0D, 0x98, 0x11, 0x33, 0x94, 0x0C, 0x83, 0x10}, // 55 + {0xE2, 0xD5, 0x0B, 0x08, 0x95, 0x02, 0xD6, 0x0F, 0x67, 0x95}, // 56 + {0xE2, 0xD5, 0x0D, 0x36, 0x99, 0x02, 0xD6, 0x10, 0x66, 0x95}, // 57 + {0xE2, 0xCF, 0x0B, 0x84, 0x05, 0x12, 0xD0, 0x0B, 0x93, 0x05}, // 58 + {0xE2, 0xD5, 0x0C, 0x67, 0x00, 0x83, 0x92, 0x0C, 0x28, 0x98}, // 59 + {0xE2, 0xD5, 0x0C, 0x67, 0x00, 0x83, 0x92, 0x0D, 0x29, 0x98}, // 60 + {0xE2, 0xD5, 0x0D, 0x08, 0x95, 0x02, 0xD6, 0x10, 0x67, 0x95}, // 61 + {0xE2, 0xD5, 0x0C, 0x08, 0x95, 0x02, 0xD6, 0x0D, 0x67, 0x95}, // 62 + {0xE2, 0xD5, 0x0C, 0x08, 0x95, 0x02, 0xD6, 0x10, 0x67, 0x95}, // 63 + {0xE2, 0xD5, 0x0C, 0x08, 0x95, 0x02, 0xD6, 0x10, 0x66, 0x95}, // 64 + {0xE2, 0xD5, 0x0B, 0x08, 0x95, 0x02, 0xD6, 0x0E, 0x68, 0x95}, // 65 + {0xE2, 0xCF, 0x0C, 0x88, 0x05, 0x12, 0xD0, 0x0C, 0x97, 0x05}, // 66 + {0x12, 0xD7, 0x0D, 0x85, 0x11, 0x37, 0x94, 0x0E, 0x84, 0x10}, // 67 }; int PanasonicDecode::getBit1(uint8_t input) { @@ -160,30 +173,30 @@ int PanasonicDecode::getUintt16(const std::vector& data, uint8_t index) // TOP4 // int PanasonicDecode::getOperationMode(uint8_t input) { switch ((int)(input & 0b111111)) { - case 0b100001: - return 0; // 0x21 = tank - case 0b010010: - return 1; // 0x12 = heat - case 0b100010: - return 2; // 0x22 = heat+tank - case 0b010011: - return 3; // 0x13 = cool - case 0b100011: - return 4; // 0x23 = cool+tank - case 0b011000: - return 5; // 0x18 = auto - case 0b101000: - return 6; // 0x28 = auto-tank - case 0b011001: - return 7; // 0x19 = auto-heat - case 0b101001: - return 8; // 0x29 = auto-heat+tank - case 0b011010: - return 9; // 0x1A = auto-cool - case 0b101010: - return 10; // 0x2A = auto-cool+tank - default: - return -1; // unknown + case 0b100001: // 0x21 = tank + return 0; + case 0b010010: // 0x12 = heat + return 1; + case 0b100010: // 0x22 = heat+tank + return 2; + case 0b010011: // 0x13 = cool + return 3; + case 0b100011: // 0x23 = cool+tank + return 4; + case 0b011000: // 0x18 = auto + return 5; + case 0b101000: // 0x28 = auto-tank + return 6; + case 0b011001: // 0x19 = auto-heat + return 7; + case 0b101001: // 0x29 = auto-heat+tank + return 8; + case 0b011010: // 0x1A = auto-cool + return 9; + case 0b101010: // 0x2A = auto-cool+tank + return 10; + default: // unknown + return -1; } } @@ -225,12 +238,12 @@ std::string PanasonicDecode::getErrorInfo(uint8_t errorType, uint8_t errorNumber char error_string[10]; switch (error_type) { - case 177: // B1=F type error - sprintf(error_string, "F%02X", error_number); - break; - case 161: // A1=H type error + case 0xA1: // H type error sprintf(error_string, "H%02X", error_number); break; + case 0xB1: // F type error + sprintf(error_string, "F%02X", error_number); + break; default: sprintf(error_string, "No error"); break; diff --git a/components/panasonic_heatpump/decode.h b/components/panasonic_heatpump/decode.h index 152c5b0..15aca96 100644 --- a/components/panasonic_heatpump/decode.h +++ b/components/panasonic_heatpump/decode.h @@ -7,7 +7,7 @@ #define RESPONSE_MSG_SIZE 203 #endif #ifndef NUMBER_OF_MODELS -#define NUMBER_OF_MODELS 55 +#define NUMBER_OF_MODELS 68 #endif namespace esphome { @@ -68,7 +68,7 @@ class PanasonicDecode { static const constexpr char* const ExtPadHeaterType[] = {"3", "Disabled", "Type-A", "Type-B"}; static const constexpr char* const BivalentMode[] = {"3", "Alternative", "Parallel", "Advanced Parallel"}; static const constexpr char* const ModelNames[] = { - "55", // string representation of number of known models (last model number + 1) + "58", // string representation of number of known models (last model number + 1) "WH-MDC05H3E5", // 0 "WH-MDC07H3E5", // 1 "IDU:WH-SXC09H3E5, ODU:WH-UX09HE5", // 2 @@ -88,42 +88,55 @@ class PanasonicDecode { "IDU:WH-ADC0309H3E5, ODU:WH-UD09HE5", // 16 "IDU:WH-ADC0309J3E5, ODU:WH-UD05JE5", // 17 "IDU:WH-SDC0709J3E5, ODU:WH-UD07JE5", // 18 - "IDU:WH-SDC07H3E5-1, ODU:WH-UD07HE5-1", // 19 - "WH-MDC07J3E5", // 20 - "WH-MDC09J3E5", // 21 - "IDU:WH-SDC0305J3E5, ODU:WH-UD05JE5", // 22 - "WH-MXC09J3E8", // 23 - "WH-MXC12J9E8", // 24 - "IDU:WH-ADC1216H6E5, ODU:WH-UD12HE5", // 25 - "IDU:WH-ADC0309J3E5C, ODU:WH-UD07JE5", // 26 - "WH-MDC07J3E5", // 27 - "WH-MDC05J3E5", // 28 - "IDU:WH-SQC12H9E8, ODU:WH-UQ12HE8", // 29 - "IDU:WH-SXC12H6E5, ODU:WH-UX12HE5", // 30 - "WH-MDC09J3E5", // 31 - "WH-MXC09J3E5", // 32 - "IDU:WH-ADC1216H6E5C, ODU:WH-UD12HE5", // 33 - "IDU:WH-ADC0509L3E5, ODU:WH-WDG07LE5", // 34 - "IDU:WH-SXC09H3E8, ODU:WH-UX09HE8", // 35 - "IDU:WH-ADC0309K3E5AN, ODU:WH-UDZ07KE5", // 36 - "IDU:WH-SDC0309K3E5, ODU:WH-UDZ05KE5", // 37 - "IDU:WH-SDC0509L3E5, ODU:WH-WDG09LE5", // 38 - "IDU:WH-SDC12H9E8, ODU:WH-UD12HE8", // 39 - "IDU:WH-SDC0309K3E5, ODU:WH-UDZ07KE5", // 40 - "IDU:WH-ADC0916H9E8, ODU:WH-UX16HE8", // 41 - "IDU:WH-ADC0912H9E8, ODU:WH-UX12HE8", // 42 - "WH-MXC16J9E8", // 43 - "WH-MXC12J6E5", // 44 - "IDU:WH-SQC09H3E8, ODU:WH-UQ09HE8", // 45 - "IDU:WH-ADC0309K3E5, ODU:WH-UDZ09KE5", // 46 - "IDU:WH-ADC0916H9E8, ODU:WH-UX12HE8", // 47 - "IDU:WH-SDC0509L3E5, ODU:WH-WDG07LE5", // 48 - "IDU:WH-SXC09H3E5, ODU:WH-UX09HE5", // 49 - "WH-MXC12H9E8", // 50 - "IDU:WH-ADC0509L3E5AN, ODU:WH-WDG05LE5", // 51 - "IDU:WH-SDC0509L3E5, ODU:WH-WDG05LE5", // 52 - "IDU:WH-ADC0309J3E5C, ODU:WH-UD03JE5", // 53 - "IDU:WH-ADC0916H9E8, ODU:WH-UX09HE8", // 54 + "IDU:WH-SDC07H3E5-1, ODU:WH-UD07HE5-1", // 19 + "WH-MDC07J3E5", // 20 + "WH-MDC09J3E5", // 21 + "IDU:WH-SDC0305J3E5, ODU:WH-UD05JE5", // 22 + "WH-MXC09J3E8", // 23 + "WH-MXC12J9E8", // 24 + "IDU:WH-ADC1216H6E5, ODU:WH-UD12HE5", // 25 + "IDU:WH-ADC0309J3E5C, ODU:WH-UD07JE5", // 26 + "WH-MDC07J3E5", // 27 + "WH-MDC05J3E5", // 28 + "IDU:WH-SQC12H9E8, ODU:WH-UQ12HE8", // 29 + "IDU:WH-SXC12H6E5, ODU:WH-UX12HE5", // 30 + "WH-MDC09J3E5", // 31 + "WH-MXC09J3E5", // 32 + "IDU:WH-ADC1216H6E5C, ODU:WH-UD12HE5", // 33 + "IDU:WH-ADC0509L3E5, ODU:WH-WDG07LE5", // 34 + "IDU:WH-SXC09H3E8, ODU:WH-UX09HE8", // 35 + "IDU:WH-ADC0309K3E5AN, ODU:WH-UDZ07KE5", // 36 + "IDU:WH-SDC0309K3E5, ODU:WH-UDZ05KE5", // 37 + "IDU:WH-SDC0509L3E5, ODU:WH-WDG09LE5", // 38 + "IDU:WH-SDC12H9E8, ODU:WH-UD12HE8", // 39 + "IDU:WH-SDC0309K3E5, ODU:WH-UDZ07KE5", // 40 + "IDU:WH-ADC0916H9E8, ODU:WH-UX16HE8", // 41 + "IDU:WH-ADC0912H9E8, ODU:WH-UX12HE8", // 42 + "WH-MXC16J9E8", // 43 + "WH-MXC12J6E5", // 44 + "IDU:WH-SQC09H3E8, ODU:WH-UQ09HE8", // 45 + "IDU:WH-ADC0309K3E5, ODU:WH-UDZ09KE5", // 46 + "IDU:WH-ADC0916H9E8, ODU:WH-UX12HE8", // 47 + "IDU:WH-SDC0509L3E5, ODU:WH-WDG07LE5", // 48 + "IDU:WH-SXC09H3E5, ODU:WH-UX09HE5", // 49 + "WH-MXC12H9E8", // 50 + "IDU:WH-ADC0509L3E5AN, ODU:WH-WDG05LE5", // 51 + "IDU:WH-SDC0509L3E5, ODU:WH-WDG05LE5", // 52 + "IDU:WH-ADC0309J3E5C, ODU:WH-UD03JE5", // 53 + "IDU:WH-ADC0916H9E8, ODU:WH-UX09HE8", // 54 + "IDU:WH-ADC0316M9E8AN2, ODU:WH-WXG09ME8", // 55 + "IDU:WH-SDC0309K3E5, ODU:WH-UDZ07KE5", // 56 + "IDU:WH-ADC0309K3E5AN, ODU:WH-UDZ05KE5", // 57 + "IDU:WH-SQC16H9E8, ODU:WH-UQ16HE8", // 58 + "IDU:WH-ADC0509L3E5AN, ODU:WH-WDG07LE5", // 59 + "IDU:WH-ADC0509L3E5AN, ODU:WH-WDG09LE5", // 60 + "IDU:WH-SDC0309K3E5, ODU:WH-UDZ07KE5", // 61 + "IDU:WH-SDC0309K3E5, ODU:WH-UDZ07KE5", // 62 + "IDU:WH-SDC0309K3E5, ODU:WH-UDZ07KE5", // 63 + "IDU:WH-SDC0309K3E5, ODU:WH-UDZ05KE5", // 64 + "IDU:WH-SDC0309K3E5, ODU:WH-UDZ09KE5", // 65 + "IDU:WH-SDC09H3E8, ODU:WH-UD09HE8", // 66 + "WH-WXG12ME8", // 67 }; }; diff --git a/prototypes/panasonic_heatpump/heishamon_decode.md b/prototypes/panasonic_heatpump/heishamon_decode.md new file mode 100644 index 0000000..78ee1bc --- /dev/null +++ b/prototypes/panasonic_heatpump/heishamon_decode.md @@ -0,0 +1 @@ +[Link to heishamon_decode google spreadsheet](https://docs.google.com/spreadsheets/d/1IpGPg_Z_M5kcAj3TD48ABNItpEJu0iUv2wz5jdXhKX8/edit?usp=sharing) diff --git a/prototypes/panasonic_heatpump/heishamon_decode.xlsx b/prototypes/panasonic_heatpump/heishamon_decode.xlsx deleted file mode 100644 index 359ddba..0000000 Binary files a/prototypes/panasonic_heatpump/heishamon_decode.xlsx and /dev/null differ