diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 04f2ec738..61ace7d3f 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -2854,7 +2854,7 @@ bool Thermostat::set_controlmode(const char * value, const int8_t id) { uint8_t set; if (model() == EMS_DEVICE_FLAG_RC100) { if (Helpers::value2enum(value, set, FL_(enum_controlmode))) { - write_command(curve_typeids[hc->hc()], 0, set, curve_typeids[hc->hc()]); + write_command(curve_typeids[hc->hc()], 0, set + 1, curve_typeids[hc->hc()]); return true; } } else if (model() == EMS_DEVICE_FLAG_RC300) { @@ -4314,8 +4314,13 @@ void Thermostat::register_device_values_hc(std::shared_ptrsummermode, DeviceValueType::ENUM, FL_(enum_summer), FL_(summermode), DeviceValueUOM::NONE); register_device_value(tag, &hc->hpoperatingstate, DeviceValueType::ENUM, FL_(enum_operatingstate), FL_(hpoperatingstate), DeviceValueUOM::NONE); - register_device_value( - tag, &hc->controlmode, DeviceValueType::ENUM, FL_(enum_controlmode1), FL_(controlmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_controlmode)); + if (model == EMSdevice::EMS_DEVICE_FLAG_RC100) { + register_device_value( + tag, &hc->controlmode, DeviceValueType::ENUM, FL_(enum_controlmode), FL_(controlmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_controlmode)); + } else { + register_device_value( + tag, &hc->controlmode, DeviceValueType::ENUM, FL_(enum_controlmode1), FL_(controlmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_controlmode)); + } register_device_value(tag, &hc->program, DeviceValueType::ENUM, FL_(enum_progMode), FL_(program), DeviceValueUOM::NONE, MAKE_CF_CB(set_program)); register_device_value(tag, &hc->tempautotemp, diff --git a/src/locale_common.h b/src/locale_common.h index fa248e00c..59e965ad8 100644 --- a/src/locale_common.h +++ b/src/locale_common.h @@ -322,7 +322,7 @@ MAKE_ENUM(enum_reducemode1, FL_(outdoor), FL_(room), FL_(reduce)) // RC310 value MAKE_ENUM(enum_nofrostmode, FL_(off), FL_(outdoor), FL_(room)) MAKE_ENUM(enum_nofrostmode1, FL_(room), FL_(outdoor), FL_(room_outdoor)) -MAKE_ENUM(enum_controlmode, FL_(off), FL_(optimized), FL_(simple), FL_(mpc), FL_(room), FL_(power), FL_(constant)) +MAKE_ENUM(enum_controlmode, FL_(optimized), FL_(simple), FL_(na), FL_(room), FL_(power)) MAKE_ENUM(enum_controlmode1, FL_(weather_compensated), FL_(outside_basepoint), FL_(na), FL_(room), FL_(power), FL_(constant)) // RC310 1-4 MAKE_ENUM(enum_controlmode2, FL_(outdoor), FL_(room)) MAKE_ENUM(enum_control, FL_(off), FL_(rc20), FL_(rc3x))