From c637dcbbd848ce33072850a5c7b19b3e271f8b75 Mon Sep 17 00:00:00 2001 From: tp1de Date: Fri, 20 May 2022 13:14:09 +0200 Subject: [PATCH 1/2] wwmaxtemp for RC310 --- src/devices/boiler.cpp | 22 ++++++++++++++++++++++ src/devices/boiler.h | 2 ++ 2 files changed, 24 insertions(+) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 18242d7df..b61656b77 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -425,6 +425,15 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const MAKE_CF_CB(set_ww_maxpower), 0, 130); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, + &wwMaxTemp_, + DeviceValueType::UINT, + nullptr, + FL_(wwMaxTemp), + DeviceValueUOM::DEGREES, + MAKE_CF_CB(set_ww_maxtemp), + 0, + 70); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwCircPump_, DeviceValueType::BOOL, @@ -795,6 +804,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, wwMaxTemp_, 20); has_update(telegram, wwChargeOptimization_, 25); uint8_t wwComfort1 = EMS_VALUE_UINT_NOTSET; @@ -1414,6 +1424,18 @@ bool Boiler::set_ww_maxpower(const char * value, const int8_t id) { return true; } +// set dhw maximum temperature +bool Boiler::set_ww_maxtemp(const char * value, const int8_t id) { + int v = 0; + if (!Helpers::value2number(value, v)) { + return false; + } + + write_command(EMS_TYPE_UBAParameterWWPlus, 20, v, EMS_TYPE_UBAParameterWWPlus); + + return true; +} + // set min pump modulation bool Boiler::set_min_pump(const char * value, const int8_t id) { int v = 0; diff --git a/src/devices/boiler.h b/src/devices/boiler.h index adcca7f97..b36ad2694 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -81,6 +81,7 @@ class Boiler : public EMSdevice { uint8_t wwSetPumpPower_; // ww pump speed/power? uint8_t wwFlowTempOffset_; // Boiler offset for ww heating uint8_t wwMaxPower_; // DHW maximum power + uint8_t wwMaxTemp_; // DHW maximum temperature uint32_t wwStarts_; // DHW starts uint32_t wwStarts2_; // DHW control starts uint32_t wwWorkM_; // DHW minutes @@ -255,6 +256,7 @@ class Boiler : public EMSdevice { bool set_ww_temp_single(const char * value, const int8_t id); 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_maxtemp(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); From 5ab22af9c3653df663cfda9f2b58685af731fe78 Mon Sep 17 00:00:00 2001 From: tp1de Date: Fri, 20 May 2022 16:55:16 +0200 Subject: [PATCH 2/2] correct boilers.h --- src/devices/boiler.h | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 0e6bc8aa0..b36ad2694 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -85,39 +85,6 @@ class Boiler : public EMSdevice { uint32_t wwStarts_; // DHW starts uint32_t wwStarts2_; // DHW control starts uint32_t wwWorkM_; // DHW minutes - uint8_t wwSetTemp_; // DHW set temperature - uint8_t wwSelTemp_; // DHW selected temperature - uint8_t wwSelTempLow_; // DHW lower selected temperature - uint8_t wwSelTempOff_; // DHW selected temperature for off position - uint8_t wwSelTempSingle_; // DHW single charge temperature - uint8_t wwType_; // 0-off, 1-flow, 2-flowbuffer, 3-buffer, 4-layered buffer - uint8_t wwComfort_; // WW comfort mode - 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 - uint16_t wwCurTemp_; // DHW current temperature - uint16_t wwCurTemp2_; // DHW current temperature storage - uint8_t wwCurFlow_; // DHW current flow temp in l/min - uint16_t wwStorageTemp1_; // DHW storage temp 1 - uint16_t wwStorageTemp2_; // DHW storage temp 2 - uint8_t wwActivated_; // DHW activated - uint8_t wwOneTime_; // DHW one time function on/off - uint8_t wwDisinfect_; // DHW disinfection on/off - uint8_t wwCharging_; // DHW charging on/off - uint8_t wwRecharging_; // DHW recharge on/off - uint8_t wwTempOK_; // DHW temperature ok on/off - uint8_t wwActive_; // - uint8_t ww3wayValve_; // 3-way valve on WW - uint8_t wwSetPumpPower_; // ww pump speed/power? - uint8_t wwFlowTempOffset_; // Boiler offset for ww heating - uint8_t wwMaxPower_; // DHW maximum power - uint32_t wwStarts_; // DHW starts - uint32_t wwStarts2_; // DHW control starts - uint32_t wwWorkM_; // DHW minutes int8_t wwHystOn_; int8_t wwHystOff_; uint8_t wwTapActivated_; // maintenance-mode to switch DHW off