mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
@@ -1278,12 +1278,18 @@ void Thermostat::process_RC300WWmode(std::shared_ptr<const Telegram> telegram) {
|
|||||||
telegram->read_value(wwmode, 2);
|
telegram->read_value(wwmode, 2);
|
||||||
const uint8_t modes1[] = {0, 0, 1, 0, 0, 2}; // 0=normal (1), 1=comfort(2), 2=eco+(5)
|
const uint8_t modes1[] = {0, 0, 1, 0, 0, 2}; // 0=normal (1), 1=comfort(2), 2=eco+(5)
|
||||||
has_update(dhw->wwMode_, wwmode < sizeof(modes1) ? modes1[wwmode] : EMS_VALUE_UINT8_NOTSET);
|
has_update(dhw->wwMode_, wwmode < sizeof(modes1) ? modes1[wwmode] : EMS_VALUE_UINT8_NOTSET);
|
||||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_CR120 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_CR120) {
|
||||||
const uint8_t modes[] = {1, 2, 4}; //// 0=normal (1), 1=comfort(2), 2=auto(4)
|
const uint8_t modes[] = {1, 2, 4}; //// 0=normal (1), 1=comfort(2), 2=auto(4)
|
||||||
uint8_t wwmode = dhw->wwMode_ < sizeof(modes) ? modes[dhw->wwMode_] : EMS_VALUE_UINT8_NOTSET;
|
uint8_t wwmode = dhw->wwMode_ < sizeof(modes) ? modes[dhw->wwMode_] : EMS_VALUE_UINT8_NOTSET;
|
||||||
telegram->read_value(wwmode, 2);
|
telegram->read_value(wwmode, 2);
|
||||||
const uint8_t modes1[] = {0, 0, 1, 0, 2, 0};
|
const uint8_t modes1[] = {0, 0, 1, 0, 2, 0};
|
||||||
has_update(dhw->wwMode_, wwmode < sizeof(modes1) ? modes1[wwmode] : EMS_VALUE_UINT8_NOTSET);
|
has_update(dhw->wwMode_, wwmode < sizeof(modes1) ? modes1[wwmode] : EMS_VALUE_UINT8_NOTSET);
|
||||||
|
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||||
|
const uint8_t modes[] = {0, 2, 3}; //// 0=off(0), 1=on(2), 2=auto(3)
|
||||||
|
uint8_t wwmode = dhw->wwMode_ < sizeof(modes) ? modes[dhw->wwMode_] : EMS_VALUE_UINT8_NOTSET;
|
||||||
|
telegram->read_value(wwmode, 2);
|
||||||
|
const uint8_t modes1[] = {0, 0, 1, 2, 0, 0};
|
||||||
|
has_update(dhw->wwMode_, wwmode < sizeof(modes1) ? modes1[wwmode] : EMS_VALUE_UINT8_NOTSET);
|
||||||
} else {
|
} else {
|
||||||
has_update(telegram, dhw->wwMode_, 2); // 0=off, 1=low, 2=high, 3=auto, 4=own prog
|
has_update(telegram, dhw->wwMode_, 2); // 0=off, 1=low, 2=high, 3=auto, 4=own prog
|
||||||
}
|
}
|
||||||
@@ -2227,12 +2233,18 @@ bool Thermostat::set_wwmode(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
const uint8_t modes[] = {0, 5, 1, 2, 4};
|
const uint8_t modes[] = {0, 5, 1, 2, 4};
|
||||||
write_command(0x02F5 + dhw->offset(), 2, modes[set], 0x02F5 + dhw->offset());
|
write_command(0x02F5 + dhw->offset(), 2, modes[set], 0x02F5 + dhw->offset());
|
||||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_CR120 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_CR120) {
|
||||||
if (!Helpers::value2enum(value, set, FL_(enum_wwMode6))) { // normal, comfort, auto
|
if (!Helpers::value2enum(value, set, FL_(enum_wwMode6))) { // normal, comfort, auto
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const uint8_t modes[] = {0, 2, 4};
|
const uint8_t modes[] = {0, 2, 4};
|
||||||
write_command(0x02F5 + dhw->offset(), 2, modes[set], 0x02F5 + dhw->offset());
|
write_command(0x02F5 + dhw->offset(), 2, modes[set], 0x02F5 + dhw->offset());
|
||||||
|
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||||
|
if (!Helpers::value2enum(value, set, FL_(enum_wwMode2))) { // off, on, auto
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const uint8_t modes[] = {0, 2, 3};
|
||||||
|
write_command(0x02F5 + dhw->offset(), 2, modes[set], 0x02F5 + dhw->offset());
|
||||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_R3000) { // Rego3000 - https://github.com/emsesp/EMS-ESP32/issues/1692
|
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_R3000) { // Rego3000 - https://github.com/emsesp/EMS-ESP32/issues/1692
|
||||||
if (!Helpers::value2enum(value, set, FL_(enum_wwMode5))) {
|
if (!Helpers::value2enum(value, set, FL_(enum_wwMode5))) {
|
||||||
return false;
|
return false;
|
||||||
@@ -5051,6 +5063,8 @@ void Thermostat::register_device_values_dhw(std::shared_ptr<Thermostat::DhwCircu
|
|||||||
register_device_value(tag, &dhw->wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode5), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode));
|
register_device_value(tag, &dhw->wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode5), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode));
|
||||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_CR120) {
|
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_CR120) {
|
||||||
register_device_value(tag, &dhw->wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode6), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode));
|
register_device_value(tag, &dhw->wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode6), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode));
|
||||||
|
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||||
|
register_device_value(tag, &dhw->wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode2), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode));
|
||||||
} else {
|
} else {
|
||||||
register_device_value(tag, &dhw->wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode));
|
register_device_value(tag, &dhw->wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user