mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 08:19:52 +03:00
fixed set_switchtemp, process_RC20Timer
This commit is contained in:
@@ -629,7 +629,7 @@ void Thermostat::process_RC20Timer(std::shared_ptr<const Telegram> telegram) {
|
||||
char data[sizeof(hc->switchtime1)];
|
||||
uint8_t no = telegram->offset / 2;
|
||||
uint8_t day = telegram->message_data[0] >> 5;
|
||||
uint8_t temp = telegram->message_data[0] & 1;
|
||||
uint8_t temp = telegram->message_data[0] & 7;
|
||||
uint8_t time = telegram->message_data[1];
|
||||
|
||||
std::string sday = read_flash_string(FL_(enum_dayOfWeek)[day]);
|
||||
@@ -2480,6 +2480,8 @@ bool Thermostat::set_switchtime(const char * value, const uint16_t type_id, char
|
||||
}
|
||||
if (strlen(value) > 13 && value[12] == 'o') {
|
||||
on = value[13] == 'n' ? 1 : 0;
|
||||
} else if (strlen(value) == 14 && value[12] == 'T') {
|
||||
on = value[13] - '0';
|
||||
} else if (strlen(value) == 13) {
|
||||
on = value[12] - '0';
|
||||
}
|
||||
@@ -2499,6 +2501,8 @@ bool Thermostat::set_switchtime(const char * value, const uint16_t type_id, char
|
||||
uint8_t max_on = 3;
|
||||
if ((model() == EMS_DEVICE_FLAG_RC35) || (model() == EMS_DEVICE_FLAG_RC30_N)) {
|
||||
max_on = 1;
|
||||
} else if (model() == EMS_DEVICE_FLAG_RC30) {
|
||||
max_on = 4;
|
||||
}
|
||||
if (no > 41 || time > 0x90 || (on > max_on && on != 7)) {
|
||||
// LOG_WARNING(F("Setting switchtime: Invalid data: %s"), value);
|
||||
@@ -2509,7 +2513,7 @@ bool Thermostat::set_switchtime(const char * value, const uint16_t type_id, char
|
||||
std::string sday = read_flash_string(FL_(enum_dayOfWeek)[day]);
|
||||
if ((model() == EMS_DEVICE_FLAG_RC35) || (model() == EMS_DEVICE_FLAG_RC30_N)) {
|
||||
snprintf(out, len, "%02d %s %02d:%02d %s", no, sday.c_str(), time / 6, 10 * (time % 6), on ? "on" : "off");
|
||||
} else if (model() == EMS_DEVICE_FLAG_RC20) {
|
||||
} else if ((model() == EMS_DEVICE_FLAG_RC20) || (model() == EMS_DEVICE_FLAG_RC30)){
|
||||
snprintf(out, len, "%02d %s %02d:%02d T%d", no, sday.c_str(), time / 6, 10 * (time % 6), on);
|
||||
} else {
|
||||
std::string son = read_flash_string(FL_(enum_switchmode)[on]);
|
||||
@@ -3691,7 +3695,7 @@ void Thermostat::register_device_values_hc(std::shared_ptr<Thermostat::HeatingCi
|
||||
register_device_value(tag, &hc->daymidtemp, DeviceValueType::UINT, FL_(div2), FL_(daymidtemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_daymidtemp));
|
||||
register_device_value(tag, &hc->daytemp, DeviceValueType::UINT, FL_(div2), FL_(dayhightemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_daytemp));
|
||||
register_device_value(tag, &hc->nighttemp, DeviceValueType::UINT, FL_(div2), FL_(nighttemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_nighttemp));
|
||||
register_device_value(tag, &hc->switchtime1, DeviceValueType::STRING, FL_(tpl_switchtime), FL_(switchtime), DeviceValueUOM::NONE, MAKE_CF_CB(set_switchtime1));
|
||||
register_device_value(tag, &hc->switchtime1, DeviceValueType::STRING, FL_(tpl_switchtime1), FL_(switchtime), DeviceValueUOM::NONE, MAKE_CF_CB(set_switchtime1));
|
||||
break;
|
||||
case EMS_DEVICE_FLAG_RC20_N:
|
||||
register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode2), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode));
|
||||
@@ -3730,7 +3734,7 @@ void Thermostat::register_device_values_hc(std::shared_ptr<Thermostat::HeatingCi
|
||||
register_device_value(tag, &hc->pause, DeviceValueType::UINT, nullptr, FL_(pause), DeviceValueUOM::HOURS, MAKE_CF_CB(set_pause));
|
||||
register_device_value(tag, &hc->party, DeviceValueType::UINT, nullptr, FL_(party), DeviceValueUOM::HOURS, MAKE_CF_CB(set_party));
|
||||
register_device_value(
|
||||
tag, &hc->switchtime1, DeviceValueType::STRING, FL_(tpl_switchtime), FL_(switchtime1), DeviceValueUOM::NONE, MAKE_CF_CB(set_switchtime1));
|
||||
tag, &hc->switchtime1, DeviceValueType::STRING, FL_(tpl_switchtime1), FL_(switchtime1), DeviceValueUOM::NONE, MAKE_CF_CB(set_switchtime1));
|
||||
register_device_value(
|
||||
tag, &hc->heatingtype, DeviceValueType::ENUM, FL_(enum_heatingtype), FL_(heatingtype), DeviceValueUOM::NONE, MAKE_CF_CB(set_heatingtype));
|
||||
register_device_value(
|
||||
|
||||
Reference in New Issue
Block a user