From 766281d8d29fbd8acb3796fe3c5073d5cc9e24af Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 15 Oct 2025 14:32:44 +0200 Subject: [PATCH] add dhw modetype #2659 --- CHANGELOG_LATEST.md | 1 + src/core/locale_common.h | 1 + src/devices/thermostat.cpp | 4 +++- src/devices/thermostat.h | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 6ce0bf3fc..3c9aa8c77 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -27,6 +27,7 @@ For more details go to [docs.emsesp.org](https://docs.emsesp.org/). - Analogsensors frequency input [#2631](https://github.com/emsesp/EMS-ESP32/discussions/2631) - SRC plus thermostats [#2636](https://github.com/emsesp/EMS-ESP32/issues/2636) - Greenstar 2000 [#2645](https://github.com/emsesp/EMS-ESP32/issues/2645) +- RC3xx `dhw modetype` [#2659](https://github.com/emsesp/EMS-ESP32/discussions/2659) ## Fixed diff --git a/src/core/locale_common.h b/src/core/locale_common.h index b7689701a..85536d038 100644 --- a/src/core/locale_common.h +++ b/src/core/locale_common.h @@ -323,6 +323,7 @@ MAKE_ENUM(enum_wwMode3, FL_(on), FL_(off), FL_(auto)) MAKE_ENUM(enum_wwMode4, FL_(off), FL_(ecoplus), FL_(eco), FL_(comfort), FL_(auto)) MAKE_ENUM(enum_wwMode5, FL_(normal), FL_(comfort), FL_(ecoplus)) // Rego3000 MAKE_ENUM(enum_wwMode6, FL_(off), FL_(comfort), FL_(auto)) // CR120 +MAKE_ENUM(enum_wwModeType, FL_(off), FL_(eco), FL_(comfort), FL_(ecoplus)) MAKE_ENUM(enum_heatingtype, FL_(off), FL_(radiator), FL_(convector), FL_(floor)) MAKE_ENUM(enum_heatingtype1, FL_(off), FL_(curve), FL_(radiator), FL_(convector), FL_(floor)) MAKE_ENUM(enum_heatingtype2, FL_(off), FL_(radiator), FL_(convector), FL_(floor), FL_(roomflow), FL_(roomload)) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index f772110a9..6d9e93591 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1326,7 +1326,8 @@ void Thermostat::process_RC300WWmode2(std::shared_ptr telegram) // pos 1 = holiday mode // pos 2 = current status of DHW setpoint // pos 3 = current status of DHW circulation pump - has_update(telegram, dhw->wwExtra_, 0); // 0=no, 1=yes + has_update(telegram, dhw->wwExtra_, 0); // 0=no, 1=yes + has_update(telegram, dhw->wwModeType_, 8); // 0-off, 1-eco, 2-comfort, 3-eco+ } // 0x23A damped outdoor temp @@ -5179,6 +5180,7 @@ void Thermostat::register_device_values_dhw(std::shared_ptrwwMode_, DeviceValueType::ENUM, FL_(enum_wwMode), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode)); } + register_device_value(tag, &dhw->wwModeType_, DeviceValueType::ENUM, FL_(enum_wwModeType), FL_(modetype), DeviceValueUOM::NONE); register_device_value(tag, &dhw->wwSetTemp_, DeviceValueType::UINT8, FL_(wwSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwtemp)); register_device_value(tag, &dhw->wwSetTempLow_, DeviceValueType::UINT8, FL_(wwSetTempLow), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwtemplow)); register_device_value(tag, &dhw->wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode), FL_(wwCircMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwcircmode)); diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 62bbe67e9..93c1f9886 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -183,6 +183,7 @@ class Thermostat : public EMSdevice { ~DhwCircuit() = default; uint8_t wwExtra_; uint8_t wwMode_; + uint8_t wwModeType_; uint8_t wwCircPump_; uint8_t wwCircMode_; uint8_t wwSetTemp_;