From 3bb7e3514f95b59aabe556a08e3c5ae208903c39 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 3 Feb 2024 18:14:31 +0100 Subject: [PATCH] add #1597 temp diff --- src/devices/boiler.cpp | 37 +++++++++++++++++++++++++++++++++++++ src/devices/boiler.h | 13 +++++++++++++ src/locale_translations.h | 3 +++ 3 files changed, 53 insertions(+) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 8a2e5333f..8a54d7429 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -806,6 +806,30 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const MAKE_CF_CB(set_wwEcoPlusOffTemp), 48, 63); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, + &wwComfDiffTemp_, + DeviceValueType::UINT, + FL_(wwComfDiffTemp), + DeviceValueUOM::K, + MAKE_CF_CB(set_wwComfDiffTemp), + 6, + 12); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, + &wwEcoDiffTemp_, + DeviceValueType::UINT, + FL_(wwEcoDiffTemp), + DeviceValueUOM::K, + MAKE_CF_CB(set_wwEcoDiffTemp), + 6, + 12); + register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, + &wwEcoPlusDiffTemp_, + DeviceValueType::UINT, + FL_(wwEcoPlusDiffTemp), + DeviceValueUOM::K, + MAKE_CF_CB(set_wwEcoPlusDiffTemp), + 6, + 12); register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &hpCircPumpWw_, DeviceValueType::BOOL, @@ -1906,6 +1930,10 @@ void Boiler::process_HpDhwSettings(std::shared_ptr telegram) { has_update(telegram, wwComfOffTemp_, 1); has_update(telegram, wwEcoOffTemp_, 0); has_update(telegram, wwEcoPlusOffTemp_, 5); + // https://github.com/emsesp/EMS-ESP32/issues/1597 + has_update(telegram, wwComfDiffTemp_, 12); + has_update(telegram, wwEcoDiffTemp_, 13); + has_update(telegram, wwEcoPlusDiffTemp_, 14); } // 0x49C: @@ -2918,6 +2946,15 @@ bool Boiler::set_tempDiff(const char * value, const int8_t id) { } bool Boiler::set_wwOffTemp(const char * value, const int8_t id) { + int v; + if (Helpers::value2temperature(value, v)) { + write_command(0x499, id, v, 0x499); + return true; + } + return false; +} + +bool Boiler::set_wwDiffTemp(const char * value, const int8_t id) { int v; if (Helpers::value2number(value, v)) { write_command(0x499, id, v, 0x499); diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 106764a72..ff9f7f66b 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -265,6 +265,9 @@ class Boiler : public EMSdevice { uint8_t wwComfOffTemp_; uint8_t wwEcoOffTemp_; uint8_t wwEcoPlusOffTemp_; + uint8_t wwComfDiffTemp_; + uint8_t wwEcoDiffTemp_; + uint8_t wwEcoPlusDiffTemp_; uint8_t vp_cooling_; uint8_t heatCable_; @@ -475,6 +478,16 @@ class Boiler : public EMSdevice { inline bool set_wwEcoPlusOffTemp(const char * value, const int8_t id) { return set_wwOffTemp(value, 5); } + bool set_wwDiffTemp(const char * value, const int8_t id); + inline bool set_wwComfDiffTemp(const char * value, const int8_t id) { + return set_wwDiffTemp(value, 12); + } + inline bool set_wwEcoDiffTemp(const char * value, const int8_t id) { + return set_wwDiffTemp(value, 13); + } + inline bool set_wwEcoPlusDiffTemp(const char * value, const int8_t id) { + return set_wwDiffTemp(value, 14); + } 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 3755367e8..957a9eec7 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -435,6 +435,9 @@ MAKE_TRANSLATION(silentTo, "silentto", "silent mode to", "Silentmodus Ende", "Ei MAKE_TRANSLATION(wwComfOffTemp, "wwcomfoff", "comfort switch off", "Komfort Ausschalttemp", "Comfort Uitschakeltemp.", "Komfortläge avstängingstemp.", "temperatura wyłączania w trybie komfort", "eco modus utkoblingstem", "Confort Temp. d'arrêt", "konfor kapalı", "spegnimento modalità comfort", "komfortné vypnutie") MAKE_TRANSLATION(wwEcoOffTemp, "wwecooff", "eco switch off", "ECO Ausschalttemp", "Eco Uitschakeltemp.", "Ekoläge avstängningstemp.", "temperatura wyłączania w trybie eko", "Øko avstengningstemp.", "Eco Temp. d'arrêt", "eko kapalı", "spegnimento modalità ECO", "eko vypínač") MAKE_TRANSLATION(wwEcoPlusOffTemp, "wwecoplusoff", "eco+ switch off", "ECO+ Ausschalttemp", "Eco+ Uitschakeltemp.", "Eko+ avstängningstemp.", "temperatura wyłączania w trybie eko+", "Øko+ avstengningstemp.", "Eco+ Temp. d'arrêt", "eko+ kapalı", "spegnimento modalità ECO+", "eko+ vypnutie") +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(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