diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 54c7fa571..2d9d54519 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -836,6 +836,24 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const MAKE_CF_CB(set_wwEcoPlusDiffTemp), 6, 12); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, + &wwComfStopTemp_, + DeviceValueType::UINT, + FL_(wwComfStopTemp), + DeviceValueUOM::DEGREES, + MAKE_CF_CB(set_wwComfStopTemp)); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, + &wwEcoStopTemp_, + DeviceValueType::UINT, + FL_(wwEcoStopTemp), + DeviceValueUOM::DEGREES, + MAKE_CF_CB(set_wwEcoStopTemp)); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, + &wwEcoPlusStopTemp_, + DeviceValueType::UINT, + FL_(wwEcoPlusStopTemp), + DeviceValueUOM::DEGREES, + MAKE_CF_CB(set_wwEcoPlusStopTemp)); register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &hpCircPumpWw_, DeviceValueType::BOOL, @@ -1940,6 +1958,10 @@ void Boiler::process_HpDhwSettings(std::shared_ptr telegram) { has_update(telegram, wwComfDiffTemp_, 12); has_update(telegram, wwEcoDiffTemp_, 13); has_update(telegram, wwEcoPlusDiffTemp_, 14); + //https://github.com/emsesp/EMS-ESP32/issues/1624 + has_update(telegram, wwComfStopTemp_, 8); + has_update(telegram, wwEcoStopTemp_, 9); + has_update(telegram, wwEcoPlusStopTemp_, 10); } // 0x49C: @@ -2952,6 +2974,7 @@ bool Boiler::set_tempDiff(const char * value, const int8_t id) { return false; } +// also used for stopTemp with different index bool Boiler::set_wwOffTemp(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 854b10fe2..c047f1231 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -269,6 +269,9 @@ class Boiler : public EMSdevice { uint8_t wwComfDiffTemp_; uint8_t wwEcoDiffTemp_; uint8_t wwEcoPlusDiffTemp_; + uint8_t wwComfStopTemp_; + uint8_t wwEcoStopTemp_; + uint8_t wwEcoPlusStopTemp_; uint8_t vp_cooling_; uint8_t heatCable_; @@ -489,6 +492,15 @@ class Boiler : public EMSdevice { inline bool set_wwEcoPlusDiffTemp(const char * value, const int8_t id) { return set_wwDiffTemp(value, 14); } + inline bool set_wwComfStopTemp(const char * value, const int8_t id) { + return set_wwOffTemp(value, 8); + } + inline bool set_wwEcoStopTemp(const char * value, const int8_t id) { + return set_wwOffTemp(value, 9); + } + inline bool set_wwEcoPlusStopTemp(const char * value, const int8_t id) { + return set_wwOffTemp(value, 10); + } bool set_vp_cooling(const char * value, const int8_t id); bool set_heatCable(const char * value, const int8_t id); bool set_VC0valve(const char * value, const int8_t id); diff --git a/src/locale_translations.h b/src/locale_translations.h index 1aa219ef6..366f076d3 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -444,6 +444,9 @@ MAKE_TRANSLATION(wwEcoPlusOffTemp, "wwecoplusoff", "eco+ switch off", "ECO+ Auss MAKE_TRANSLATION(wwComfDiffTemp, "wwcomfdiff", "comfort diff", "Komfort Differenztemp", "", "", "", "", "", "", "", "") // TODO translate MAKE_TRANSLATION(wwEcoDiffTemp, "wwecodiff", "eco diff", "ECO Differenztemp", "", "", "", "", "", "", "", "") // TODO translate MAKE_TRANSLATION(wwEcoPlusDiffTemp, "wwecoplusdiff", "eco+ diff", "ECO+ Differenztemp", "", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(wwComfStopTemp, "wwcomfstop", "comfort stop temp", "Komfort Stopptemp", "", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(wwEcoStopTemp, "wwecostop", "eco stop temp", "ECO Stopptemp", "", "", "", "", "", "", "", "") // TODO translate +MAKE_TRANSLATION(wwEcoPlusStopTemp, "wwecoplusstop", "eco+ stop temp", "ECO+ Stopptemp", "", "", "", "", "", "", "", "") // TODO translate MAKE_TRANSLATION(auxHeatMode, "auxheatrmode", "aux heater mode", "Modus Zusatzheizer", "Modus bijverwarmer", "", "tryb pracy dogrzewacza po blokadzie z Zakładu Energetycznego", "tilleggsvarmer modus", "", "ilave ısıtıcı modu", "modalità riscaldatore addizionale", "režim pomocného ohrievača") // TODO translate MAKE_TRANSLATION(auxMaxLimit, "auxmaxlimit", "aux heater max limit", "Zusatzheizer max. Grenze", "Bijverwarmer grensinstelling maximaal", "", "dogrzewacz, maksymalny limit", "tillegsvarme maksgrense", "", "ilave ısıtıcı maks limit", "limite massimo riscaldatore addizionale", "maximálny limit pomocného ohrievača") // TODO translate