fix #390, fetching summer2_ids

This commit is contained in:
MichaelDvP
2022-03-11 07:20:52 +01:00
parent df0da84b9f
commit 52a9e500df
4 changed files with 13 additions and 10 deletions

View File

@@ -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(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(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(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(0x2F5, F("RC300WWmode"), true, MAKE_PF_CB(process_RC300WWmode));
register_telegram_type(0x31B, F("RC300WWtemp"), true, MAKE_PF_CB(process_RC300WWtemp)); register_telegram_type(0x31B, F("RC300WWtemp"), true, MAKE_PF_CB(process_RC300WWtemp));
@@ -365,6 +365,9 @@ std::shared_ptr<Thermostat::HeatingCircuit> Thermostat::heating_circuit(std::sha
if (timer2_typeids.size()) { if (timer2_typeids.size()) {
toggle_fetch(timer2_typeids[hc_num - 1], toggle_); 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 return new_hc; // return back point to new HC object
} }

View File

@@ -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) // 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(); uint8_t size = telegram_functions_.size();
strlcpy(result, "", 200); strlcpy(result, "", len);
if (!size) { if (!size) {
return result; 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_) 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_)) { || (handlers == Handlers::FETCHED && tf.received_ && tf.fetch_) || (handlers == Handlers::PENDING && !tf.received_ && !tf.fetch_)) {
if (i++ > 0) { 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);
} }
} }

View File

@@ -180,7 +180,7 @@ class EMSdevice {
enum Handlers : uint8_t { ALL, RECEIVED, FETCHED, PENDING }; enum Handlers : uint8_t { ALL, RECEIVED, FETCHED, PENDING };
void show_telegram_handlers(uuid::console::Shell & shell) const; 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 show_mqtt_handlers(uuid::console::Shell & shell) const;
void list_device_entries(JsonObject & output) const; void list_device_entries(JsonObject & output) const;
void exclude_entity(uint8_t entity_id); void exclude_entity(uint8_t entity_id);

View File

@@ -1193,16 +1193,16 @@ bool System::command_info(const char * value, const int8_t id, JsonObject & outp
obj["product id"] = emsdevice->product_id(); obj["product id"] = emsdevice->product_id();
obj["version"] = emsdevice->version(); obj["version"] = emsdevice->version();
obj["entities"] = emsdevice->count_entities(); obj["entities"] = emsdevice->count_entities();
char result[200]; char result[250];
(void)emsdevice->show_telegram_handlers(result, EMSdevice::Handlers::RECEIVED); (void)emsdevice->show_telegram_handlers(result, sizeof(result), EMSdevice::Handlers::RECEIVED);
if (result[0] != '\0') { if (result[0] != '\0') {
obj["handlers received"] = result; // don't show handlers if there aren't any 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') { if (result[0] != '\0') {
obj["handlers fetched"] = result; 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') { if (result[0] != '\0') {
obj["handlers pending"] = result; obj["handlers pending"] = result;
} }