add some boiler and thermostat parameters

This commit is contained in:
MichaelDvP
2021-08-23 16:14:06 +02:00
parent 4d1ba9bede
commit 1311cad913
5 changed files with 243 additions and 8 deletions

View File

@@ -193,6 +193,9 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
// warm water - boiler_data_ww topic
register_device_value(TAG_BOILER_DATA_WW, &wwSelTemp_, DeviceValueType::UINT, nullptr, FL_(wwSelTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_warmwater_temp));
register_device_value(TAG_BOILER_DATA_WW, &wwSetTemp_, DeviceValueType::UINT, nullptr, FL_(wwSetTemp), DeviceValueUOM::DEGREES);
register_device_value(TAG_BOILER_DATA_WW, &wwSelTempLow_, DeviceValueType::UINT, nullptr, FL_(wwSelTempLow), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_warmwater_temp_low));
register_device_value(TAG_BOILER_DATA_WW, &wwSelTempOff_, DeviceValueType::UINT, nullptr, FL_(wwSelTempOff), DeviceValueUOM::DEGREES);
register_device_value(TAG_BOILER_DATA_WW, &wwSelTempSingle_, DeviceValueType::UINT, nullptr, FL_(wwSelTempSingle), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_warmwater_temp_single));
register_device_value(TAG_BOILER_DATA_WW, &wwType_, DeviceValueType::ENUM, FL_(enum_flow), FL_(wwType), DeviceValueUOM::NONE);
register_device_value(
TAG_BOILER_DATA_WW, &wwComfort_, DeviceValueType::ENUM, FL_(enum_comfort), FL_(wwComfort), DeviceValueUOM::LIST, MAKE_CF_CB(set_warmwater_mode));
@@ -563,6 +566,9 @@ void Boiler::process_UBAParameterWWPlus(std::shared_ptr<const Telegram> telegram
// has_update(telegram->read_value(wWSelTemp_, 6)); // settings, status in E9
has_update(telegram->read_value(wwHystOn_, 7));
has_update(telegram->read_value(wwHystOff_, 8));
has_update(telegram->read_value(wwSelTempOff_, 0)); // confusing description in #96, hopefully this is right
has_update(telegram->read_value(wwSelTempSingle_, 16));
has_update(telegram->read_value(wwSelTempLow_, 18));
}
// 0xE9 - WW monitor ems+
@@ -778,6 +784,32 @@ bool Boiler::set_warmwater_temp(const char * value, const int8_t id) {
return true;
}
// Set the lower warm water temperature 0xEA
bool Boiler::set_warmwater_temp_low(const char * value, const int8_t id) {
int v = 0;
if (!Helpers::value2number(value, v)) {
LOG_WARNING(F("Set boiler lower warm water temperature: Invalid value"));
return false;
}
LOG_INFO(F("Setting boiler lower warm water temperature to %d C"), v);
write_command(EMS_TYPE_UBAParameterWWPlus, 18, v, EMS_TYPE_UBAParameterWWPlus);
return true;
}
// Set the warm water single charge temperature 0xEA
bool Boiler::set_warmwater_temp_single(const char * value, const int8_t id) {
int v = 0;
if (!Helpers::value2number(value, v)) {
LOG_WARNING(F("Set single charge warm water temperature: Invalid value"));
return false;
}
LOG_INFO(F("Setting single charge warm water temperature to %d C"), v);
write_command(EMS_TYPE_UBAParameterWWPlus, 16, v, EMS_TYPE_UBAParameterWWPlus);
return true;
}
// Set the warm water disinfection temperature
bool Boiler::set_disinfect_temp(const char * value, const int8_t id) {
int v = 0;
@@ -795,6 +827,7 @@ bool Boiler::set_disinfect_temp(const char * value, const int8_t id) {
return true;
}
// flow temp
bool Boiler::set_flow_temp(const char * value, const int8_t id) {
int v = 0;