mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-08 08:49:52 +03:00
add some boiler and thermostat parameters
This commit is contained in:
@@ -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
|
// 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, &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, &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, &wwType_, DeviceValueType::ENUM, FL_(enum_flow), FL_(wwType), DeviceValueUOM::NONE);
|
||||||
register_device_value(
|
register_device_value(
|
||||||
TAG_BOILER_DATA_WW, &wwComfort_, DeviceValueType::ENUM, FL_(enum_comfort), FL_(wwComfort), DeviceValueUOM::LIST, MAKE_CF_CB(set_warmwater_mode));
|
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(wWSelTemp_, 6)); // settings, status in E9
|
||||||
has_update(telegram->read_value(wwHystOn_, 7));
|
has_update(telegram->read_value(wwHystOn_, 7));
|
||||||
has_update(telegram->read_value(wwHystOff_, 8));
|
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+
|
// 0xE9 - WW monitor ems+
|
||||||
@@ -778,6 +784,32 @@ bool Boiler::set_warmwater_temp(const char * value, const int8_t id) {
|
|||||||
return true;
|
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
|
// Set the warm water disinfection temperature
|
||||||
bool Boiler::set_disinfect_temp(const char * value, const int8_t id) {
|
bool Boiler::set_disinfect_temp(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v = 0;
|
||||||
@@ -795,6 +827,7 @@ bool Boiler::set_disinfect_temp(const char * value, const int8_t id) {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// flow temp
|
// flow temp
|
||||||
bool Boiler::set_flow_temp(const char * value, const int8_t id) {
|
bool Boiler::set_flow_temp(const char * value, const int8_t id) {
|
||||||
int v = 0;
|
int v = 0;
|
||||||
|
|||||||
@@ -57,6 +57,9 @@ class Boiler : public EMSdevice {
|
|||||||
// ww
|
// ww
|
||||||
uint8_t wwSetTemp_; // Warm Water set temperature
|
uint8_t wwSetTemp_; // Warm Water set temperature
|
||||||
uint8_t wwSelTemp_; // Warm Water selected temperature
|
uint8_t wwSelTemp_; // Warm Water selected temperature
|
||||||
|
uint8_t wwSelTempLow_; // Warm Water lower selected temperature
|
||||||
|
uint8_t wwSelTempOff_; // Warm Water selected temperature for off position
|
||||||
|
uint8_t wwSelTempSingle_; // Warm Water single charge temperature
|
||||||
uint8_t wwType_; // 0-off, 1-flow, 2-flowbuffer, 3-buffer, 4-layered buffer
|
uint8_t wwType_; // 0-off, 1-flow, 2-flowbuffer, 3-buffer, 4-layered buffer
|
||||||
uint8_t wwComfort_; // WW comfort mode
|
uint8_t wwComfort_; // WW comfort mode
|
||||||
uint8_t wwCircPump_; // Warm Water circulation pump available
|
uint8_t wwCircPump_; // Warm Water circulation pump available
|
||||||
@@ -205,6 +208,8 @@ class Boiler : public EMSdevice {
|
|||||||
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);
|
||||||
bool set_warmwater_temp(const char * value, const int8_t id);
|
bool set_warmwater_temp(const char * value, const int8_t id);
|
||||||
|
bool set_warmwater_temp_low(const char * value, const int8_t id);
|
||||||
|
bool set_warmwater_temp_single(const char * value, const int8_t id);
|
||||||
bool set_disinfect_temp(const char * value, const int8_t id);
|
bool set_disinfect_temp(const char * value, const int8_t id);
|
||||||
bool set_warmwater_maxpower(const char * value, const int8_t id);
|
bool set_warmwater_maxpower(const char * value, const int8_t id);
|
||||||
bool set_wWFlowTempOffset(const char * value, const int8_t id);
|
bool set_wWFlowTempOffset(const char * value, const int8_t id);
|
||||||
|
|||||||
@@ -762,12 +762,20 @@ void Thermostat::process_IBASettings(std::shared_ptr<const Telegram> telegram) {
|
|||||||
has_update(telegram->read_value(ibaBuildingType_, 6)); // building type: 0 = light, 1 = medium, 2 = heavy
|
has_update(telegram->read_value(ibaBuildingType_, 6)); // building type: 0 = light, 1 = medium, 2 = heavy
|
||||||
has_update(telegram->read_value(ibaMinExtTemperature_, 5)); // min ext temp for heating curve, in deg., 0xF6=-10, 0x0 = 0, 0xFF=-1
|
has_update(telegram->read_value(ibaMinExtTemperature_, 5)); // min ext temp for heating curve, in deg., 0xF6=-10, 0x0 = 0, 0xFF=-1
|
||||||
has_update(telegram->read_value(ibaClockOffset_, 12)); // offset (in sec) to clock, 0xff = -1 s, 0x02 = 2 s
|
has_update(telegram->read_value(ibaClockOffset_, 12)); // offset (in sec) to clock, 0xff = -1 s, 0x02 = 2 s
|
||||||
|
has_update(telegram->read_value(ibaDamping_, 21)); // damping 0-off, 0xff-on
|
||||||
}
|
}
|
||||||
|
|
||||||
// Settings WW 0x37 - RC35
|
// Settings WW 0x37 - RC35
|
||||||
void Thermostat::process_RC35wwSettings(std::shared_ptr<const Telegram> telegram) {
|
void Thermostat::process_RC35wwSettings(std::shared_ptr<const Telegram> telegram) {
|
||||||
has_update(telegram->read_value(wwMode_, 2)); // 0 off, 1-on, 2-auto
|
has_update(telegram->read_value(wwProgMode_, 0)); // 0-like hc, 0xFF own prog
|
||||||
has_update(telegram->read_value(wwCircMode_, 3)); // 0 off, 1-on, 2-auto
|
has_update(telegram->read_value(wwCircProg_, 1)); // 0-like hc, 0xFF own prog
|
||||||
|
has_update(telegram->read_value(wwMode_, 2)); // 0 off, 1-on, 2-auto
|
||||||
|
has_update(telegram->read_value(wwCircMode_, 3)); // 0 off, 1-on, 2-auto
|
||||||
|
has_update(telegram->read_value(wwDisinfect_, 4)); // 0-off, 0xFF on
|
||||||
|
has_update(telegram->read_value(wwDisinfectDay_, 5)); // 0-6 Day of week, 7 every day
|
||||||
|
has_update(telegram->read_value(wwDisinfectHour_, 6));
|
||||||
|
has_update(telegram->read_value(wwMaxTemp_, 8)); // Limiter 60 degrees
|
||||||
|
has_update(telegram->read_value(wwOneTimeKey_, 9)); // 0-off, 0xFF on
|
||||||
}
|
}
|
||||||
|
|
||||||
// type 0x6F - FR10/FR50/FR100/FR110/FR120 Junkers
|
// type 0x6F - FR10/FR50/FR100/FR110/FR120 Junkers
|
||||||
@@ -902,8 +910,9 @@ void Thermostat::process_RC300WWmode(std::shared_ptr<const Telegram> telegram) {
|
|||||||
// circulation pump see: https://github.com/Th3M3/buderus_ems-wiki/blob/master/Einstellungen%20der%20Bedieneinheit%20RC310.md
|
// circulation pump see: https://github.com/Th3M3/buderus_ems-wiki/blob/master/Einstellungen%20der%20Bedieneinheit%20RC310.md
|
||||||
has_update(telegram->read_value(wwCircPump_, 1)); // FF=off, 0=on ?
|
has_update(telegram->read_value(wwCircPump_, 1)); // FF=off, 0=on ?
|
||||||
|
|
||||||
has_update(telegram->read_value(wwMode_, 2)); // 0=off, 1=low, 2=high, 3=auto, 4=own prog
|
has_update(telegram->read_value(wwMode_, 2)); // 0=off, 1=low, 2=high, 3=auto, 4=own prog
|
||||||
has_update(telegram->read_value(wwCircMode_, 3)); // 0=off, 1=on, 2=auto, 4=own?
|
has_update(telegram->read_value(wwCircMode_, 3)); // 0=off, 1=on, 2=auto, 4=own?
|
||||||
|
has_update(telegram->read_value(wwChargeDuration_, 10)); // value in steps of 15 min
|
||||||
}
|
}
|
||||||
|
|
||||||
// types 0x31D and 0x31E
|
// types 0x31D and 0x31E
|
||||||
@@ -1223,6 +1232,18 @@ bool Thermostat::set_building(const char * value, const int8_t id) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0xA5 - Set the building settings
|
||||||
|
bool Thermostat::set_damping(const char * value, const int8_t id) {
|
||||||
|
bool dmp;
|
||||||
|
if (Helpers::value2bool(value, dmp)) {
|
||||||
|
LOG_INFO(F("Setting damping %s"), dmp ? "on" : "off");
|
||||||
|
write_command(EMS_TYPE_IBASettings, 21, dmp ? 0xFF : 0, EMS_TYPE_IBASettings);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
LOG_WARNING(F("Set damping: Invalid value"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// 0xA5 Set the language settings
|
// 0xA5 Set the language settings
|
||||||
bool Thermostat::set_language(const char * value, const int8_t id) {
|
bool Thermostat::set_language(const char * value, const int8_t id) {
|
||||||
uint8_t lg = 0;
|
uint8_t lg = 0;
|
||||||
@@ -1303,6 +1324,38 @@ bool Thermostat::set_wwtemplow(const char * value, const int8_t id) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set ww charge duration in steps of 15 min, ems+
|
||||||
|
bool Thermostat::set_wwchargeduration(const char * value, const int8_t id) {
|
||||||
|
uint8_t t = 0xFF;
|
||||||
|
if (!Helpers::value2enum(value, t, FL_(enum_wwChargeDuration))) {
|
||||||
|
LOG_WARNING(F("Set warm water charge duration: Invalid value"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
LOG_INFO(F("Setting warm water charge duration to %d min"), t * 15);
|
||||||
|
write_command(0x2F5, 10, t, 0x02F5);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// set ww prio
|
||||||
|
bool Thermostat::set_wwprio(const char * value, const int8_t id) {
|
||||||
|
uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id;
|
||||||
|
std::shared_ptr<Thermostat::HeatingCircuit> hc = heating_circuit(hc_num);
|
||||||
|
if (hc == nullptr) {
|
||||||
|
LOG_WARNING(F("Set wwprio: Heating Circuit %d not found or activated for device ID 0x%02X"), hc_num, device_id());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
bool b;
|
||||||
|
if (!Helpers::value2bool(value, b)) {
|
||||||
|
LOG_WARNING(F("Set wwprio: Invalid value"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG_INFO(F("Setting wwprio: %s"), b ? "on" : "off");
|
||||||
|
write_command(set_typeids[hc->hc_num() - 1], 21, b ? 0xFF : 0x00, set_typeids[hc->hc_num() - 1]);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// Set ww onetime RC300, ems+
|
// Set ww onetime RC300, ems+
|
||||||
bool Thermostat::set_wwonetime(const char * value, const int8_t id) {
|
bool Thermostat::set_wwonetime(const char * value, const int8_t id) {
|
||||||
bool b = false;
|
bool b = false;
|
||||||
@@ -1338,6 +1391,90 @@ bool Thermostat::set_wwcircmode(const char * value, const int8_t id) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Thermostat::set_wwDisinfect(const char * value, const int8_t id) {
|
||||||
|
bool b = false;
|
||||||
|
if (!Helpers::value2bool(value, b)) {
|
||||||
|
LOG_WARNING(F("Set warm water disinfect: Invalid value"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
LOG_INFO(F("Setting warm water disinfect to %s"), b ? F_(on) : F_(off));
|
||||||
|
write_command(0x37, 4, b ? 0xFF : 0x00, 0x37);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool Thermostat::set_wwDisinfectDay(const char * value, const int8_t id) {
|
||||||
|
uint8_t set = 0xFF;
|
||||||
|
if (!Helpers::value2enum(value, set, FL_(enum_wwDisinfectDay))) {
|
||||||
|
LOG_WARNING(F("Set warm water disinfection day: Invalid day"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
LOG_INFO(F("Setting warm water disinfection day to %s"), value);
|
||||||
|
write_command(0x37, 5, set, 0x37);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Thermostat::set_wwDisinfectHour(const char * value, const int8_t id) {
|
||||||
|
int set;
|
||||||
|
if (!Helpers::value2number(value, set)) {
|
||||||
|
LOG_WARNING(F("Set warm water disinfection hour: Invalid"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (set < 0 || set > 23) {
|
||||||
|
LOG_WARNING(F("Set warm water disinfection hour: Invalid"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
LOG_INFO(F("Setting warm water disinfection hour to %s"), value);
|
||||||
|
write_command(0x37, 6, set, 0x37);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Thermostat::set_wwMaxTemp(const char * value, const int8_t id) {
|
||||||
|
int t = 0;
|
||||||
|
if (!Helpers::value2number(value, t)) {
|
||||||
|
LOG_WARNING(F("Set warm water max temperature: Invalid value"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (t < 0 || t > 90) {
|
||||||
|
LOG_WARNING(F("Set warm water max temperature: Invalid value"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
LOG_INFO(F("Setting warm water max temperature to %d C"), t);
|
||||||
|
write_command(0x37, 8, t, 0x37);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Thermostat::set_wwOneTimeKey(const char * value, const int8_t id) {
|
||||||
|
bool b = false;
|
||||||
|
if (!Helpers::value2bool(value, b)) {
|
||||||
|
LOG_WARNING(F("Set warm water loading one time key: Invalid value"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
LOG_INFO(F("Setting warm water loading one time key to %s"), value);
|
||||||
|
write_command(0x37, 9, b ? 0xFF : 0x00, 0x37);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Thermostat::set_wwProgMode(const char * value, const int8_t id) {
|
||||||
|
uint8_t set = 0xFF;
|
||||||
|
if (!Helpers::value2enum(value, set, FL_(enum_wwProgMode))) {
|
||||||
|
LOG_WARNING(F("Set warm water program mode: Invalid mode"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
LOG_INFO(F("Setting warm water program mode to %s"), value);
|
||||||
|
write_command(0x37, 0, set ? 0xFF : 0x00, 0x37);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Thermostat::set_wwCircProg(const char * value, const int8_t id) {
|
||||||
|
uint8_t set = 0xFF;
|
||||||
|
if (!Helpers::value2enum(value, set, FL_(enum_wwProgMode))) {
|
||||||
|
LOG_WARNING(F("Set warm water circulation program mode: Invalid mode"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
LOG_INFO(F("Setting warm water circulation program mode to %s"), value);
|
||||||
|
write_command(0x37, 1, set ? 0xFF : 0x00, 0x37);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// set the holiday as string dd.mm.yyyy-dd.mm.yyyy
|
// set the holiday as string dd.mm.yyyy-dd.mm.yyyy
|
||||||
bool Thermostat::set_holiday(const char * value, const int8_t id) {
|
bool Thermostat::set_holiday(const char * value, const int8_t id) {
|
||||||
uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id;
|
uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id;
|
||||||
@@ -2188,6 +2325,13 @@ void Thermostat::register_device_values() {
|
|||||||
TAG_THERMOSTAT_DATA, &wwSetTempLow_, DeviceValueType::UINT, nullptr, FL_(wwSetTempLow), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwtemplow));
|
TAG_THERMOSTAT_DATA, &wwSetTempLow_, DeviceValueType::UINT, nullptr, FL_(wwSetTempLow), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwtemplow));
|
||||||
register_device_value(
|
register_device_value(
|
||||||
TAG_THERMOSTAT_DATA, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode), FL_(wwCircMode), DeviceValueUOM::LIST, MAKE_CF_CB(set_wwcircmode));
|
TAG_THERMOSTAT_DATA, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode), FL_(wwCircMode), DeviceValueUOM::LIST, MAKE_CF_CB(set_wwcircmode));
|
||||||
|
register_device_value(TAG_THERMOSTAT_DATA,
|
||||||
|
&wwChargeDuration_,
|
||||||
|
DeviceValueType::ENUM,
|
||||||
|
FL_(enum_wwChargeDuration),
|
||||||
|
FL_(wwChargeDuration),
|
||||||
|
DeviceValueUOM::LIST,
|
||||||
|
MAKE_CF_CB(set_wwchargeduration));
|
||||||
register_device_value(TAG_THERMOSTAT_DATA, &wwExtra1_, DeviceValueType::UINT, nullptr, FL_(wwExtra1), DeviceValueUOM::DEGREES);
|
register_device_value(TAG_THERMOSTAT_DATA, &wwExtra1_, DeviceValueType::UINT, nullptr, FL_(wwExtra1), DeviceValueUOM::DEGREES);
|
||||||
register_device_value(TAG_THERMOSTAT_DATA, &wwExtra2_, DeviceValueType::UINT, nullptr, FL_(wwExtra2), DeviceValueUOM::DEGREES);
|
register_device_value(TAG_THERMOSTAT_DATA, &wwExtra2_, DeviceValueType::UINT, nullptr, FL_(wwExtra2), DeviceValueUOM::DEGREES);
|
||||||
break;
|
break;
|
||||||
@@ -2260,6 +2404,19 @@ void Thermostat::register_device_values() {
|
|||||||
register_device_value(TAG_THERMOSTAT_DATA, &wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode2), FL_(wwMode), DeviceValueUOM::LIST, MAKE_CF_CB(set_wwmode));
|
register_device_value(TAG_THERMOSTAT_DATA, &wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode2), FL_(wwMode), DeviceValueUOM::LIST, MAKE_CF_CB(set_wwmode));
|
||||||
register_device_value(
|
register_device_value(
|
||||||
TAG_THERMOSTAT_DATA, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode2), FL_(wwCircMode), DeviceValueUOM::LIST, MAKE_CF_CB(set_wwcircmode));
|
TAG_THERMOSTAT_DATA, &wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode2), FL_(wwCircMode), DeviceValueUOM::LIST, MAKE_CF_CB(set_wwcircmode));
|
||||||
|
register_device_value(
|
||||||
|
TAG_THERMOSTAT_DATA, &wwProgMode_, DeviceValueType::ENUM, FL_(enum_wwProgMode), FL_(wwProgMode), DeviceValueUOM::LIST, MAKE_CF_CB(set_wwProgMode));
|
||||||
|
register_device_value(
|
||||||
|
TAG_THERMOSTAT_DATA, &wwCircProg_, DeviceValueType::ENUM, FL_(enum_wwProgMode), FL_(wwCircProg), DeviceValueUOM::LIST, MAKE_CF_CB(set_wwCircProg));
|
||||||
|
register_device_value(
|
||||||
|
TAG_THERMOSTAT_DATA, &wwDisinfect_, DeviceValueType::BOOL, nullptr, FL_(wwDisinfect), DeviceValueUOM::BOOLEAN, MAKE_CF_CB(set_wwDisinfect));
|
||||||
|
register_device_value(
|
||||||
|
TAG_THERMOSTAT_DATA, &wwDisinfectDay_, DeviceValueType::ENUM, FL_(enum_wwDisinfectDay), FL_(wwDisinfectDay), DeviceValueUOM::LIST, MAKE_CF_CB(set_wwDisinfectDay));
|
||||||
|
register_device_value(
|
||||||
|
TAG_THERMOSTAT_DATA, &wwDisinfectHour_, DeviceValueType::UINT, nullptr, FL_(wwDisinfectHour), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwDisinfectHour), 0, 23);
|
||||||
|
register_device_value(TAG_THERMOSTAT_DATA, &wwMaxTemp_, DeviceValueType::UINT, nullptr, FL_(wwMaxTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwMaxTemp));
|
||||||
|
register_device_value(
|
||||||
|
TAG_THERMOSTAT_DATA, &wwOneTimeKey_, DeviceValueType::BOOL, nullptr, FL_(wwOneTimeKey), DeviceValueUOM::BOOLEAN, MAKE_CF_CB(set_wwOneTimeKey));
|
||||||
break;
|
break;
|
||||||
case EMS_DEVICE_FLAG_JUNKERS:
|
case EMS_DEVICE_FLAG_JUNKERS:
|
||||||
register_device_value(TAG_THERMOSTAT_DATA, &dateTime_, DeviceValueType::TEXT, nullptr, FL_(dateTime), DeviceValueUOM::NONE, MAKE_CF_CB(set_datetime));
|
register_device_value(TAG_THERMOSTAT_DATA, &dateTime_, DeviceValueType::TEXT, nullptr, FL_(dateTime), DeviceValueUOM::NONE, MAKE_CF_CB(set_datetime));
|
||||||
@@ -2405,6 +2562,7 @@ void Thermostat::register_device_values_hc(std::shared_ptr<Thermostat::HeatingCi
|
|||||||
register_device_value(tag, &hc->noreducetemp, DeviceValueType::INT, nullptr, FL_(noreducetemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_noreducetemp));
|
register_device_value(tag, &hc->noreducetemp, DeviceValueType::INT, nullptr, FL_(noreducetemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_noreducetemp));
|
||||||
register_device_value(tag, &hc->remotetemp, DeviceValueType::SHORT, FL_(div10), FL_(remotetemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_remotetemp));
|
register_device_value(tag, &hc->remotetemp, DeviceValueType::SHORT, FL_(div10), FL_(remotetemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_remotetemp));
|
||||||
register_device_value(tag, &dummy_, DeviceValueType::CMD, nullptr, FL_(switchtime), DeviceValueUOM::NONE, MAKE_CF_CB(set_switchtime));
|
register_device_value(tag, &dummy_, DeviceValueType::CMD, nullptr, FL_(switchtime), DeviceValueUOM::NONE, MAKE_CF_CB(set_switchtime));
|
||||||
|
register_device_value(tag, &hc->wwprio, DeviceValueType::BOOL, nullptr, FL_(wwprio), DeviceValueUOM::BOOLEAN, MAKE_CF_CB(set_wwprio));
|
||||||
break;
|
break;
|
||||||
case EMS_DEVICE_FLAG_JUNKERS:
|
case EMS_DEVICE_FLAG_JUNKERS:
|
||||||
register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode4), FL_(mode), DeviceValueUOM::LIST, MAKE_CF_CB(set_mode));
|
register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode4), FL_(mode), DeviceValueUOM::LIST, MAKE_CF_CB(set_mode));
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ class Thermostat : public EMSdevice {
|
|||||||
uint8_t pause;
|
uint8_t pause;
|
||||||
uint8_t party;
|
uint8_t party;
|
||||||
int8_t noreducetemp; // signed -20°C to +10°C
|
int8_t noreducetemp; // signed -20°C to +10°C
|
||||||
|
uint8_t wwprio;
|
||||||
|
|
||||||
uint8_t hc_num() const {
|
uint8_t hc_num() const {
|
||||||
return hc_num_;
|
return hc_num_;
|
||||||
@@ -155,6 +156,7 @@ class Thermostat : public EMSdevice {
|
|||||||
int8_t ibaMinExtTemperature_; // min ext temp for heating curve, in deg., 0xF6=-10, 0x0 = 0, 0xFF=-1
|
int8_t ibaMinExtTemperature_; // min ext temp for heating curve, in deg., 0xF6=-10, 0x0 = 0, 0xFF=-1
|
||||||
uint8_t ibaBuildingType_; // building type: 0 = light, 1 = medium, 2 = heavy
|
uint8_t ibaBuildingType_; // building type: 0 = light, 1 = medium, 2 = heavy
|
||||||
uint8_t ibaClockOffset_; // offset (in sec) to clock, 0xff = -1 s, 0x02 = 2 s
|
uint8_t ibaClockOffset_; // offset (in sec) to clock, 0xff = -1 s, 0x02 = 2 s
|
||||||
|
uint8_t ibaDamping_; // damping 0-off, 0xff-on
|
||||||
|
|
||||||
int8_t dampedoutdoortemp_;
|
int8_t dampedoutdoortemp_;
|
||||||
uint16_t tempsensor1_;
|
uint16_t tempsensor1_;
|
||||||
@@ -170,6 +172,14 @@ class Thermostat : public EMSdevice {
|
|||||||
uint8_t wwCircMode_;
|
uint8_t wwCircMode_;
|
||||||
uint8_t wwSetTemp_;
|
uint8_t wwSetTemp_;
|
||||||
uint8_t wwSetTempLow_;
|
uint8_t wwSetTempLow_;
|
||||||
|
uint8_t wwChargeDuration_;
|
||||||
|
uint8_t wwDisinfect_;
|
||||||
|
uint8_t wwDisinfectDay_;
|
||||||
|
uint8_t wwDisinfectHour_;
|
||||||
|
uint8_t wwMaxTemp_;
|
||||||
|
uint8_t wwOneTimeKey_;
|
||||||
|
uint8_t wwProgMode_;
|
||||||
|
uint8_t wwCircProg_;
|
||||||
|
|
||||||
std::vector<std::shared_ptr<HeatingCircuit>> heating_circuits_; // each thermostat can have multiple heating circuits
|
std::vector<std::shared_ptr<HeatingCircuit>> heating_circuits_; // each thermostat can have multiple heating circuits
|
||||||
|
|
||||||
@@ -331,6 +341,7 @@ class Thermostat : public EMSdevice {
|
|||||||
bool set_switchtime(const char * value, const int8_t id);
|
bool set_switchtime(const char * value, const int8_t id);
|
||||||
bool set_program(const char * value, const int8_t id);
|
bool set_program(const char * value, const int8_t id);
|
||||||
bool set_controlmode(const char * value, const int8_t id);
|
bool set_controlmode(const char * value, const int8_t id);
|
||||||
|
bool set_wwprio(const char * value, const int8_t id);
|
||||||
|
|
||||||
// set functions - these don't use the id/hc, the parameters are ignored
|
// set functions - these don't use the id/hc, the parameters are ignored
|
||||||
bool set_wwmode(const char * value, const int8_t id);
|
bool set_wwmode(const char * value, const int8_t id);
|
||||||
@@ -338,12 +349,22 @@ class Thermostat : public EMSdevice {
|
|||||||
bool set_wwtemplow(const char * value, const int8_t id);
|
bool set_wwtemplow(const char * value, const int8_t id);
|
||||||
bool set_wwonetime(const char * value, const int8_t id);
|
bool set_wwonetime(const char * value, const int8_t id);
|
||||||
bool set_wwcircmode(const char * value, const int8_t id);
|
bool set_wwcircmode(const char * value, const int8_t id);
|
||||||
|
bool set_wwchargeduration(const char * value, const int8_t id);
|
||||||
|
bool set_wwDisinfect(const char * value, const int8_t id);
|
||||||
|
bool set_wwDisinfectDay(const char * value, const int8_t id);
|
||||||
|
bool set_wwDisinfectHour(const char * value, const int8_t id);
|
||||||
|
bool set_wwMaxTemp(const char * value, const int8_t id);
|
||||||
|
bool set_wwOneTimeKey(const char * value, const int8_t id);
|
||||||
|
bool set_wwProgMode(const char * value, const int8_t id);
|
||||||
|
bool set_wwCircProg(const char * value, const int8_t id);
|
||||||
|
|
||||||
bool set_datetime(const char * value, const int8_t id);
|
bool set_datetime(const char * value, const int8_t id);
|
||||||
bool set_minexttemp(const char * value, const int8_t id);
|
bool set_minexttemp(const char * value, const int8_t id);
|
||||||
bool set_clockoffset(const char * value, const int8_t id);
|
bool set_clockoffset(const char * value, const int8_t id);
|
||||||
bool set_calinttemp(const char * value, const int8_t id);
|
bool set_calinttemp(const char * value, const int8_t id);
|
||||||
bool set_display(const char * value, const int8_t id);
|
bool set_display(const char * value, const int8_t id);
|
||||||
bool set_building(const char * value, const int8_t id);
|
bool set_building(const char * value, const int8_t id);
|
||||||
|
bool set_damping(const char * value, const int8_t id);
|
||||||
bool set_language(const char * value, const int8_t id);
|
bool set_language(const char * value, const int8_t id);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ MAKE_PSTR_WORD(commands)
|
|||||||
MAKE_PSTR_WORD(info)
|
MAKE_PSTR_WORD(info)
|
||||||
MAKE_PSTR_WORD(settings)
|
MAKE_PSTR_WORD(settings)
|
||||||
MAKE_PSTR_WORD(value)
|
MAKE_PSTR_WORD(value)
|
||||||
|
MAKE_PSTR_WORD(error)
|
||||||
|
|
||||||
// devices
|
// devices
|
||||||
MAKE_PSTR_WORD(boiler)
|
MAKE_PSTR_WORD(boiler)
|
||||||
@@ -115,7 +116,7 @@ MAKE_PSTR(log_level_fmt, "Log level: %s")
|
|||||||
|
|
||||||
MAKE_STR(productid_fmt, "%s EMS Product ID")
|
MAKE_STR(productid_fmt, "%s EMS Product ID")
|
||||||
|
|
||||||
MAKE_PSTR_LIST(enum_syslog_level, F_(off), F("emerg"), F("alert"), F("crit"), F("error"), F("warn"), F("notice"), F_(info), F_(debug), F("trace"), F("all"))
|
MAKE_PSTR_LIST(enum_syslog_level, F_(off), F("emerg"), F("alert"), F("crit"), F_(error), F("warn"), F("notice"), F_(info), F_(debug), F("trace"), F("all"))
|
||||||
MAKE_PSTR_LIST(enum_watch, F_(off), F_(on), F_(raw), F_(unknown))
|
MAKE_PSTR_LIST(enum_watch, F_(off), F_(on), F_(raw), F_(unknown))
|
||||||
// strings
|
// strings
|
||||||
MAKE_PSTR(EMSESP, "EMS-ESP")
|
MAKE_PSTR(EMSESP, "EMS-ESP")
|
||||||
@@ -239,7 +240,6 @@ MAKE_PSTR_WORD(buffer)
|
|||||||
MAKE_PSTR(bufferedflow, "buffered flow")
|
MAKE_PSTR(bufferedflow, "buffered flow")
|
||||||
MAKE_PSTR(layeredbuffer, "layered buffer")
|
MAKE_PSTR(layeredbuffer, "layered buffer")
|
||||||
MAKE_PSTR_WORD(maintenance)
|
MAKE_PSTR_WORD(maintenance)
|
||||||
MAKE_PSTR_WORD(error)
|
|
||||||
|
|
||||||
// boiler lists
|
// boiler lists
|
||||||
MAKE_PSTR_LIST(enum_off_time_date, F_(off), F_(time), F_(date))
|
MAKE_PSTR_LIST(enum_off_time_date, F_(off), F_(time), F_(date))
|
||||||
@@ -329,6 +329,8 @@ MAKE_PSTR_LIST(enum_mode3, F_(night), F_(day), F_(auto)) // RC35, RC
|
|||||||
MAKE_PSTR_LIST(enum_mode4, F_(nofrost), F_(eco), F_(heat), F_(auto)) // JUNKERS
|
MAKE_PSTR_LIST(enum_mode4, F_(nofrost), F_(eco), F_(heat), F_(auto)) // JUNKERS
|
||||||
MAKE_PSTR_LIST(enum_mode5, F_(auto), F_(off)) // CRF
|
MAKE_PSTR_LIST(enum_mode5, F_(auto), F_(off)) // CRF
|
||||||
|
|
||||||
|
MAKE_PSTR_LIST(enum_hamode, F_(off), F_(heat), F_(auto), F_(heat), F_(off), F_(heat), F_(auto), F_(auto), F_(auto), F_(auto))
|
||||||
|
|
||||||
MAKE_PSTR_LIST(enum_modetype, F_(eco), F_(comfort))
|
MAKE_PSTR_LIST(enum_modetype, F_(eco), F_(comfort))
|
||||||
MAKE_PSTR_LIST(enum_modetype2, F_(day))
|
MAKE_PSTR_LIST(enum_modetype2, F_(day))
|
||||||
MAKE_PSTR_LIST(enum_modetype3, F_(night), F_(day))
|
MAKE_PSTR_LIST(enum_modetype3, F_(night), F_(day))
|
||||||
@@ -342,7 +344,9 @@ MAKE_PSTR_LIST(enum_controlmode2, F_(outdoor), F_(room))
|
|||||||
MAKE_PSTR_LIST(enum_controlmode3, F_(off), F_(room), F_(outdoor), F("room+outdoor"))
|
MAKE_PSTR_LIST(enum_controlmode3, F_(off), F_(room), F_(outdoor), F("room+outdoor"))
|
||||||
MAKE_PSTR_LIST(enum_control, F_(off), F_(rc20), F_(rc3x))
|
MAKE_PSTR_LIST(enum_control, F_(off), F_(rc20), F_(rc3x))
|
||||||
|
|
||||||
MAKE_PSTR_LIST(enum_hamode, F_(off), F_(heat), F_(auto), F_(heat), F_(off), F_(heat), F_(auto), F_(auto), F_(auto), F_(auto))
|
MAKE_PSTR_LIST(enum_wwProgMode, F("std prog"), F_(own_prog))
|
||||||
|
MAKE_PSTR_LIST(enum_wwDisinfectDay, F("mo"), F("tu"), F("we"), F("th"), F("fr"), F("sa"), F("so"), F("every day"))
|
||||||
|
MAKE_PSTR_LIST(enum_wwChargeDuration, F_(off), F("15min"), F("30min"), F("45min"), F("60min"), F("75min"), F("90min"), F("105min"), F("120min"))
|
||||||
|
|
||||||
// solar list
|
// solar list
|
||||||
MAKE_PSTR_LIST(enum_solarmode, F_(constant), F("pwm"), F("analog"))
|
MAKE_PSTR_LIST(enum_solarmode, F_(constant), F("pwm"), F("analog"))
|
||||||
@@ -442,6 +446,9 @@ MAKE_PSTR_LIST(hpPh1, F("hpph1"), F("high pressure side temperature (PH1)"))
|
|||||||
|
|
||||||
// the following are warm water for the boiler and automatically tagged with 'ww'
|
// the following are warm water for the boiler and automatically tagged with 'ww'
|
||||||
MAKE_PSTR_LIST(wwSelTemp, F("wwseltemp"), F("selected temperature"))
|
MAKE_PSTR_LIST(wwSelTemp, F("wwseltemp"), F("selected temperature"))
|
||||||
|
MAKE_PSTR_LIST(wwSelTempLow, F("wwseltemplow"), F("selected lower temperature"))
|
||||||
|
MAKE_PSTR_LIST(wwSelTempOff, F("wwseltempoff"), F("selected temperature for off"))
|
||||||
|
MAKE_PSTR_LIST(wwSelTempSingle, F("wwseltempsingle"), F("single charge temperature"))
|
||||||
MAKE_PSTR_LIST(wwSetTemp, F("wwsettemp"), F("set temperature"))
|
MAKE_PSTR_LIST(wwSetTemp, F("wwsettemp"), F("set temperature"))
|
||||||
MAKE_PSTR_LIST(wwType, F("wwtype"), F("type"))
|
MAKE_PSTR_LIST(wwType, F("wwtype"), F("type"))
|
||||||
MAKE_PSTR_LIST(wwComfort, F("wwcomfort"), F("comfort"))
|
MAKE_PSTR_LIST(wwComfort, F("wwcomfort"), F("comfort"))
|
||||||
@@ -473,6 +480,13 @@ MAKE_PSTR_LIST(wwStarts2, F("wwstarts2"), F("# control starts"))
|
|||||||
MAKE_PSTR_LIST(wwWorkM, F("wwworkm"), F("active time"))
|
MAKE_PSTR_LIST(wwWorkM, F("wwworkm"), F("active time"))
|
||||||
MAKE_PSTR_LIST(wwHystOn, F("wwhyston"), F("hysteresis on temperature"))
|
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(wwCircProg, F("wwcircprog"), F("circulation program mode"))
|
||||||
|
MAKE_PSTR_LIST(wwDisinfect, F("wwdisinfect"), F("disinfection"))
|
||||||
|
MAKE_PSTR_LIST(wwDisinfectDay, F("wwdisinfectday"), F("disinfection day"))
|
||||||
|
MAKE_PSTR_LIST(wwDisinfectHour, F("wwdisinfecthour"), F("disinfection hour"))
|
||||||
|
MAKE_PSTR_LIST(wwMaxTemp, F("wwmaxtemp"), F("maximum temperature"))
|
||||||
|
MAKE_PSTR_LIST(wwOneTimeKey, F("wwonetimekey"), F("one time key function"))
|
||||||
|
|
||||||
// thermostat
|
// thermostat
|
||||||
// extra commands
|
// extra commands
|
||||||
@@ -491,20 +505,23 @@ MAKE_PSTR_LIST(ibaClockOffset, F("clockoffset"), F("clock offset"))
|
|||||||
MAKE_PSTR_LIST(ibaBuildingType, F("building"), F("building"))
|
MAKE_PSTR_LIST(ibaBuildingType, F("building"), F("building"))
|
||||||
MAKE_PSTR_LIST(ibaCalIntTemperature, F("intoffset"), F("offset internal temperature"))
|
MAKE_PSTR_LIST(ibaCalIntTemperature, F("intoffset"), F("offset internal temperature"))
|
||||||
MAKE_PSTR_LIST(ibaMinExtTemperature, F("minexttemp"), F("minimal external temperature"))
|
MAKE_PSTR_LIST(ibaMinExtTemperature, F("minexttemp"), F("minimal external temperature"))
|
||||||
|
MAKE_PSTR_LIST(damping, F("damping"), F("damping outdoor temperature"))
|
||||||
|
|
||||||
MAKE_PSTR_LIST(tempsensor1, F("inttemp1"), F("temperature sensor 1"))
|
MAKE_PSTR_LIST(tempsensor1, F("inttemp1"), F("temperature sensor 1"))
|
||||||
MAKE_PSTR_LIST(tempsensor2, F("inttemp2"), F("temperature sensor 2"))
|
MAKE_PSTR_LIST(tempsensor2, F("inttemp2"), F("temperature sensor 2"))
|
||||||
MAKE_PSTR_LIST(dampedoutdoortemp, F("dampedoutdoortemp"), F("damped outdoor temperature"))
|
MAKE_PSTR_LIST(dampedoutdoortemp, F("dampedoutdoortemp"), F("damped outdoor temperature"))
|
||||||
MAKE_PSTR_LIST(floordrystatus, F("floordry"), F("floor drying"))
|
MAKE_PSTR_LIST(floordrystatus, F("floordry"), F("floor drying"))
|
||||||
MAKE_PSTR_LIST(dampedoutdoortemp2, F("dampedoutdoortemp"), F("damped outdoor temperature"))
|
|
||||||
MAKE_PSTR_LIST(floordrytemp, F("floordrytemp"), F("floor drying temperature"))
|
MAKE_PSTR_LIST(floordrytemp, F("floordrytemp"), F("floor drying temperature"))
|
||||||
MAKE_PSTR_LIST(wwMode, F("wwmode"), F("mode"))
|
MAKE_PSTR_LIST(wwMode, F("wwmode"), F("mode"))
|
||||||
MAKE_PSTR_LIST(wwSetTempLow, F("wwsettemplow"), F("set low temperature"))
|
MAKE_PSTR_LIST(wwSetTempLow, F("wwsettemplow"), F("set low temperature"))
|
||||||
|
MAKE_PSTR_LIST(wwChargeDuration, F("wwchargeduration"), F("charge duration"))
|
||||||
MAKE_PSTR_LIST(wwExtra1, F("wwextra1"), F("circuit 1 extra"))
|
MAKE_PSTR_LIST(wwExtra1, F("wwextra1"), F("circuit 1 extra"))
|
||||||
MAKE_PSTR_LIST(wwExtra2, F("wwextra2"), F("circuit 2 extra"))
|
MAKE_PSTR_LIST(wwExtra2, F("wwextra2"), F("circuit 2 extra"))
|
||||||
MAKE_PSTR_LIST(setpoint_roomTemp, F("seltemp"), F("selected room temperature"))
|
MAKE_PSTR_LIST(setpoint_roomTemp, F("seltemp"), F("selected room temperature"))
|
||||||
MAKE_PSTR_LIST(curr_roomTemp, F("currtemp"), F("current room temperature"))
|
MAKE_PSTR_LIST(curr_roomTemp, F("currtemp"), F("current room temperature"))
|
||||||
MAKE_PSTR_LIST(mode, F("mode"), F("mode"))
|
MAKE_PSTR_LIST(mode, F("mode"), F("mode"))
|
||||||
MAKE_PSTR_LIST(modetype, F("modetype"), F("mode type"))
|
MAKE_PSTR_LIST(modetype, F("modetype"), F("mode type"))
|
||||||
|
|
||||||
MAKE_PSTR_LIST(daytemp, F("daytemp"), F("day temperature"))
|
MAKE_PSTR_LIST(daytemp, F("daytemp"), F("day temperature"))
|
||||||
MAKE_PSTR_LIST(heattemp, F("heattemp"), F("heat temperature"))
|
MAKE_PSTR_LIST(heattemp, F("heattemp"), F("heat temperature"))
|
||||||
MAKE_PSTR_LIST(nighttemp, F("nighttemp"), F("night temperature"))
|
MAKE_PSTR_LIST(nighttemp, F("nighttemp"), F("night temperature"))
|
||||||
@@ -527,6 +544,7 @@ MAKE_PSTR_LIST(control, F("control"), F("control device"))
|
|||||||
MAKE_PSTR_LIST(program, F("program"), F("program"))
|
MAKE_PSTR_LIST(program, F("program"), F("program"))
|
||||||
MAKE_PSTR_LIST(pause, F("pause"), F("pause time"))
|
MAKE_PSTR_LIST(pause, F("pause"), F("pause time"))
|
||||||
MAKE_PSTR_LIST(party, F("party"), F("party time"))
|
MAKE_PSTR_LIST(party, F("party"), F("party time"))
|
||||||
|
MAKE_PSTR_LIST(wwprio, F("wwprio"), F("warm water priority"))
|
||||||
|
|
||||||
MAKE_PSTR_LIST(holidaytemp, F("holidaytemp"), F("holiday temperature"))
|
MAKE_PSTR_LIST(holidaytemp, F("holidaytemp"), F("holiday temperature"))
|
||||||
MAKE_PSTR_LIST(summermode, F("summermode"), F("summer mode"))
|
MAKE_PSTR_LIST(summermode, F("summermode"), F("summer mode"))
|
||||||
|
|||||||
Reference in New Issue
Block a user