use ems/ems+ telegrams for forceheatingoff, add fanspd #2702

This commit is contained in:
MichaelDvP
2025-11-01 19:22:32 +01:00
parent 9bc5bde3c2
commit ea9783dbfc
3 changed files with 12 additions and 9 deletions

View File

@@ -547,6 +547,7 @@ MAKE_TRANSLATION(heatondelay, "heatondelay", "heat-on delay", "Einschaltverzöge
MAKE_TRANSLATION(heatoffdelay, "heatoffdelay", "heat-off delay", "Ausschaltverzögerung Heizen", "", "Frånkopplingsfördröjning värme", "opóźnienie włączania ogrzewania", "", "", "", "", "Oneskorenie vypnutia kúrenia", "zpoždění vypnutí topení") // TODO translate
MAKE_TRANSLATION(hpSetDiffPress, "hpsetdiffpress", "set differential pressure", "Pumpensolldruck", "", "VP Tryckskillnad", "różnica ciśnień", "", "", "", "", "nastaviť diferenčný tlak", "nastavení rozdílového tlaku") // TODO translate
MAKE_TRANSLATION(hpFan, "fan", "fan", "Lüfter", "", "Fläkt", "wentylator", "", "", "", "", "ventilátor", "ventilátor") // TODO translate
MAKE_TRANSLATION(fanSpd, "fanspd", "fan speed", "Lüfter Geschw.", "", "Fläkt", "wentylator", "", "", "", "", "ventilátor", "ventilátor") // TODO translate
MAKE_TRANSLATION(hpShutdown, "shutdown", "shutdown", "Abschalten", "", "Stäng av", "wyłączenie", "", "", "", "", "vypnutie", "vypnutí") // TODO translate
MAKE_TRANSLATION(pc0Flow, "pc0flow", "Flow PC0", "Durchfluss PC0", "", "Flöde värmebärarpump", "", "", "", "", "", "prietok PC0", "průtok PC0") // TODO translate
MAKE_TRANSLATION(pc1Flow, "pc1flow", "Flow PC1", "Durchfluss PC1", "", "Flöde cirkulationspump", "", "", "", "", "", "prietok PC1", "průtok PC1") // TODO translate

View File

@@ -887,6 +887,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
DeviceValueUOM::NONE,
MAKE_CF_CB(set_hpPumpMode));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &fan_, DeviceValueType::UINT8, FL_(hpFan), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_fan), 20, 100);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &fanspd_, DeviceValueType::UINT8, FL_(fanSpd), DeviceValueUOM::PERCENT);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&hpshutdown_,
DeviceValueType::CMD,
@@ -1215,10 +1216,9 @@ void Boiler::check_active() {
if (has_telegram_id(0xE4)) {
uint8_t data[] = {1, 0, 0, 1, 1};
write_command(EMS_TYPE_UBASetPoints2, 0, data, sizeof(data), 0);
} else {
uint8_t data[] = {0, 0, 0, 0};
write_command(EMS_TYPE_UBASetPoints, 0, data, sizeof(data), 0);
}
uint8_t data[] = {0, 0, 0, 0};
write_command(EMS_TYPE_UBASetPoints, 0, data, sizeof(data), 0);
}
// calculate energy for boiler 0x08 from stored modulation an time in units of 0.01 Wh
@@ -1733,6 +1733,7 @@ void Boiler::process_HpPower(std::shared_ptr<const Telegram> telegram) {
has_update(telegram, hpTargetSpd_, 22);
has_update(telegram, receiverValveVr0_, 15);
has_update(telegram, expansionValveVr1_, 16);
has_update(telegram, fanspd_, 19);
// has_update(hpHeatingOn_, hpActivity_ == 1 ? 0xFF : 0);
// has_update(hpCoolingOn_, hpActivity_ == 2 ? 0xFF : 0);
@@ -2476,6 +2477,7 @@ bool Boiler::set_burn_power(const char * value, const int8_t id) {
if (has_telegram_id(0xE4)) {
write_command(EMS_TYPE_UBASetPoints2, 2, v);
write_command(EMS_TYPE_UBASetPoints, 1, v);
} else {
write_command(EMS_TYPE_UBASetPoints, 1, v);
}
@@ -3459,13 +3461,12 @@ bool Boiler::set_forceHeatingOff(const char * value, const int8_t id) {
if (has_telegram_id(0xE4)) {
uint8_t data[] = {1, heatingTemp_, (Helpers::hasValue(burnMaxPower_) ? burnMaxPower_ : (uint8_t)100), 1, 1};
write_command(EMS_TYPE_UBASetPoints2, 0, data, sizeof(data), 0);
} else {
uint8_t data[] = {heatingTemp_,
(Helpers::hasValue(burnMaxPower_) ? burnMaxPower_ : (uint8_t)100),
(Helpers::hasValue(pumpModMax_) ? pumpModMax_ : (uint8_t)100),
0};
write_command(EMS_TYPE_UBASetPoints, 0, data, sizeof(data), 0);
}
uint8_t data[] = {heatingTemp_,
(Helpers::hasValue(burnMaxPower_) ? burnMaxPower_ : (uint8_t)100),
(Helpers::hasValue(pumpModMax_) ? pumpModMax_ : (uint8_t)100),
0};
write_command(EMS_TYPE_UBASetPoints, 0, data, sizeof(data), 0);
}
has_update(forceHeatingOff_, v);
return true;

View File

@@ -245,6 +245,7 @@ class Boiler : public EMSdevice {
uint8_t hpPumpMode_;
uint8_t hpSetDiffPress_;
uint8_t fan_;
uint8_t fanspd_;
uint8_t hpshutdown_;
uint8_t receiverValveVr0_;
uint8_t expansionValveVr1_;