mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-08 00:39:50 +03:00
This commit is contained in:
@@ -1221,16 +1221,23 @@ 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, 2, 3, 0, 4, 1};
|
const uint8_t modes1[] = {0, 2, 3, 0, 4, 1};
|
||||||
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_R3000) {
|
||||||
|
// https://github.com/emsesp/EMS-ESP32/pull/1722#discussion_r1582823521
|
||||||
|
const uint8_t modes[] = {1, 2, 5}; // normal, comfort, eco+
|
||||||
|
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, 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);
|
||||||
} 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
|
||||||
}
|
}
|
||||||
has_update(telegram, dhw->wwCircMode_, 3); // 0=off, 1=on, 2=auto, 4=own?
|
has_update(telegram, dhw->wwCircMode_, 3); // 0=off, 1=on, 2=auto, 4=own?
|
||||||
has_update(telegram, dhw->wwChargeDuration_, 10); // value in steps of 15 min
|
has_update(telegram, dhw->wwChargeDuration_, 10); // value in steps of 15 min
|
||||||
has_update(telegram, dhw->wwCharge_, 11); // bool 0xFF on
|
has_update(telegram, dhw->wwCharge_, 11); // 0=off, 0xFF=on
|
||||||
has_update(telegram, dhw->wwDisinfecting_, 5); // 0-off, 0xFF on
|
has_update(telegram, dhw->wwDisinfecting_, 5); // 0=off, 0xFF=on
|
||||||
has_update(telegram, dhw->wwDisinfectHour_, 6); // value in steps of 15 min
|
has_update(telegram, dhw->wwDisinfectHour_, 6); // value in steps of 15 min
|
||||||
has_update(telegram, dhw->wwDisinfectDay_, 7); // 0-6 Day of week, 7 every day
|
has_update(telegram, dhw->wwDisinfectDay_, 7); // 0-6 Day of week, 7 every day
|
||||||
has_update(telegram, dhw->wwDailyHeating_, 8); // 0-off, 0xFF on
|
has_update(telegram, dhw->wwDailyHeating_, 8); // 0=off, 0xFF=on
|
||||||
has_update(telegram, dhw->wwDailyHeatTime_, 9); // value in steps of 15 min
|
has_update(telegram, dhw->wwDailyHeatTime_, 9); // value in steps of 15 min
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2054,7 +2061,7 @@ bool Thermostat::set_wwmode(const char * value, const int8_t id) {
|
|||||||
if (!Helpers::value2enum(value, set, FL_(enum_wwMode5))) {
|
if (!Helpers::value2enum(value, set, FL_(enum_wwMode5))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const uint8_t modes[] = {1, 2, 0, 0, 5};
|
const uint8_t modes[] = {1, 2, 5};
|
||||||
write_command(0x02F5 + dhw, 2, modes[set], 0x02F5 + dhw);
|
write_command(0x02F5 + dhw, 2, modes[set], 0x02F5 + dhw);
|
||||||
} 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))) {
|
||||||
@@ -4170,13 +4177,13 @@ void Thermostat::register_device_values() {
|
|||||||
|
|
||||||
#if defined(EMSESP_STANDALONE)
|
#if defined(EMSESP_STANDALONE)
|
||||||
// if we're just dumping out values, create a single dummy hc
|
// if we're just dumping out values, create a single dummy hc
|
||||||
auto new_hc = std::make_shared<Thermostat::HeatingCircuit>(1, this->model()); // hc = 1
|
auto new_hc = std::make_shared<Thermostat::HeatingCircuit>(1, this->model()); // hc 1
|
||||||
heating_circuits_.push_back(new_hc);
|
heating_circuits_.push_back(new_hc);
|
||||||
register_device_values_hc(new_hc);
|
register_device_values_hc(new_hc);
|
||||||
// TODO also a dhw circuit...
|
|
||||||
auto new_dhw = std::make_shared<Thermostat::DhwCircuit>(0, 1);
|
// also a dhw circuit...
|
||||||
|
auto new_dhw = std::make_shared<Thermostat::DhwCircuit>(0, 1); // offset 0, dhw num 1
|
||||||
dhw_circuits_.push_back(new_dhw);
|
dhw_circuits_.push_back(new_dhw);
|
||||||
// register the device values
|
|
||||||
register_device_values_dhw(new_dhw);
|
register_device_values_dhw(new_dhw);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user