diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 68adc92d9..f37199dae 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -568,6 +568,12 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const FL_(auxHeaterOnly), DeviceValueUOM::NONE, MAKE_CF_CB(set_additionalHeaterOnly)); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &auxHeater_, + DeviceValueType::BOOL, + FL_(auxHeater), + DeviceValueUOM::NONE, + MAKE_CF_CB(set_additionalHeater)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &addHeaterDelay_, DeviceValueType::USHORT, @@ -1502,8 +1508,9 @@ void Boiler::process_HpValve(std::shared_ptr telegram) { // Boiler(0x08) -> All(0x00), ?(0x0491), data: 03 01 00 00 00 02 64 00 00 14 01 2C 00 0A 00 1E 00 1E 00 00 1E 0A 1E 05 05 void Boiler::process_HpAdditionalHeater(std::shared_ptr telegram) { has_update(telegram, auxHeaterOnly_, 1); + has_update(telegram, auxHeater_, 2); has_update(telegram, tempParMode_, 5); - has_update(telegram, addHeaterDelay_, 10); + // has_update(telegram, addHeaterDelay_, ?); // unknown position } // Settings AM200 @@ -2465,6 +2472,15 @@ bool Boiler::set_additionalHeaterOnly(const char * value, const int8_t id) { return false; } +bool Boiler::set_additionalHeater(const char * value, const int8_t id) { + bool v; + if (Helpers::value2bool(value, v)) { + write_command(0x491, 2, v ? 1 : 0, 0x491); + return true; + } + return false; +} + bool Boiler::set_tempParMode(const char * value, const int8_t id) { int v; if (Helpers::value2temperature(value, v)) { diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 1bb8cfe41..cf85389d0 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -243,6 +243,7 @@ class Boiler : public EMSdevice { uint8_t releaseWait_; // pos 15: Boiler release wait time (min) uint8_t auxHeaterOnly_; + uint8_t auxHeater_; uint16_t addHeaterDelay_; int8_t minTempSilent_; int8_t tempParMode_; @@ -389,6 +390,7 @@ class Boiler : public EMSdevice { } bool set_minTempSilent(const char * value, const int8_t id); bool set_additionalHeaterOnly(const char * value, const int8_t id); + bool set_additionalHeater(const char * value, const int8_t id); bool set_additionalHeaterDelay(const char * value, const int8_t id); bool set_tempParMode(const char * value, const int8_t id); diff --git a/src/locale_translations.h b/src/locale_translations.h index 2d2f67a96..effb1f799 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -368,6 +368,7 @@ MAKE_PSTR_LIST(maxHeatComp, "maxheatcomp", "heat limit compressor", "Heizgrenze MAKE_PSTR_LIST(maxHeatHeat, "maxheatheat", "heat limit heating", "Heizgrenze Heizen", "heat limit heating", "heat limit heating", "limit ciepła dla ogrzewania", "maks varmegrense oppvarming", "limite chaleur chauffage") MAKE_PSTR_LIST(maxHeatDhw, "maxheatdhw", "heat limit dhw", "Heizgrenze Warmwasser", "heat limit dhw", "heat limit dhw", "limit ciepła dla c.w.u.", "varmegrense varmtvann", "limite chaleur ecs") +MAKE_PSTR_LIST(auxHeater, "auxheater", "auxilliary heater", "Zusatzheizer") MAKE_PSTR_LIST(auxHeaterOnly, "auxheateronly", "auxilliary heater only", "nur Zusatzheizer") MAKE_PSTR_LIST(addHeaterDelay, "addheaterdelay", "additional heater on delay", "Zusatzheizer Einschaltverzögerung") MAKE_PSTR_LIST(minTempSilent, "mintempsilent", "min. outside temp. for silent mode", "Minimale Aussentemperatur Silentmodus")