diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 561bb2a82..689690e67 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -138,7 +138,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i register_telegram_type(set_typeids[i], F("RC300Set"), false, MAKE_PF_CB(process_RC300Set)); register_telegram_type(summer_typeids[i], F("RC300Summer"), false, MAKE_PF_CB(process_RC300Summer)); register_telegram_type(curve_typeids[i], F("RC300Curves"), false, MAKE_PF_CB(process_RC300Curve)); - register_telegram_type(summer2_typeids[i], F("RC300Summer2"), true, MAKE_PF_CB(process_RC300Summer2)); + register_telegram_type(summer2_typeids[i], F("RC300Summer2"), false, MAKE_PF_CB(process_RC300Summer2)); } register_telegram_type(0x2F5, F("RC300WWmode"), true, MAKE_PF_CB(process_RC300WWmode)); register_telegram_type(0x31B, F("RC300WWtemp"), true, MAKE_PF_CB(process_RC300WWtemp)); @@ -365,6 +365,9 @@ std::shared_ptr Thermostat::heating_circuit(std::sha if (timer2_typeids.size()) { toggle_fetch(timer2_typeids[hc_num - 1], toggle_); } + if (summer2_typeids.size()) { + toggle_fetch(summer2_typeids[hc_num - 1], toggle_); + } return new_hc; // return back point to new HC object } diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 1ae77187d..f82bafb46 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -314,10 +314,10 @@ void EMSdevice::show_telegram_handlers(uuid::console::Shell & shell) const { } // list all the telegram type IDs for this device, outputting to a string (max size 200) -char * EMSdevice::show_telegram_handlers(char * result, uint8_t handlers) { +char * EMSdevice::show_telegram_handlers(char * result, const size_t len, const uint8_t handlers) { uint8_t size = telegram_functions_.size(); - strlcpy(result, "", 200); + strlcpy(result, "", len); if (!size) { return result; @@ -328,9 +328,9 @@ char * EMSdevice::show_telegram_handlers(char * result, uint8_t handlers) { if (handlers == Handlers::ALL || (handlers == Handlers::RECEIVED && tf.received_ && !tf.fetch_) || (handlers == Handlers::FETCHED && tf.received_ && tf.fetch_) || (handlers == Handlers::PENDING && !tf.received_ && !tf.fetch_)) { if (i++ > 0) { - strlcat(result, " ", 200); + strlcat(result, " ", len); } - strlcat(result, Helpers::hextoa(tf.telegram_type_id_, true).c_str(), 200); + strlcat(result, Helpers::hextoa(tf.telegram_type_id_, true).c_str(), len); } } diff --git a/src/emsdevice.h b/src/emsdevice.h index 5c385a3c7..f538a7d28 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -180,7 +180,7 @@ class EMSdevice { enum Handlers : uint8_t { ALL, RECEIVED, FETCHED, PENDING }; void show_telegram_handlers(uuid::console::Shell & shell) const; - char * show_telegram_handlers(char * result, uint8_t handlers); + char * show_telegram_handlers(char * result, const size_t len, const uint8_t handlers); void show_mqtt_handlers(uuid::console::Shell & shell) const; void list_device_entries(JsonObject & output) const; void exclude_entity(uint8_t entity_id); diff --git a/src/system.cpp b/src/system.cpp index 336c3ba2c..d6e62c559 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -1193,16 +1193,16 @@ bool System::command_info(const char * value, const int8_t id, JsonObject & outp obj["product id"] = emsdevice->product_id(); obj["version"] = emsdevice->version(); obj["entities"] = emsdevice->count_entities(); - char result[200]; - (void)emsdevice->show_telegram_handlers(result, EMSdevice::Handlers::RECEIVED); + char result[250]; + (void)emsdevice->show_telegram_handlers(result, sizeof(result), EMSdevice::Handlers::RECEIVED); if (result[0] != '\0') { obj["handlers received"] = result; // don't show handlers if there aren't any } - (void)emsdevice->show_telegram_handlers(result, EMSdevice::Handlers::FETCHED); + (void)emsdevice->show_telegram_handlers(result, sizeof(result), EMSdevice::Handlers::FETCHED); if (result[0] != '\0') { obj["handlers fetched"] = result; } - (void)emsdevice->show_telegram_handlers(result, EMSdevice::Handlers::PENDING); + (void)emsdevice->show_telegram_handlers(result, sizeof(result), EMSdevice::Handlers::PENDING); if (result[0] != '\0') { obj["handlers pending"] = result; }