From 7227937660565b154dbce0fee652d43150e2eafa Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 6 Feb 2023 14:19:58 +0100 Subject: [PATCH 1/2] add boiler pump operating mode #944 --- src/devices/boiler.cpp | 12 ++++++++++++ src/devices/boiler.h | 2 ++ src/locale_common.h | 1 + src/locale_translations.h | 6 ++++++ 4 files changed, 21 insertions(+) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index e940e78a9..8058363ee 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -158,6 +158,8 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const MAKE_CF_CB(set_heating_temp)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &pumpModMax_, DeviceValueType::UINT, FL_(pumpModMax), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_max_pump)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &pumpModMin_, DeviceValueType::UINT, FL_(pumpModMin), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_min_pump)); + register_device_value( + DeviceValueTAG::TAG_DEVICE_DATA, &pumpMode_, DeviceValueType::ENUM, FL_(enum_pumpMode), FL_(pumpMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_pumpMode)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &pumpDelay_, DeviceValueType::UINT, FL_(pumpDelay), DeviceValueUOM::MINUTES, MAKE_CF_CB(set_pump_delay)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &burnMinPeriod_, @@ -942,6 +944,7 @@ void Boiler::process_UBAParameters(std::shared_ptr telegram) { has_update(telegram, pumpDelay_, 8); has_update(telegram, pumpModMax_, 9); has_update(telegram, pumpModMin_, 10); + has_update(telegram, pumpMode_, 11); has_update(telegram, boil2HystOff_, 12); has_update(telegram, boil2HystOn_, 13); } @@ -1917,6 +1920,15 @@ bool Boiler::set_max_pump(const char * value, const int8_t id) { return true; } +bool Boiler::set_pumpMode(const char * value, const int8_t id) { + uint8_t v; + if (Helpers::value2enum(value, v, FL_(enum_pumpMode))) { + write_command(EMS_TYPE_UBAParameters, 11, v, EMS_TYPE_UBAParameters); + return true; + } + return false; +} + // set boiler on hysteresis bool Boiler::set_hyst_on(const char * value, const int8_t id) { int v; diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 284e504bc..74b6abe16 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -121,6 +121,7 @@ class Boiler : public EMSdevice { uint8_t heatingTemp_; // Heating temperature setting on the boiler uint8_t pumpModMax_; // Boiler circuit pump modulation max. power % uint8_t pumpModMin_; // Boiler circuit pump modulation min. power + uint8_t pumpMode_; // pump setting proportional/deltaP uint8_t pumpDelay_; uint8_t burnMinPeriod_; uint8_t burnMinPower_; @@ -331,6 +332,7 @@ class Boiler : public EMSdevice { bool set_max_power(const char * value, const int8_t id); bool set_min_pump(const char * value, const int8_t id); bool set_max_pump(const char * value, const int8_t id); + bool set_pumpMode(const char * value, const int8_t id); bool set_hyst_on(const char * value, const int8_t id); bool set_hyst_off(const char * value, const int8_t id); inline bool set_hyst2_on(const char * value, const int8_t id) { diff --git a/src/locale_common.h b/src/locale_common.h index 1538e0188..3419b9a47 100644 --- a/src/locale_common.h +++ b/src/locale_common.h @@ -257,6 +257,7 @@ MAKE_PSTR_ENUM(enum_comfort2, FL_(eco), FL_(high_comfort)) MAKE_PSTR_ENUM(enum_flow, FL_(off), FL_(flow), FL_(bufferedflow), FL_(buffer), FL_(layeredbuffer)) MAKE_PSTR_ENUM(enum_reset, FL_(dash), FL_(maintenance), FL_(error)) MAKE_PSTR_ENUM(enum_maxHeat, FL_(0kW), FL_(2kW), FL_(3kW), FL_(4kW), FL_(6kW), FL_(9kW)) +MAKE_PSTR_ENUM(enum_pumpMode, FL_(proportional), FL_(deltaP1), FL_(deltaP2), FL_(deltaP3), FL_(deltaP4)) // thermostat lists MAKE_PSTR_ENUM(enum_ibaMainDisplay, FL_(internal_temperature), FL_(internal_setpoint), FL_(external_temperature), FL_(burner_temperature), FL_(ww_temperature), FL_(functioning_mode), FL_(time), FL_(date), FL_(smoke_temperature)) diff --git a/src/locale_translations.h b/src/locale_translations.h index 3176e7454..250583de5 100644 --- a/src/locale_translations.h +++ b/src/locale_translations.h @@ -183,6 +183,11 @@ MAKE_PSTR_LIST(disinfecting, "disinfecting", "Desinfizieren", "Desinfecteren", " MAKE_PSTR_LIST(no_heat, "no heat", "keine Wärme", "Geen warmte", "Ingen värme", "brak ciepła", "ingen varme", "pas de chauffage") MAKE_PSTR_LIST(heatrequest, "heat request", "Wärmeanforderung", "Verwarmignsverzoek", "Värmeförfrågan", "zapotrzebowanie na ciepło", "varmeforespørsel", "demande de chauffage") MAKE_PSTR_LIST(valve, "valve", "Ventil", "Klep", "Ventil", "zawór", "ventil", "valve") +MAKE_PSTR_LIST(proportional, "proportional", "", "", "", "", "", "", "") // TODO translate +MAKE_PSTR_LIST(deltaP1, "deltaP-1", "", "", "", "", "", "", "") // TODO translate +MAKE_PSTR_LIST(deltaP2, "deltaP-2", "", "", "", "", "", "", "") // TODO translate +MAKE_PSTR_LIST(deltaP3, "deltaP-3", "", "", "", "", "", "", "") // TODO translate +MAKE_PSTR_LIST(deltaP4, "deltaP-4", "", "", "", "", "", "", "") // TODO translate // heatpump MAKE_PSTR_LIST(none, "none", "keine", "geen", "ingen", "brak", "ingen", "aucun") @@ -316,6 +321,7 @@ MAKE_PSTR_LIST(maintenanceType, "maintenance", "maintenance scheduled", "Wartung MAKE_PSTR_LIST(maintenanceTime, "maintenancetime", "time to next maintenance", "Wartung in", "Onderhoud in", "Tid till nästa underhall", "czas do kolejnego przeglądu", "vedlikeholdstid", "durée avant la prochaine maintenance") MAKE_PSTR_LIST(emergencyOps, "emergencyops", "emergency operation", "Notoperation", "Noodoperatie", "Nöddrift", "praca w trybie awaryjnym", "nøddrift", "opération d'urgence") MAKE_PSTR_LIST(emergencyTemp, "emergencytemp", "emergency temperature", "Nottemperatur", "Noodtemperatuur", "Nöddrift temperatur", "temperatura w trybie awaryjnym", "nødtemperatur", "température d'urgence") +MAKE_PSTR_LIST(pumpMode, "pumpmode", "boiler pump mode", "Kesselpumpen Modus", "", "", "", "", "") // TODO translate // heatpump/compress specific MAKE_PSTR_LIST(upTimeControl, "uptimecontrol", "total operating time heat", "Betriebszeit Heizen gesamt", "Totale bedrijfstijd", "Total tid uppvärmning", "łączny czas generowania ciepła", "", "durée totale de fonctionnement chauffage") // TODO translate From d68260411d396fa52bfa275e5f158de0f325b7a0 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 6 Feb 2023 14:22:41 +0100 Subject: [PATCH 2/2] version to dev.18, changelog --- CHANGELOG_LATEST.md | 1 + src/version.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 020881faa..d3408b279 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -34,6 +34,7 @@ - Add heatpump silent mode and other entities [#896](https://github.com/emsesp/EMS-ESP32/issues/896) - Allow reboot to other partition (factory or asymetric OTA) - Blacklist entities to remove from memory [#891](https://github.com/emsesp/EMS-ESP32/issues/891) +- Add boiler pump operating mode [#944](https://github.com/emsesp/EMS-ESP32/issues/944) ## Fixed diff --git a/src/version.h b/src/version.h index 31dcccb02..727fa59c1 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.5.0-dev.17" +#define EMSESP_APP_VERSION "3.5.0-dev.18"