mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-08 16:59:50 +03:00
add boiler disinfect command
This commit is contained in:
@@ -261,7 +261,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
|||||||
register_device_value(
|
register_device_value(
|
||||||
TAG_BOILER_DATA_WW, &wwActivated_, DeviceValueType::BOOL, nullptr, FL_(wwActivated), DeviceValueUOM::BOOLEAN, MAKE_CF_CB(set_warmwater_activated));
|
TAG_BOILER_DATA_WW, &wwActivated_, DeviceValueType::BOOL, nullptr, FL_(wwActivated), DeviceValueUOM::BOOLEAN, MAKE_CF_CB(set_warmwater_activated));
|
||||||
register_device_value(TAG_BOILER_DATA_WW, &wwOneTime_, DeviceValueType::BOOL, nullptr, FL_(wwOneTime), DeviceValueUOM::BOOLEAN, MAKE_CF_CB(set_warmwater_onetime));
|
register_device_value(TAG_BOILER_DATA_WW, &wwOneTime_, DeviceValueType::BOOL, nullptr, FL_(wwOneTime), DeviceValueUOM::BOOLEAN, MAKE_CF_CB(set_warmwater_onetime));
|
||||||
register_device_value(TAG_BOILER_DATA_WW, &wwDisinfecting_, DeviceValueType::BOOL, nullptr, FL_(wwDisinfecting), DeviceValueUOM::BOOLEAN);
|
register_device_value(TAG_BOILER_DATA_WW, &wwDisinfect_, DeviceValueType::BOOL, nullptr, FL_(wwDisinfect), DeviceValueUOM::BOOLEAN, MAKE_CF_CB(set_warmwater_disinfect));
|
||||||
register_device_value(TAG_BOILER_DATA_WW, &wwCharging_, DeviceValueType::BOOL, nullptr, FL_(wwCharging), DeviceValueUOM::BOOLEAN);
|
register_device_value(TAG_BOILER_DATA_WW, &wwCharging_, DeviceValueType::BOOL, nullptr, FL_(wwCharging), DeviceValueUOM::BOOLEAN);
|
||||||
register_device_value(TAG_BOILER_DATA_WW, &wwRecharging_, DeviceValueType::BOOL, nullptr, FL_(wwRecharging), DeviceValueUOM::BOOLEAN);
|
register_device_value(TAG_BOILER_DATA_WW, &wwRecharging_, DeviceValueType::BOOL, nullptr, FL_(wwRecharging), DeviceValueUOM::BOOLEAN);
|
||||||
register_device_value(TAG_BOILER_DATA_WW, &wwTempOK_, DeviceValueType::BOOL, nullptr, FL_(wwTempOK), DeviceValueUOM::BOOLEAN);
|
register_device_value(TAG_BOILER_DATA_WW, &wwTempOK_, DeviceValueType::BOOL, nullptr, FL_(wwTempOK), DeviceValueUOM::BOOLEAN);
|
||||||
@@ -471,7 +471,7 @@ void Boiler::process_UBAMonitorWW(std::shared_ptr<const Telegram> telegram) {
|
|||||||
has_update(telegram->read_value(wWStarts_, 13, 3)); // force to 3 bytes
|
has_update(telegram->read_value(wWStarts_, 13, 3)); // force to 3 bytes
|
||||||
|
|
||||||
has_update(telegram->read_bitvalue(wwOneTime_, 5, 1));
|
has_update(telegram->read_bitvalue(wwOneTime_, 5, 1));
|
||||||
has_update(telegram->read_bitvalue(wwDisinfecting_, 5, 2));
|
has_update(telegram->read_bitvalue(wwDisinfect_, 5, 2));
|
||||||
has_update(telegram->read_bitvalue(wwCharging_, 5, 3));
|
has_update(telegram->read_bitvalue(wwCharging_, 5, 3));
|
||||||
has_update(telegram->read_bitvalue(wwRecharging_, 5, 4));
|
has_update(telegram->read_bitvalue(wwRecharging_, 5, 4));
|
||||||
has_update(telegram->read_bitvalue(wwTempOK_, 5, 5));
|
has_update(telegram->read_bitvalue(wwTempOK_, 5, 5));
|
||||||
@@ -611,7 +611,7 @@ void Boiler::process_UBAMonitorWWPlus(std::shared_ptr<const Telegram> telegram)
|
|||||||
has_update(telegram->read_value(wWStarts_, 17, 3)); // force to 3 bytes
|
has_update(telegram->read_value(wWStarts_, 17, 3)); // force to 3 bytes
|
||||||
|
|
||||||
has_update(telegram->read_bitvalue(wwOneTime_, 12, 2));
|
has_update(telegram->read_bitvalue(wwOneTime_, 12, 2));
|
||||||
has_update(telegram->read_bitvalue(wwDisinfecting_, 12, 3));
|
has_update(telegram->read_bitvalue(wwDisinfect_, 12, 3));
|
||||||
has_update(telegram->read_bitvalue(wwCharging_, 12, 4));
|
has_update(telegram->read_bitvalue(wwCharging_, 12, 4));
|
||||||
has_update(telegram->read_bitvalue(wwRecharging_, 13, 4));
|
has_update(telegram->read_bitvalue(wwRecharging_, 13, 4));
|
||||||
has_update(telegram->read_bitvalue(wwTempOK_, 13, 5));
|
has_update(telegram->read_bitvalue(wwTempOK_, 13, 5));
|
||||||
@@ -1310,6 +1310,24 @@ bool Boiler::set_warmwater_circulation(const char * value, const int8_t id) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// starting warm water disinfect, set to off seems not working
|
||||||
|
bool Boiler::set_warmwater_disinfect(const char * value, const int8_t id) {
|
||||||
|
bool v = false;
|
||||||
|
if (!Helpers::value2bool(value, v)) {
|
||||||
|
LOG_WARNING(F("Set warm water disinfect: Invalid value"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG_INFO(F("Setting warm water disinfect %s"), v ? "on" : "off");
|
||||||
|
if (is_fetch(EMS_TYPE_UBAParameterWWPlus)) {
|
||||||
|
write_command(EMS_TYPE_UBAFlags, 0, (v ? 0x44 : 0x04), 0xE9); // not sure if this is in flags
|
||||||
|
} else {
|
||||||
|
write_command(EMS_TYPE_UBAFlags, 0, (v ? 0x44 : 0x04), 0x34);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// configuration of warm water circulation pump
|
// configuration of warm water circulation pump
|
||||||
bool Boiler::set_warmwater_circulation_pump(const char * value, const int8_t id) {
|
bool Boiler::set_warmwater_circulation_pump(const char * value, const int8_t id) {
|
||||||
bool v = false;
|
bool v = false;
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ class Boiler : public EMSdevice {
|
|||||||
uint16_t wwStorageTemp2_; // warm water storage temp 2
|
uint16_t wwStorageTemp2_; // warm water storage temp 2
|
||||||
uint8_t wwActivated_; // Warm Water activated
|
uint8_t wwActivated_; // Warm Water activated
|
||||||
uint8_t wwOneTime_; // Warm Water one time function on/off
|
uint8_t wwOneTime_; // Warm Water one time function on/off
|
||||||
uint8_t wwDisinfecting_; // Warm Water disinfection on/off
|
uint8_t wwDisinfect_; // Warm Water disinfection on/off
|
||||||
uint8_t wwCharging_; // Warm Water charging on/off
|
uint8_t wwCharging_; // Warm Water charging on/off
|
||||||
uint8_t wwRecharging_; // Warm Water recharge on/off
|
uint8_t wwRecharging_; // Warm Water recharge on/off
|
||||||
uint8_t wwTempOK_; // Warm Water temperature ok on/off
|
uint8_t wwTempOK_; // Warm Water temperature ok on/off
|
||||||
@@ -229,6 +229,7 @@ class Boiler : public EMSdevice {
|
|||||||
bool set_warmwater_activated(const char * value, const int8_t id);
|
bool set_warmwater_activated(const char * value, const int8_t id);
|
||||||
bool set_tapwarmwater_activated(const char * value, const int8_t id);
|
bool set_tapwarmwater_activated(const char * value, const int8_t id);
|
||||||
bool set_warmwater_onetime(const char * value, const int8_t id);
|
bool set_warmwater_onetime(const char * value, const int8_t id);
|
||||||
|
bool set_warmwater_disinfect(const char * value, const int8_t id);
|
||||||
bool set_warmwater_circulation(const char * value, const int8_t id);
|
bool set_warmwater_circulation(const char * value, const int8_t id);
|
||||||
bool set_warmwater_circulation_pump(const char * value, const int8_t id);
|
bool set_warmwater_circulation_pump(const char * value, const int8_t id);
|
||||||
bool set_warmwater_circulation_mode(const char * value, const int8_t id);
|
bool set_warmwater_circulation_mode(const char * value, const int8_t id);
|
||||||
|
|||||||
@@ -499,7 +499,7 @@ MAKE_PSTR_LIST(wwStorageTemp1, F("wwstoragetemp1"), F("storage intern temperatur
|
|||||||
MAKE_PSTR_LIST(wwStorageTemp2, F("wwstoragetemp2"), F("storage extern temperature"))
|
MAKE_PSTR_LIST(wwStorageTemp2, F("wwstoragetemp2"), F("storage extern temperature"))
|
||||||
MAKE_PSTR_LIST(wwActivated, F("wwactivated"), F("activated"))
|
MAKE_PSTR_LIST(wwActivated, F("wwactivated"), F("activated"))
|
||||||
MAKE_PSTR_LIST(wwOneTime, F("wwonetime"), F("one time charging"))
|
MAKE_PSTR_LIST(wwOneTime, F("wwonetime"), F("one time charging"))
|
||||||
MAKE_PSTR_LIST(wwDisinfecting, F("wwdisinfecting"), F("disinfecting"))
|
MAKE_PSTR_LIST(wwDisinfect, F("wwdisinfect"), F("disinfection"))
|
||||||
MAKE_PSTR_LIST(wwCharging, F("wwcharging"), F("charging"))
|
MAKE_PSTR_LIST(wwCharging, F("wwcharging"), F("charging"))
|
||||||
MAKE_PSTR_LIST(wwRecharging, F("wwrecharging"), F("recharging"))
|
MAKE_PSTR_LIST(wwRecharging, F("wwrecharging"), F("recharging"))
|
||||||
MAKE_PSTR_LIST(wwTempOK, F("wwtempok"), F("temperature ok"))
|
MAKE_PSTR_LIST(wwTempOK, F("wwtempok"), F("temperature ok"))
|
||||||
@@ -514,7 +514,7 @@ MAKE_PSTR_LIST(wwHystOn, F("wwhyston"), F("hysteresis on temperature"))
|
|||||||
MAKE_PSTR_LIST(wwHystOff, F("wwhystoff"), F("hysteresis off temperature"))
|
MAKE_PSTR_LIST(wwHystOff, F("wwhystoff"), F("hysteresis off temperature"))
|
||||||
MAKE_PSTR_LIST(wwProgMode, F("wwprogmode"), F("program mode"))
|
MAKE_PSTR_LIST(wwProgMode, F("wwprogmode"), F("program mode"))
|
||||||
MAKE_PSTR_LIST(wwCircProg, F("wwcircprog"), F("circulation program mode"))
|
MAKE_PSTR_LIST(wwCircProg, F("wwcircprog"), F("circulation program mode"))
|
||||||
MAKE_PSTR_LIST(wwDisinfect, F("wwdisinfect"), F("disinfection"))
|
// MAKE_PSTR_LIST(wwDisinfect, F("wwdisinfect"), F("disinfection")) // same as in boiler
|
||||||
MAKE_PSTR_LIST(wwDisinfectDay, F("wwdisinfectday"), F("disinfection day"))
|
MAKE_PSTR_LIST(wwDisinfectDay, F("wwdisinfectday"), F("disinfection day"))
|
||||||
MAKE_PSTR_LIST(wwDisinfectHour, F("wwdisinfecthour"), F("disinfection hour"))
|
MAKE_PSTR_LIST(wwDisinfectHour, F("wwdisinfecthour"), F("disinfection hour"))
|
||||||
MAKE_PSTR_LIST(wwMaxTemp, F("wwmaxtemp"), F("maximum temperature"))
|
MAKE_PSTR_LIST(wwMaxTemp, F("wwmaxtemp"), F("maximum temperature"))
|
||||||
|
|||||||
Reference in New Issue
Block a user