diff --git a/src/core/locale_common.h b/src/core/locale_common.h index e3f4298b7..9a814e3d1 100644 --- a/src/core/locale_common.h +++ b/src/core/locale_common.h @@ -334,6 +334,7 @@ MAKE_ENUM(enum_PID, FL_(fast), FL_(medium), FL_(slow)) MAKE_ENUM(enum_heatup, FL_(slow), FL_(medium), FL_(fast)) MAKE_ENUM(enum_wwMode, FL_(off), FL_(normal), FL_(comfort), FL_(auto), FL_(own_prog)) MAKE_ENUM(enum_wwCircMode, FL_(off), FL_(on), FL_(auto), FL_(own_prog)) +MAKE_ENUM(enum_wwCircMode2, FL_(off), FL_(on), FL_(dhw_prog), FL_(auto)) // BC400/UI800/HMC310, see #3296 MAKE_ENUM(enum_wwMode2, FL_(off), FL_(on), FL_(auto)) MAKE_ENUM(enum_wwMode3, FL_(on), FL_(off), FL_(auto)) MAKE_ENUM(enum_wwMode4, FL_(off), FL_(ecoplus), FL_(eco), FL_(comfort), FL_(auto)) diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h index 1269a0b6e..7472b17e4 100644 --- a/src/core/locale_translations.h +++ b/src/core/locale_translations.h @@ -275,6 +275,7 @@ MAKE_WORD_TRANSLATION(hybrid, "hybrid", "Hybrid", "hybride", "hybrid", "hybrydow MAKE_WORD_TRANSLATION(seltemp, "selTemp", "Solltemperatur", "doeltemperatuur", "Börtemperatur", "temperatura zadana", "innstilt temperatur", "consigne température", "ayarlanmış sıcaklık", "temperatura di consegna", "zadaná teplota", "zvolená teplota") MAKE_WORD_TRANSLATION(roomtemp, "roomTemp", "Raumtemperatur", "kamertemperatuur", "Rumstemperatur", "temperatura w pomieszczeniu", "romstemperatur", "température de la pièce", "oda sıcaklığı", "temperatura camera", "izbová teplota", "teplota místnosti") MAKE_WORD_TRANSLATION(own_prog, "own prog", "Eigenprog.", "eigen prog.", "Egen prog.", "program własny", "eget prog.", "programme propre", "isteğe göre ayarlanmış program", "proprio prog.", "vlastný prog.", "vlastní program") +MAKE_WORD_TRANSLATION(dhw_prog, "According to DHW time program", "Nach Warmw.-Zeitprogramm", "Volgens WW-tijdprogramma", "Enligt VV-tidsprogram", "Wg programu czasowego c.w.u.", "Etter VV-tidsprogram", "Selon programme ECS", "Sıcak su zaman programına göre", "Secondo programma ACS", "Podľa časového programu TÚV", "Podle časového programu TUV") MAKE_WORD_TRANSLATION(std_prog, "std prog", "Standardprog.", "standaard prog.", "Standardprog.", "program standardowy", "standardprog.", "programme standard", "sandart pogram", "programma standard", "Štandar.prog.", "standardní program") MAKE_WORD_TRANSLATION(light, "light", "Leicht", "licht", "Lätt", "lekki", "lett", "léger", "düşük", "luce", "ľahký", "lehký") MAKE_WORD_TRANSLATION(medium, "medium", "Mittel", "middel", "Medel", "średni", "medium", "medium", "orta", "medio", "stredný", "střední") diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 38a94fcf7..17f42486b 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1437,7 +1437,7 @@ void Thermostat::process_RC300WWmode(const std::shared_ptr & tel has_update(telegram, dhw->wwMode_, 2); // 0=off, 1=low, 2=high, 3=auto, 4=own prog } - has_update(telegram, dhw->wwCircMode_, 3); // 0=off, 1=on, 2=auto, 4=own? + has_update(telegram, dhw->wwCircMode_, 3); // 0=off, 1=on, 2=dhw prog (BC400+) / auto, 3=auto (BC400+) / own prog has_update(telegram, dhw->wwChargeDuration_, 10); // value in steps of 15 min has_update(telegram, dhw->wwCharge_, 11); // 0=off, 0xFF=on has_update(telegram, dhw->wwDisinfecting_, 5); // 0=off, 0xFF=on @@ -2864,7 +2864,11 @@ bool Thermostat::set_wwcircmode(const char * value, const int8_t id) { uint8_t set; if (isRC300() || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { - if (!Helpers::value2enum(value, set, FL_(enum_wwCircMode))) { + if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_UI800 || model() == EMSdevice::EMS_DEVICE_FLAG_HMC310) { + if (!Helpers::value2enum(value, set, FL_(enum_wwCircMode2))) { + return false; + } + } else if (!Helpers::value2enum(value, set, FL_(enum_wwCircMode))) { return false; } @@ -5866,7 +5870,11 @@ void Thermostat::register_device_values_dhw(std::shared_ptrwwModeType_, 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)); + if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_UI800 || model() == EMSdevice::EMS_DEVICE_FLAG_HMC310) { + register_device_value(tag, &dhw->wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode2), FL_(wwCircMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwcircmode)); + } else { + register_device_value(tag, &dhw->wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode), FL_(wwCircMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwcircmode)); + } register_device_value(tag, &dhw->wwChargeDuration_, DeviceValueType::UINT8,