From 571f5577d12888fe881803ab74efebabeebc2a24 Mon Sep 17 00:00:00 2001 From: tp1de Date: Fri, 20 May 2022 00:10:58 +0200 Subject: [PATCH] wwchargeoptimization UBAParameterWWPlus --- src/devices/boiler.cpp | 25 +++++++++++++++++++++++++ src/devices/boiler.h | 2 ++ src/locale_EN.h | 3 ++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 0c46a362d..18242d7df 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -409,6 +409,13 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const MAKE_CF_CB(set_ww_flowTempOffset), 0, 40); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + &wwChargeOptimization_, + DeviceValueType::BOOL, + nullptr, + FL_(wwChargeOptimization), + DeviceValueUOM::NONE, + MAKE_CF_CB(set_ww_chargeOptimization)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwMaxPower_, DeviceValueType::UINT, @@ -788,6 +795,7 @@ void Boiler::process_UBAParameterWWPlus(std::shared_ptr telegram has_update(telegram, wwDisinfectionTemp_, 12); // setting here, status in E9 has_update(telegram, wwSelTempSingle_, 16); has_update(telegram, wwSelTempLow_, 18); + has_update(telegram, wwChargeOptimization_, 25); uint8_t wwComfort1 = EMS_VALUE_UINT_NOTSET; telegram->read_value(wwComfort1, 13); @@ -1377,6 +1385,23 @@ bool Boiler::set_ww_hyst_off(const char * value, const int8_t id) { return true; } +// set ww charge optimization +bool Boiler::set_ww_chargeOptimization(const char * value, const int8_t id) { + bool v = false; + if (!Helpers::value2bool(value, v)) { + return false; + } + + if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) { + write_command(EMS_TYPE_UBAParameterWWPlus, 25, v ? 1 : 0, EMS_TYPE_UBAParameterWWPlus); + } + + return true; +} + + + + // set dhw max power bool Boiler::set_ww_maxpower(const char * value, const int8_t id) { int v = 0; diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 5b5ae53b2..adcca7f97 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -61,6 +61,7 @@ class Boiler : public EMSdevice { uint8_t wwComfort1_; // WW comfort mode RC310 uint8_t wwCircPump_; // DHW circulation pump available uint8_t wwChargeType_; // DHW charge type (pump or 3-way-valve) + uint8_t wwChargeOptimization_; // DHW charge optimization uint8_t wwDisinfectionTemp_; // DHW disinfection temperature to prevent infection uint8_t wwCircMode_; // DHW circulation pump mode uint8_t wwCirc_; // Circulation on/off @@ -255,6 +256,7 @@ class Boiler : public EMSdevice { bool set_ww_disinfect_temp(const char * value, const int8_t id); bool set_ww_maxpower(const char * value, const int8_t id); bool set_ww_flowTempOffset(const char * value, const int8_t id); + bool set_ww_chargeOptimization(const char * value, const int8_t id); bool set_flow_temp(const char * value, const int8_t id); bool set_burn_power(const char * value, const int8_t id); bool set_heating_activated(const char * value, const int8_t id); diff --git a/src/locale_EN.h b/src/locale_EN.h index 328b1754a..2b1f0b7dc 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -536,7 +536,7 @@ MAKE_PSTR_LIST(wwSelTempSingle, F("wwseltempsingle"), F("single charge temperatu MAKE_PSTR_LIST(wwSetTemp, F("wwsettemp"), F("set temperature")) MAKE_PSTR_LIST(wwType, F("wwtype"), F("type")) MAKE_PSTR_LIST(wwComfort, F("wwcomfort"), F("comfort")) -MAKE_PSTR_LIST(wwComfort1, F("wwcomfort1"), F("ww comfort1")) +MAKE_PSTR_LIST(wwComfort1, F("wwcomfort1"), F("comfort mode")) MAKE_PSTR_LIST(wwFlowTempOffset, F("wwflowtempoffset"), F("flow temperature offset")) MAKE_PSTR_LIST(wwMaxPower, F("wwmaxpower"), F("max power")) MAKE_PSTR_LIST(wwCircPump, F("wwcircpump"), F("circulation pump available")) @@ -553,6 +553,7 @@ MAKE_PSTR_LIST(wwActivated, F("wwactivated"), F("activated")) MAKE_PSTR_LIST(wwOneTime, F("wwonetime"), F("one time charging")) MAKE_PSTR_LIST(wwDisinfecting, F("wwdisinfecting"), F("disinfecting")) MAKE_PSTR_LIST(wwCharging, F("wwcharging"), F("charging")) +MAKE_PSTR_LIST(wwChargeOptimization, F("wwchargeoptimization"), F("charge optimization")) MAKE_PSTR_LIST(wwRecharging, F("wwrecharging"), F("recharging")) MAKE_PSTR_LIST(wwTempOK, F("wwtempok"), F("temperature ok")) MAKE_PSTR_LIST(wwActive, F("wwactive"), F("active"))