From 28347fd0a4d8dbde7bfb29a51eee12628117f1a8 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 23 Apr 2024 08:50:14 +0200 Subject: [PATCH] Read RC300 dhw2 circuit only if active --- src/devices/thermostat.cpp | 13 +++++++++++-- src/devices/thermostat.h | 1 + src/locale_translations.h | 3 +-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 3fb3f64c9..59a2049d6 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1203,6 +1203,12 @@ void Thermostat::process_RC300WWmode(std::shared_ptr telegram) { // type 02F6 // RC300WWmode(0x2F6), data: 02 FF 04 00 00 00 08 05 00 08 04 00 00 00 00 00 00 00 00 00 01 void Thermostat::process_RC300WW2mode(std::shared_ptr telegram) { + telegram->read_value(wwCircuit2_, 0); + if (wwCircuit2_ == 0) { + toggle_fetch(telegram->type_id, false); + return; + } + toggle_fetch(telegram->type_id, true); has_update(telegram, wwCircPump2_, 1); // FF=off, 0=on ? if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400) { @@ -1227,6 +1233,9 @@ void Thermostat::process_RC300WW2mode(std::shared_ptr telegram) // types 0x31D and 0x31E // RC300WWmode2(0x31D), data: 00 00 09 07 void Thermostat::process_RC300WWmode2(std::shared_ptr telegram) { + if (telegram->type_id == 0x31E && wwCircuit2_ == 0) { + return; + } // 0x31D for WW system 1, 0x31E for WW system 2 // pos 1 = holiday mode // pos 2 = current status of DHW setpoint @@ -3887,7 +3896,7 @@ void Thermostat::register_device_values() { DeviceValueUOM::MINUTES, MAKE_CF_CB(set_wwchargeduration)); register_device_value(DeviceValueTAG::TAG_DHW1, &wwCharge_, DeviceValueType::BOOL, FL_(wwCharge), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwcharge)); - register_device_value(DeviceValueTAG::TAG_DHW1, &wwExtra1_, DeviceValueType::UINT8, FL_(wwExtra1), DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_DHW1, &wwExtra1_, DeviceValueType::UINT8, FL_(wwExtra), DeviceValueUOM::DEGREES); register_device_value(DeviceValueTAG::TAG_DHW1, &wwDisinfecting_, DeviceValueType::BOOL, @@ -3940,7 +3949,7 @@ void Thermostat::register_device_values() { DeviceValueUOM::MINUTES, MAKE_CF_CB(set_wwchargeduration)); register_device_value(DeviceValueTAG::TAG_DHW2, &wwCharge2_, DeviceValueType::BOOL, FL_(wwCharge), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwcharge)); - register_device_value(DeviceValueTAG::TAG_DHW2, &wwExtra2_, DeviceValueType::UINT8, FL_(wwExtra2), DeviceValueUOM::DEGREES); + register_device_value(DeviceValueTAG::TAG_DHW2, &wwExtra2_, DeviceValueType::UINT8, FL_(wwExtra), DeviceValueUOM::DEGREES); register_device_value(DeviceValueTAG::TAG_DHW2, &wwDisinfecting2_, DeviceValueType::BOOL, diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index aa75d7a38..35654ea4c 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -220,6 +220,7 @@ class Thermostat : public EMSdevice { uint8_t humidity_; uint8_t battery_; + uint8_t wwCircuit2_ = EMS_VALUE_UINT8_NOTSET; // not published, initialize here uint8_t wwExtra1_; // wwExtra active for wwSystem 1 uint8_t wwExtra2_; uint8_t wwMode_; diff --git a/src/locale_translations.h b/src/locale_translations.h index 46422f8ba..ccf4b4d46 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -636,8 +636,7 @@ MAKE_TRANSLATION(pvLowerCool, "pvlowercool", "lower cooling with PV", "Kühlabse MAKE_TRANSLATION(wwMode, "mode", "mode", "Modus", "Modus", "Läge", "tryb pracy", "modus", "mode", "mod", "modalità", "režim") MAKE_TRANSLATION(wwSetTempLow, "settemplow", "set low temperature", "untere Solltemperatur", "Onderste streeftemperatuur", "Nedre Börvärde", "zadana temperatura obniżona", "nedre settverdi", "réglage température basse", "hedef düşük sıcaklık", "imposta bassa temperatura", "nastaviť nízku teplotu") MAKE_TRANSLATION(wwWhenModeOff, "whenmodeoff", "when thermostat mode off", "bei Thermostatmodus AUS", "Als Thermostaat op UIT", "när Termostatläge är AV", "gdy wyłączono na termostacie", "når modus er av", "lorsque mode thermostat off", "termostat modu kapalı olduğunda", "quando termostato modalita OFF", "keď je režim termostatu vypnutý") -MAKE_TRANSLATION(wwExtra1, "extra1", "circuit 1 extra", "Kreis 1 Extra", "Circuit 1 extra", "Krets 1 Extra", "obieg dodatkowy 1", "ekstra krets 1", "circuit 1 extra", "devre 1 ekstra", "Circuito 1 extra", "okruh 1 extra") -MAKE_TRANSLATION(wwExtra2, "extra2", "circuit 2 extra", "Kreis 2 Extra", "Circuit 2 extra", "Kets 2 Extra", "obieg dodatkowy 2", "ekstra krets 2", "circuit 2 extra", "devre 2 ekstra", "Circuito 2 extra", "okruh 2 extra") +MAKE_TRANSLATION(wwExtra, "extra", "extra", "Extra", "extra", "Extra", "obieg", "ekstra", "extra", "ekstra", "extra", "extra") MAKE_TRANSLATION(wwCharge, "charge", "charge", "Laden", "Laden", "Ladda", "grzanie", "lade", "charge", "doldurma", "carica", "nabiť") MAKE_TRANSLATION(wwChargeDuration, "chargeduration", "charge duration", "Ladedauer", "Laadtijd", "Laddtid", "czas grzania dodatkowej ciepłej wody", "ladetid", "durée charge", "doldurma süresi", "durata carica", "doba nabíjania") MAKE_TRANSLATION(wwDisinfect, "disinfect", "disinfection", "Desinfektion", "Desinfectie", "Desinfektion", "dezynfekcja termiczna", "desinfeksjon", "désinfection", "dezenfeksiyon", "disinfezione", "dezinfekcia")