diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 58d563a91..b34421a44 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -2401,8 +2401,8 @@ bool Thermostat::set_control(const char * value, const int8_t id) { } // BC400 // 1-RC100, 2-RC100H, 3-RC200 - } else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_UI800) { - if (Helpers::value2enum(value, ctrl, model() == EMSdevice::EMS_DEVICE_FLAG_UI800 ? FL_(enum_control3) : FL_(enum_control2))) { + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400) { + if (Helpers::value2enum(value, ctrl, FL_(enum_control2))) { write_command(hpmode_typeids[hc->hc()], 3, ctrl); hc->control = ctrl; // set in advance, dont wait for verify if (hc->remotetemp != EMS_VALUE_INT16_NOTSET && ctrl > 0) { @@ -2421,6 +2421,20 @@ bool Thermostat::set_control(const char * value, const int8_t id) { } return true; } + } else if (model() == EMSdevice::EMS_DEVICE_FLAG_UI800) { + if (Helpers::value2enum(value, ctrl, FL_(enum_control3))) { + write_command(hpmode_typeids[hc->hc()], 3, ctrl); + hc->control = ctrl; // set in advance, dont wait for verify + if (hc->remotetemp != EMS_VALUE_INT16_NOTSET && ctrl > 0) { + if (ctrl == 6) { + Roomctrl::set_remotetemp(Roomctrl::RT800, hc->hc(), hc->remotetemp); + } else { + hc->remotetemp = EMS_VALUE_INT16_NOTSET; + Roomctrl::set_remotetemp(0, hc->hc(), hc->remotetemp); + } + } + return true; + } // RC100 or RC300 // 1-RC200, 2-RC100, 3-RC100H } else if (isRC300() || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {