Merge pull request #23 from ElVit/heatpump_heishamon_sync
Sync panasonic_heatpump with heishamon
This commit is contained in:
commit
57e65412a8
|
|
@ -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<uint8_t>& 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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
[Link to heishamon_decode google spreadsheet](https://docs.google.com/spreadsheets/d/1IpGPg_Z_M5kcAj3TD48ABNItpEJu0iUv2wz5jdXhKX8/edit?usp=sharing)
|
||||
Binary file not shown.
Loading…
Reference in New Issue