diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index d625ca4e2..ee6de8b03 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -286,6 +286,8 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const MAKE_CF_CB(set_pumpCharacter)); register_device_value( DeviceValueTAG::TAG_DEVICE_DATA, &pumpDelay_, DeviceValueType::UINT8, FL_(pumpDelay), DeviceValueUOM::MINUTES, MAKE_CF_CB(set_pump_delay), 0, 60); + register_device_value( + DeviceValueTAG::TAG_DEVICE_DATA, &pumpOnTemp_, DeviceValueType::UINT8, FL_(pumpOnTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_pumpOnTemp), 0, 60); register_device_value( DeviceValueTAG::TAG_DEVICE_DATA, &selBurnPow_, DeviceValueType::UINT8, FL_(selBurnPow), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_burn_power), 0, 254); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &curBurnPow_, DeviceValueType::UINT8, FL_(curBurnPow), DeviceValueUOM::PERCENT); @@ -1303,6 +1305,7 @@ void Boiler::process_UBAParameters(std::shared_ptr telegram) { has_update(telegram, pumpMode_, 11); has_update(telegram, boil2HystOff_, 12); has_update(telegram, boil2HystOn_, 13); + has_update(telegram, pumpOnTemp_, 23); // https://github.com/emsesp/EMS-ESP32/issues/2088 } /* @@ -2567,6 +2570,17 @@ bool Boiler::set_pump_delay(const char * value, const int8_t id) { return false; } +// set pump logic temperature +bool Boiler::set_pumpOnTemp(const char * value, const int8_t id) { + int v; + if (!Helpers::value2temperature(value, v)) { + return false; + } + + write_command(EMS_TYPE_UBAParameters, 23, v, EMS_TYPE_UBAParameters); + return true; +} + // note some boilers do not have this setting, than it's done by thermostat // on a RC35 it's by EMSESP::send_write_request(0x37, 0x10, 2, &set, 1, 0); (set is 1,2,3) 1=hot, 2=eco, 3=intelligent // on a RC310 it's 1=high, 2=eco diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 70cad801a..e9d56f3b0 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -131,6 +131,7 @@ class Boiler : public EMSdevice { uint8_t pumpMode_; // pump setting proportional/deltaP uint8_t pumpCharacter_; // pump setting proportional/deltaP uint8_t pumpDelay_; + uint8_t pumpOnTemp_; uint8_t burnMinPeriod_; uint8_t burnMinPower_; uint8_t burnMaxPower_; @@ -420,6 +421,7 @@ class Boiler : public EMSdevice { bool set_max_pump(const char * value, const int8_t id); bool set_pumpMode(const char * value, const int8_t id); bool set_pumpCharacter(const char * value, const int8_t id); + bool set_pumpOnTemp(const char * value, const int8_t id); bool set_hyst_on(const char * value, const int8_t id); bool set_hyst_off(const char * value, const int8_t id); inline bool set_hyst2_on(const char * value, const int8_t id) { diff --git a/src/locale_translations.h b/src/locale_translations.h index 08622aba7..5312a1813 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -360,6 +360,7 @@ MAKE_TRANSLATION(emergencyOps, "emergencyops", "emergency operation", "Notbetrie MAKE_TRANSLATION(emergencyTemp, "emergencytemp", "emergency temperature", "Notfalltemperatur", "Noodtemperatuur", "Nöddrift temperatur", "temperatura w trybie awaryjnym", "nødtemperatur", "température d'urgence", "acil durum sıcaklığı", "temperatura di emergenza", "núdzová teplota") MAKE_TRANSLATION(pumpMode, "pumpmode", "boiler pump mode", "Kesselpumpenmodus", "Ketelpomp modus", "", "tryb pracy pompy kotła", "pumpemodus", "", "pompa modu", "modalità pompa caldaia", "režim kotlového čerpadla") // TODO translate MAKE_TRANSLATION(pumpCharacter, "pumpcharacter", "boiler pump characteristic", "Charakteristik der Kesselpumpe", "karakteristiek ketelpomp", "pannpumpsegenskaper", "charakterystyka pompy kotłowej", "kjelepumpekarakteristikk", "caractéristique de la pompe de la chaudière", "gazan nasosy", "caratteristica della pompa della caldaia", "charakteristika kotlového čerpadla") // TODO translate +MAKE_TRANSLATION(pumpOnTemp, "pumpontemp", "pump logic temperature", "Pumpenlogiktemperatur", "", "", "", "", "", "", "", "") // TODO translate MAKE_TRANSLATION(headertemp, "headertemp", "low loss header", "Hydr. Weiche", "open verdeler", "", "sprzęgło hydrauliczne", "", "bouteille de déc. hydr.", "isı bloğu gidiş suyu sıc.", "comp. idr.", "nízkostratová hlavica") // TODO translate MAKE_TRANSLATION(heatblock, "heatblock", "heating block", "Wärmezelle", "Aanvoertemp. warmtecel", "", "blok grzewczy", "", "départ corps de chauffe", "Hid.denge kabı sıcaklığı", "mandata scamb. pr.", "vykurovací blok") // TODO translate