diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index e0405527a..343aca6e7 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -34,3 +34,4 @@ For more details go to [emsesp.org](https://emsesp.org/). - fetch telegrams: set length to fetch [#3017](https://github.com/emsesp/EMS-ESP32/issues/3017) - move http client from stack to heap - heap optimizations [#3021](https://github.com/emsesp/EMS-ESP32/discussions/3021) +- check and read 0x470 as summer2_typeids[0] only if received [#2686](https://github.com/emsesp/EMS-ESP32/issues/2686), [#3055](https://github.com/emsesp/EMS-ESP32/issues/3055) diff --git a/docs/dump_telegrams.csv b/docs/dump_telegrams.csv index f9b84239e..4a5053260 100644 --- a/docs/dump_telegrams.csv +++ b/docs/dump_telegrams.csv @@ -112,10 +112,10 @@ telegram_type_id,name,is_fetched 0x02A0,RC300Curves, 0x02A1,RC300Curves, 0x02A2,RC300Curves, -0x02A5,RC300Monitor,fetched -0x02A6,CRFMonitor, +0x02A5,RC300Monitor, +0x02A6,RC300Monitor, 0x02A7,RC300Monitor, -0x02A8,CRFMonitor, +0x02A8,RC300Monitor, 0x02A9,RC300Monitor, 0x02AA,RC300Monitor, 0x02AB,RC300Monitor, @@ -171,7 +171,7 @@ telegram_type_id,name,is_fetched 0x0468,HPSet, 0x0469,HPSet, 0x046A,HPSet, -0x0470,RC300Summer2, +0x0470,RC300Summer2,fetched 0x0471,RC300Summer2, 0x0472,RC300Summer2, 0x0473,RC300Summer2, @@ -179,6 +179,7 @@ telegram_type_id,name,is_fetched 0x0475,RC300Summer2, 0x0476,RC300Summer2, 0x0477,RC300Summer2, +0x0478,RC300Summer2, 0x047B,HP2, 0x0484,HPSilentMode,fetched 0x0485,HpCooling,fetched diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index ceba2fc86..824897496 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -166,7 +166,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i set2_typeids = {0x0421, 0x0422, 0x0423, 0x0424}; summer_typeids = {0x02AF, 0x02B0, 0x02B1, 0x02B2, 0x02B3, 0x02B4, 0x02B5, 0x02B6}; curve_typeids = {0x029B, 0x029C, 0x029D, 0x029E, 0x029F, 0x02A0, 0x02A1, 0x02A2}; - summer2_typeids = {0x0470, 0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0476, 0x0477, 0x0478}; + summer2_typeids = {0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0476, 0x0477, 0x0478}; hp_typeids = {0x0467, 0x0468, 0x0469, 0x046A}; hpmode_typeids = {0x0291, 0x0292, 0x0293, 0x0294}; const size_t monitor_size = monitor_typeids.size(); @@ -207,6 +207,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i register_telegram_type(0x16E, "Absent", true, MAKE_PF_CB(process_Absent), 1); register_telegram_type(0xBF, "ErrorMessage", false, MAKE_PF_CB(process_ErrorMessageBF)); register_telegram_type(0xC0, "RCErrorMessage", false, MAKE_PF_CB(process_RCErrorMessage2)); + register_telegram_type(0x470, "RC300Summer2", true, MAKE_PF_CB(process_RC300Summer2), 8); EMSESP::send_read_request(0xC0, device_id, 0, 20); // read last errorcode on start (only published on errors) // JUNKERS/HT3 @@ -1268,7 +1269,13 @@ void Thermostat::process_RC300Summer(std::shared_ptr telegram) { void Thermostat::process_RC300Summer2(std::shared_ptr telegram) { auto hc = heating_circuit(telegram); if (hc == nullptr) { - return; + // telegram 0x470 see https://github.com/emsesp/EMS-ESP32/issues/2686 + if (telegram->type_id == 0x470 && telegram->message_length > 2) { + hc = heating_circuit(1); + summer2_typeids[0] = 0x470; + } else { + return; + } } if (hc->statusbyte & 1) { has_update(telegram, hc->summersetmode, 0); diff --git a/src/emsesp_version.h b/src/emsesp_version.h index c98cd567e..e7b3ea13f 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.8.2-dev.19" +#define EMSESP_APP_VERSION "3.8.2-dev.20"