add RC300 wwc2 entities

This commit is contained in:
MichaelDvP
2024-02-25 10:51:08 +01:00
parent df0210bfac
commit 40716f9c55
2 changed files with 133 additions and 17 deletions

View File

@@ -164,6 +164,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i
register_telegram_type(hpmode_typeids[i], "HPMode", true, MAKE_PF_CB(process_HPMode)); register_telegram_type(hpmode_typeids[i], "HPMode", true, MAKE_PF_CB(process_HPMode));
} }
register_telegram_type(0x2F5, "RC300WWmode", true, MAKE_PF_CB(process_RC300WWmode)); register_telegram_type(0x2F5, "RC300WWmode", true, MAKE_PF_CB(process_RC300WWmode));
register_telegram_type(0x2F6, "RC300WW2mode", true, MAKE_PF_CB(process_RC300WW2mode));
register_telegram_type(0x31B, "RC300WWtemp", true, MAKE_PF_CB(process_RC300WWtemp)); register_telegram_type(0x31B, "RC300WWtemp", true, MAKE_PF_CB(process_RC300WWtemp));
register_telegram_type(0x31D, "RC300WWmode2", false, MAKE_PF_CB(process_RC300WWmode2)); register_telegram_type(0x31D, "RC300WWmode2", false, MAKE_PF_CB(process_RC300WWmode2));
register_telegram_type(0x31E, "RC300WWmode2", false, MAKE_PF_CB(process_RC300WWmode2)); register_telegram_type(0x31E, "RC300WWmode2", false, MAKE_PF_CB(process_RC300WWmode2));
@@ -1198,6 +1199,30 @@ void Thermostat::process_RC300WWmode(std::shared_ptr<const Telegram> telegram) {
has_update(telegram, wwDailyHeatTime_, 9); // value in steps of 15 min has_update(telegram, wwDailyHeatTime_, 9); // value in steps of 15 min
} }
// type 02F6
// RC300WWmode(0x2F6), data: 02 FF 04 00 00 00 08 05 00 08 04 00 00 00 00 00 00 00 00 00 01
void Thermostat::process_RC300WW2mode(std::shared_ptr<const Telegram> telegram) {
has_update(telegram, wwCircPump2_, 1); // FF=off, 0=on ?
if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400) {
const uint8_t modes[] = {0, 5, 1, 2, 4}; // off, eco+, eco, comfort, auto
uint8_t wwmode = wwMode_ < sizeof(modes) ? modes[wwMode2_] : EMS_VALUE_UINT_NOTSET;
telegram->read_value(wwmode, 2);
const uint8_t modes1[] = {0, 2, 3, 0, 4, 1};
has_update(wwMode2_, wwmode < sizeof(modes1) ? modes1[wwmode] : EMS_VALUE_UINT_NOTSET);
} else {
has_update(telegram, wwMode2_, 2); // 0=off, 1=low, 2=high, 3=auto, 4=own prog
}
has_update(telegram, wwCircMode2_, 3); // 0=off, 1=on, 2=auto, 4=own?
has_update(telegram, wwChargeDuration2_, 10); // value in steps of 15 min
has_update(telegram, wwCharge2_, 11); // bool 0xFF on
has_update(telegram, wwDisinfecting2_, 5); // 0-off, 0xFF on
has_update(telegram, wwDisinfectHour2_, 6); // value in steps of 15 min
has_update(telegram, wwDisinfectDay2_, 7); // 0-6 Day of week, 7 every day
has_update(telegram, wwDailyHeating2_, 8); // 0-off, 0xFF on
has_update(telegram, wwDailyHeatTime2_, 9); // value in steps of 15 min
}
// types 0x31D and 0x31E // types 0x31D and 0x31E
// RC300WWmode2(0x31D), data: 00 00 09 07 // RC300WWmode2(0x31D), data: 00 00 09 07
void Thermostat::process_RC300WWmode2(std::shared_ptr<const Telegram> telegram) { void Thermostat::process_RC300WWmode2(std::shared_ptr<const Telegram> telegram) {
@@ -1991,6 +2016,7 @@ bool Thermostat::set_roomsensor(const char * value, const int8_t id) {
// sets the thermostat ww working mode, where mode is a string, ems and ems+ // sets the thermostat ww working mode, where mode is a string, ems and ems+
bool Thermostat::set_wwmode(const char * value, const int8_t id) { bool Thermostat::set_wwmode(const char * value, const int8_t id) {
uint8_t wwc = (id == 2 || id == DeviceValueTAG::TAG_WWC2 - DeviceValueTAG::TAG_HC1) ? 1 : 0;
uint8_t set; uint8_t set;
if (model() == EMSdevice::EMS_DEVICE_FLAG_RC10) { if (model() == EMSdevice::EMS_DEVICE_FLAG_RC10) {
@@ -2003,12 +2029,12 @@ bool Thermostat::set_wwmode(const char * value, const int8_t id) {
return false; return false;
} }
const uint8_t modes[] = {0, 5, 1, 2, 4}; const uint8_t modes[] = {0, 5, 1, 2, 4};
write_command(0x02F5, 2, modes[set], 0x02F5); write_command(0x02F5 + wwc, 2, modes[set], 0x02F5 + wwc);
} else if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { } else if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
if (!Helpers::value2enum(value, set, FL_(enum_wwMode))) { if (!Helpers::value2enum(value, set, FL_(enum_wwMode))) {
return false; return false;
} }
write_command(0x02F5, 2, set, 0x02F5); write_command(0x02F5 + wwc, 2, set, 0x02F5 + wwc);
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) {
if (!Helpers::value2enum(value, set, FL_(enum_wwMode3))) { if (!Helpers::value2enum(value, set, FL_(enum_wwMode3))) {
return false; return false;
@@ -2062,7 +2088,8 @@ bool Thermostat::set_wwtemplow(const char * value, const int8_t id) {
// Set ww charge RC300, ems+ // Set ww charge RC300, ems+
bool Thermostat::set_wwcharge(const char * value, const int8_t id) { bool Thermostat::set_wwcharge(const char * value, const int8_t id) {
bool b; uint8_t wwc = (id == 2 || id == DeviceValueTAG::TAG_WWC2 - DeviceValueTAG::TAG_HC1) ? 1 : 0;
bool b;
if (!Helpers::value2bool(value, b)) { if (!Helpers::value2bool(value, b)) {
return false; return false;
} }
@@ -2070,7 +2097,7 @@ bool Thermostat::set_wwcharge(const char * value, const int8_t id) {
if ((model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS)) { if ((model() == EMSdevice::EMS_DEVICE_FLAG_JUNKERS)) {
write_command(0x0115, 0, b ? 0xFF : 0x00, 0x01D3); write_command(0x0115, 0, b ? 0xFF : 0x00, 0x01D3);
} else { } else {
write_command(0x02F5, 11, b ? 0xFF : 0x00, 0x02F5); write_command(0x02F5 + wwc, 11, b ? 0xFF : 0x00, 0x02F5 + wwc);
} }
return true; return true;
@@ -2078,13 +2105,14 @@ bool Thermostat::set_wwcharge(const char * value, const int8_t id) {
// Set ww charge duration in steps of 15 min, ems+ // Set ww charge duration in steps of 15 min, ems+
bool Thermostat::set_wwchargeduration(const char * value, const int8_t id) { bool Thermostat::set_wwchargeduration(const char * value, const int8_t id) {
int t; uint8_t wwc = (id == 2 || id == DeviceValueTAG::TAG_WWC2 - DeviceValueTAG::TAG_HC1) ? 1 : 0;
int t;
if (!Helpers::value2number(value, t)) { if (!Helpers::value2number(value, t)) {
return false; return false;
} }
t = (t + 8) / 15; t = (t + 8) / 15;
write_command(0x2F5, 10, t, 0x02F5); write_command(0x2F5 + wwc, 10, t, 0x02F5 + wwc);
return true; return true;
} }
@@ -2126,13 +2154,14 @@ bool Thermostat::set_cooling(const char * value, const int8_t id) {
// sets the thermostat ww circulation working mode, where mode is a string // sets the thermostat ww circulation working mode, where mode is a string
bool Thermostat::set_wwcircmode(const char * value, const int8_t id) { bool Thermostat::set_wwcircmode(const char * value, const int8_t id) {
uint8_t wwc = (id == 2 || id == DeviceValueTAG::TAG_WWC2 - DeviceValueTAG::TAG_HC1) ? 1 : 0;
uint8_t set; uint8_t set;
if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
if (!Helpers::value2enum(value, set, FL_(enum_wwCircMode))) { if (!Helpers::value2enum(value, set, FL_(enum_wwCircMode))) {
return false; return false;
} }
write_command(0x02F5, 3, set, 0x02F5); write_command(0x02F5 + wwc, 3, set, 0x02F5 + wwc);
return true; return true;
} }
if (!Helpers::value2enum(value, set, FL_(enum_wwMode2))) { if (!Helpers::value2enum(value, set, FL_(enum_wwMode2))) {
@@ -2145,17 +2174,19 @@ bool Thermostat::set_wwcircmode(const char * value, const int8_t id) {
} }
bool Thermostat::set_wwDailyHeating(const char * value, const int8_t id) { bool Thermostat::set_wwDailyHeating(const char * value, const int8_t id) {
bool b; uint8_t wwc = (id == 2 || id == DeviceValueTAG::TAG_WWC2 - DeviceValueTAG::TAG_HC1) ? 1 : 0;
bool b;
if (!Helpers::value2bool(value, b)) { if (!Helpers::value2bool(value, b)) {
return false; return false;
} }
write_command(0x2F5, 8, b ? 0xFF : 0x00, 0x2F5); write_command(0x2F5 + wwc, 8, b ? 0xFF : 0x00, 0x2F5 + wwc);
return true; return true;
} }
bool Thermostat::set_wwDailyHeatTime(const char * value, const int8_t id) { bool Thermostat::set_wwDailyHeatTime(const char * value, const int8_t id) {
int set; uint8_t wwc = (id == 2 || id == DeviceValueTAG::TAG_WWC2 - DeviceValueTAG::TAG_HC1) ? 1 : 0;
int set;
if (!Helpers::value2number(value, set)) { if (!Helpers::value2number(value, set)) {
return false; return false;
} }
@@ -2166,19 +2197,20 @@ bool Thermostat::set_wwDailyHeatTime(const char * value, const int8_t id) {
return false; return false;
} }
write_command(0x2F5, 9, t, 0x2F5); write_command(0x2F5 + wwc, 9, t, 0x2F5 + wwc);
} }
return true; return true;
} }
bool Thermostat::set_wwDisinfect(const char * value, const int8_t id) { bool Thermostat::set_wwDisinfect(const char * value, const int8_t id) {
bool b; uint8_t wwc = (id == 2 || id == DeviceValueTAG::TAG_WWC2 - DeviceValueTAG::TAG_HC1) ? 1 : 0;
bool b;
if (!Helpers::value2bool(value, b)) { if (!Helpers::value2bool(value, b)) {
return false; return false;
} }
if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
write_command(0x2F5, 5, b ? 0xFF : 0x00, 0x2F5); write_command(0x2F5 + wwc, 5, b ? 0xFF : 0x00, 0x2F5 + wwc);
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) {
write_command(EMS_TYPE_RC30wwSettings, 2, b ? 0xFF : 0x00, EMS_TYPE_RC30wwSettings); write_command(EMS_TYPE_RC30wwSettings, 2, b ? 0xFF : 0x00, EMS_TYPE_RC30wwSettings);
} else { } else {
@@ -2189,13 +2221,14 @@ bool Thermostat::set_wwDisinfect(const char * value, const int8_t id) {
} }
bool Thermostat::set_wwDisinfectDay(const char * value, const int8_t id) { bool Thermostat::set_wwDisinfectDay(const char * value, const int8_t id) {
uint8_t wwc = (id == 2 || id == DeviceValueTAG::TAG_WWC2 - DeviceValueTAG::TAG_HC1) ? 1 : 0;
uint8_t set; uint8_t set;
if (!Helpers::value2enum(value, set, FL_(enum_dayOfWeek))) { if (!Helpers::value2enum(value, set, FL_(enum_dayOfWeek))) {
return false; return false;
} }
if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
write_command(0x2F5, 7, set, 0x2F5); write_command(0x2F5 + wwc, 7, set, 0x2F5 + wwc);
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) {
write_command(EMS_TYPE_RC30wwSettings, 3, set, EMS_TYPE_RC30wwSettings); write_command(EMS_TYPE_RC30wwSettings, 3, set, EMS_TYPE_RC30wwSettings);
} else { } else {
@@ -2206,12 +2239,13 @@ bool Thermostat::set_wwDisinfectDay(const char * value, const int8_t id) {
} }
bool Thermostat::set_wwDisinfectHour(const char * value, const int8_t id) { bool Thermostat::set_wwDisinfectHour(const char * value, const int8_t id) {
int set; uint8_t wwc = (id == 2 || id == DeviceValueTAG::TAG_WWC2 - DeviceValueTAG::TAG_HC1) ? 1 : 0;
int set;
if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) { if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
if (!Helpers::value2number(value, set, 0, 1431)) { if (!Helpers::value2number(value, set, 0, 1431)) {
return false; return false;
} }
write_command(0x2F5, 6, (set + 8) / 15, 0x2F5); write_command(0x2F5 + wwc, 6, (set + 8) / 15, 0x2F5 + wwc);
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) { } else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) {
if (!Helpers::value2number(value, set, 0, 23)) { if (!Helpers::value2number(value, set, 0, 23)) {
return false; return false;
@@ -3816,6 +3850,8 @@ void Thermostat::register_device_values() {
FL_(wwMode), FL_(wwMode),
DeviceValueUOM::NONE, DeviceValueUOM::NONE,
MAKE_CF_CB(set_wwmode)); MAKE_CF_CB(set_wwmode));
register_device_value(
DeviceValueTAG::TAG_WWC2, &wwMode2_, DeviceValueType::ENUM, FL_(enum_wwMode4), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode));
} else { } else {
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW,
@@ -3825,6 +3861,8 @@ void Thermostat::register_device_values() {
FL_(wwMode), FL_(wwMode),
DeviceValueUOM::NONE, DeviceValueUOM::NONE,
MAKE_CF_CB(set_wwmode)); MAKE_CF_CB(set_wwmode));
register_device_value(
DeviceValueTAG::TAG_WWC2, &wwMode2_, DeviceValueType::ENUM, FL_(enum_wwMode), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode));
} }
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW,
&wwSetTempLow_, &wwSetTempLow_,
@@ -3848,7 +3886,6 @@ void Thermostat::register_device_values() {
MAKE_CF_CB(set_wwchargeduration)); MAKE_CF_CB(set_wwchargeduration));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwCharge_, DeviceValueType::BOOL, FL_(wwCharge), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwcharge)); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwCharge_, DeviceValueType::BOOL, FL_(wwCharge), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwcharge));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwExtra1_, DeviceValueType::UINT, FL_(wwExtra1), DeviceValueUOM::DEGREES); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwExtra1_, DeviceValueType::UINT, FL_(wwExtra1), DeviceValueUOM::DEGREES);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, &wwExtra2_, DeviceValueType::UINT, FL_(wwExtra2), DeviceValueUOM::DEGREES);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW, register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW,
&wwDisinfecting_, &wwDisinfecting_,
DeviceValueType::BOOL, DeviceValueType::BOOL,
@@ -3871,6 +3908,74 @@ void Thermostat::register_device_values() {
MAKE_CF_CB(set_wwDisinfectHour), MAKE_CF_CB(set_wwDisinfectHour),
0, 0,
1431); 1431);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW,
&wwDailyHeating_,
DeviceValueType::BOOL,
FL_(wwDailyHeating),
DeviceValueUOM::NONE,
MAKE_CF_CB(set_wwDailyHeating));
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA_WW,
&wwDailyHeatTime_,
DeviceValueType::UINT,
DeviceValueNumOp::DV_NUMOP_MUL15,
FL_(wwDailyHeatTime),
DeviceValueUOM::MINUTES,
MAKE_CF_CB(set_wwDailyHeatTime),
0,
1431);
register_device_value(DeviceValueTAG::TAG_WWC2,
&wwCircMode2_,
DeviceValueType::ENUM,
FL_(enum_wwCircMode),
FL_(wwCircMode),
DeviceValueUOM::NONE,
MAKE_CF_CB(set_wwcircmode));
register_device_value(DeviceValueTAG::TAG_WWC2,
&wwChargeDuration2_,
DeviceValueType::UINT,
DeviceValueNumOp::DV_NUMOP_MUL15,
FL_(wwChargeDuration),
DeviceValueUOM::MINUTES,
MAKE_CF_CB(set_wwchargeduration));
register_device_value(DeviceValueTAG::TAG_WWC2, &wwCharge2_, DeviceValueType::BOOL, FL_(wwCharge), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwcharge));
register_device_value(DeviceValueTAG::TAG_WWC2, &wwExtra2_, DeviceValueType::UINT, FL_(wwExtra2), DeviceValueUOM::DEGREES);
register_device_value(DeviceValueTAG::TAG_WWC2,
&wwDisinfecting2_,
DeviceValueType::BOOL,
FL_(wwDisinfecting),
DeviceValueUOM::NONE,
MAKE_CF_CB(set_wwDisinfect));
register_device_value(DeviceValueTAG::TAG_WWC2,
&wwDisinfectDay2_,
DeviceValueType::ENUM,
FL_(enum_dayOfWeek),
FL_(wwDisinfectDay),
DeviceValueUOM::NONE,
MAKE_CF_CB(set_wwDisinfectDay));
register_device_value(DeviceValueTAG::TAG_WWC2,
&wwDisinfectHour2_,
DeviceValueType::UINT,
DeviceValueNumOp::DV_NUMOP_MUL15,
FL_(wwDisinfectTime),
DeviceValueUOM::MINUTES,
MAKE_CF_CB(set_wwDisinfectHour),
0,
1431);
register_device_value(DeviceValueTAG::TAG_WWC2,
&wwDailyHeating2_,
DeviceValueType::BOOL,
FL_(wwDailyHeating),
DeviceValueUOM::NONE,
MAKE_CF_CB(set_wwDailyHeating));
register_device_value(DeviceValueTAG::TAG_WWC2,
&wwDailyHeatTime2_,
DeviceValueType::UINT,
DeviceValueNumOp::DV_NUMOP_MUL15,
FL_(wwDailyHeatTime),
DeviceValueUOM::MINUTES,
MAKE_CF_CB(set_wwDailyHeatTime),
0,
1431);
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
&hybridStrategy_, &hybridStrategy_,
DeviceValueType::ENUM, DeviceValueType::ENUM,

View File

@@ -223,15 +223,23 @@ class Thermostat : public EMSdevice {
uint8_t wwExtra1_; // wwExtra active for wwSystem 1 uint8_t wwExtra1_; // wwExtra active for wwSystem 1
uint8_t wwExtra2_; uint8_t wwExtra2_;
uint8_t wwMode_; uint8_t wwMode_;
uint8_t wwMode2_;
uint8_t wwCircPump_; uint8_t wwCircPump_;
uint8_t wwCircPump2_;
uint8_t wwCircMode_; uint8_t wwCircMode_;
uint8_t wwCircMode2_;
uint8_t wwSetTemp_; uint8_t wwSetTemp_;
uint8_t wwSetTempLow_; uint8_t wwSetTempLow_;
uint8_t wwCharge_; uint8_t wwCharge_;
uint8_t wwCharge2_;
uint8_t wwChargeDuration_; uint8_t wwChargeDuration_;
uint8_t wwChargeDuration2_;
uint8_t wwDisinfecting_; uint8_t wwDisinfecting_;
uint8_t wwDisinfecting2_;
uint8_t wwDisinfectDay_; uint8_t wwDisinfectDay_;
uint8_t wwDisinfectHour_; uint8_t wwDisinfectHour_;
uint8_t wwDisinfectDay2_;
uint8_t wwDisinfectHour2_;
uint8_t wwMaxTemp_; uint8_t wwMaxTemp_;
uint8_t wwOneTimeKey_; uint8_t wwOneTimeKey_;
uint8_t wwProgMode_; uint8_t wwProgMode_;
@@ -240,6 +248,8 @@ class Thermostat : public EMSdevice {
char wwCircSwitchTime_[16]; char wwCircSwitchTime_[16];
uint8_t wwDailyHeating_; uint8_t wwDailyHeating_;
uint8_t wwDailyHeatTime_; uint8_t wwDailyHeatTime_;
uint8_t wwDailyHeating2_;
uint8_t wwDailyHeatTime2_;
uint8_t wwWhenModeOff_; uint8_t wwWhenModeOff_;
char wwHoliday_[26]; char wwHoliday_[26];
char wwVacation_[26]; char wwVacation_[26];
@@ -393,6 +403,7 @@ class Thermostat : public EMSdevice {
void process_RC300Summer(std::shared_ptr<const Telegram> telegram); void process_RC300Summer(std::shared_ptr<const Telegram> telegram);
void process_RC300Summer2(std::shared_ptr<const Telegram> telegram); void process_RC300Summer2(std::shared_ptr<const Telegram> telegram);
void process_RC300WWmode(std::shared_ptr<const Telegram> telegram); void process_RC300WWmode(std::shared_ptr<const Telegram> telegram);
void process_RC300WW2mode(std::shared_ptr<const Telegram> telegram);
void process_RC300WWmode2(std::shared_ptr<const Telegram> telegram); void process_RC300WWmode2(std::shared_ptr<const Telegram> telegram);
void process_RC300WWtemp(std::shared_ptr<const Telegram> telegram); void process_RC300WWtemp(std::shared_ptr<const Telegram> telegram);
void process_RC300OutdoorTemp(std::shared_ptr<const Telegram> telegram); void process_RC300OutdoorTemp(std::shared_ptr<const Telegram> telegram);