diff --git a/HeatPumpType.md b/HeatPumpType.md index c6730104..37ecec65 100644 --- a/HeatPumpType.md +++ b/HeatPumpType.md @@ -44,7 +44,11 @@ Assuming that bytes from #129 to #138 are unique for each model of Aquarea heat |37 | E2 D5 0B 08 95 02 D6 0E 66 95 | WH-SDC0309K3E5 | WH-UDZ05KE5 | KIT-WC05K3E5 | 5 | 1ph | HP - split K-series | |38 | E2 D5 0B 34 99 83 92 0C 29 98 | WH-SDC0509L3E5 | WH-WDG09LE5 | KIT-WC09L3E5 | 9 | 1 ph | HP - split L-series 3kW elec heating | |39 | E2 CF 0C 89 05 12 D0 0C 98 05 | WH-SDC12H9E8 | WH-UD12HE8 | KIT-WC12H9E8 | 12 | 3ph | HP | - +|40 | E2 D5 0B 08 95 02 D6 0E 67 95 | WH-SDC0309K3E5 | WH-UDZ07KE5 | KIT-WC07K3E5 | 7 | 1ph | HP - split K-series | +|41 | E2 CF 0C 74 09 12 D0 0C 96 05 | WH-ADC0916H9E8 | WH-UX16HE8 | KIT-AXC16HE8 | 16 | 3ph | T-CAP - All-In-One | +|42 | E2 CF 0C 74 09 12 D0 0E 95 05 | WH-ADC0912H9E8 | WH-UX12HE8 | KIT-AXC12HE8 | 12 | 3ph | T-CAP - All-In-One | +|43 | 32 D4 0B 89 84 73 90 0C 86 84 | Monoblock | WH-MXC16J9E8 | Monoblock | 16 | 3ph | T-CAP | +|44 | 32 D4 0B 00 78 62 90 0B 02 78 | Monoblock | WH-MXC12J6E5 | Monoblock | 12 | 1ph | T-CAP | All bytes are used for Heat Pump model identification in the code. diff --git a/HeishaMon/decode.h b/HeishaMon/decode.h index 83c132d4..bceeeee0 100644 --- a/HeishaMon/decode.h +++ b/HeishaMon/decode.h @@ -38,7 +38,7 @@ String getUintt16(char * data, byte input); static const char _unknown[] PROGMEM = "unknown"; static const char *Model[] PROGMEM = { - "40", //string representation of number of known models (last model number + 1) + "45", //string representation of number of known models (last model number + 1) "WH-MDC05H3E5", //0 "WH-MDC07H3E5", //1 "IDU:WH-SXC09H3E5, ODU:WH-UX09HE5", //2 @@ -58,18 +58,18 @@ static const char *Model[] PROGMEM = { "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 + "IDU: WH-SDC07H3E5-1, ODU: WH-UD07HE5-1", //19 "WH-MDC07J3E5", //20 "WH-MDC09J3E5", //21 - "IDU: WH-SDC0305J3E5 ODU: WH-UD05JE5", //22 + "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 + "IDU: WH-ADC1216H6E5, ODU: WH-UD12HE5", //25 + "IDU: WH-ADC0309J3E5C, ODU: WH-UD07JE5", //26 "WH-MDC07J3E5", //27 "WH-MDC05J3E5", //28 - "IDU: WH-UQ12HE8 ODU: WH-SQC12H9E8", //29 - "IDU: WH-SXC12H6E5 ODU: WH-UX12HE5", //30 + "IDU: WH-UQ12HE8, ODU: WH-SQC12H9E8", //29 + "IDU: WH-SXC12H6E5, ODU: WH-UX12HE5", //30 "WH-MDC09J3E5", //31 "WH-MXC09J3E5", //32 "IDU: WH-ADC1216H6E5C ODU: WH-UD12HE5", //33 @@ -79,6 +79,11 @@ static const char *Model[] PROGMEM = { "IDU: WH-SDC0309K3E5 ODU: WH-UDZ05KE5", //37 "IDU: WH-SDC0509L3E5 ODU: WH-WDG09LE5", //38 "IDU: WH-SDC12H9E8 ODU: WH-UDZ05KE5", //39 + "IDU: WH-SDC0309K3E5, ODU: WH-UDZ07KE5", //40 + "IDU: WH-ADC0916H9E8, ODU: WH-UX16HE8", //41 + "IDU: WH-ADC0912H9E8, ODU: WH-UX12HE8", //42 + "WH-MXC16J9E8", //44 + "WH-MXC12J6E5", //44 }; static const byte knownModels[sizeof(Model) / sizeof(Model[0])][10] PROGMEM = { //stores the bytes #129 to #138 of known models in the same order as the const above @@ -122,6 +127,11 @@ static const byte knownModels[sizeof(Model) / sizeof(Model[0])][10] PROGMEM = { 0xE2, 0xD5, 0x0B, 0x08, 0x95, 0x02, 0xD6, 0x0E, 0x66, 0x95, //37 0xE2, 0xD5, 0x0B, 0x34, 0x99, 0x83, 0x92, 0x0C, 0x29, 0x98, //38 0xE2, 0xCF, 0x0C, 0x89, 0x05, 0x12, 0xD0, 0x0C, 0x98, 0x05, //39 + 0xE2, 0xD5, 0x0B, 0x08, 0x95, 0x02, 0xD6, 0x0E, 0x67, 0x95, //40 + 0xE2, 0xCF, 0x0C, 0x74, 0x09, 0x12, 0xD0, 0x0C, 0x96, 0x05, //41 + 0xE2, 0xCF, 0x0C, 0x74, 0x09, 0x12, 0xD0, 0x0E, 0x95, 0x05, //42 + 0x32, 0xD4, 0x0B, 0x89, 0x84, 0x73, 0x90, 0x0C, 0x86, 0x84, //43 + 0x32, 0xD4, 0x0B, 0x00, 0x78, 0x62, 0x90, 0x0B, 0x02, 0x78, //44 }; #define NUMBER_OF_TOPICS 119 //last topic number + 1 diff --git a/MQTT-Topics.md b/MQTT-Topics.md index 51772174..1a65ef7f 100644 --- a/MQTT-Topics.md +++ b/MQTT-Topics.md @@ -122,7 +122,7 @@ TOP102 | main/Solar_On_Delta | Solar heating delta on TOP103 | main/Solar_Off_Delta | solar heating delta off TOP104 | main/Solar_Frost_Protection | Solar frost protection temp TOP105 | main/Solar_High_Limit | Solar max temp limit -TOP106 | main/Pump_Flowrate_mode | Settings for pump flow rate (0=DeltaT, 1=Maximum flow, J-series only) +TOP106 | main/Pump_Flowrate_Mode | Settings for pump flow rate (0=DeltaT, 1=Maximum flow, J-series only) TOP107 | main/Liquid_Type | Type of liquid in settings (Water / Glycol) TOP108 | main/Alt_External_Sensor | If external outdoor sensor is selected TOP109 | main/Anti_Freeze_Mode | Is anti freeze mode enabled or disabled diff --git a/ProtocolByteDecrypt.md b/ProtocolByteDecrypt.md index eee2b181..9eb3cfb8 100644 --- a/ProtocolByteDecrypt.md +++ b/ProtocolByteDecrypt.md @@ -106,15 +106,15 @@ | TOP71 | 101 | 0b | Convert to DEC 11 - 1 = 10 | Sterilization max operation time [min] | | TOP | 102 | 00 | | 0 byte | | TOP | 103 | 00 | | 0 byte | -| TOP | 104 | 00 | Convert to DEC X-1 | ? Delay timer to start internal heater on J series | -| TOP | 105 | 00 | Convert to DEC-128 | ? Delta to start internal heater for room heating on J series | -| TOP | 106 | 00 | Convert to DEC-128 | ? Delta to stop internal heater for room heating on J series | +| TOP96 | 104 | 00 | Convert to DEC X-1 | Delay timer to start internal heater (J/K/L series) | +| TOP97 | 105 | 00 | Convert to DEC-128 | Delta to start internal heater for room heating (J/K/L series) | +| TOP98 | 106 | 00 | Convert to DEC-128 | Delta to stop internal heater for room heating (J/K/L series) | | TOP | 107 | 00 | | 0 byte | | TOP | 108 | 00 | | 0 byte | | TOP | 109 | 00 | | 0 byte | -| TOP | 110 | 55 | | ? | +| TOP | 110 | 55 | 1st & 2nd bit - Quiet mode
3rd&4th bit - Powerful
5th & 6th bit - Heat-Cool SW b10 - Cool
7th & 8th bit - External SW b10-Open | Actual/Real states of
Quiet
Powerful
Heat-Cool SW
External SW | | TOP20+TOP26 | 111 | 56 | right 2 bits: 0b10=DHW 0b01=Room 3-Way Valve. Next 2 bits (from right) is defrosting state (0b01 = defrosting not active, 0b10 = defrosting active) | 3 way valve + Defrost status | -| TOP60+TOP61 | 112 | 55 | Hex 59 - external active, 55 - external and internal not active, 56 - internal active (room or DHW) | Heater status | +| TOP60+TOP61 | 112 | 55 | 1st & 2nd bit - Boiler Contact
5th & 6th bit - External Heater
7th & 8th bit - Internal Heater (room or DHW)
( b01 - OFF, b10 - ON )| Real status of Bivalent Boiler contact and Heaters relays (Line under icons) | | TOP44 | 113 | 21 | Hex B1 - F type error, A1 - H type error. After H error reset value 21, F error reset 31 | Error code type | | TOP44 | 114 | 53 | F45 error in HEX 56, calulation 45 treat as HEX and convert to DEC 69 + 17 = 86 (Hex 56) | Error code number | | TOP | 115 | 15 | | ? | diff --git a/binaries/README.md b/binaries/README.md index c959a21b..ebac6f41 100644 --- a/binaries/README.md +++ b/binaries/README.md @@ -6,7 +6,5 @@ The LittleFS versions will, after updating to this version, reset your HeishaMon From version 1.0 some topics are changed so you need to update your automation for this. The sensors are now in /main/ (before /sdc/) and the commands are expected in /commands/ (before in root topic). Check MQTT-Topics.md for the overview of all topics -The latest production release is v3.1. If you decide to try out a later development version, you should be able to restore the firmware using a USB-TTL cable as sometimes upgrading to a development versions seems to fail and brick the heishamon pcb. - -The beta version 3.2-beta-1 and higher are to fix Listen Only mode (parallel mode with CZ-TAW) on K and L series heatpumps +The latest production release is v3.2.3. If you decide to try out a later development version, you should be able to restore the firmware using a USB-TTL cable as sometimes upgrading to a development versions seems to fail and brick the heishamon pcb. Version v3.2 can cause, in combination with the real optional pcb installed, the heatpump to stop responding to heishamon. If you have this, please update to v3.2.3 and power cycle the heatpump.