@@ -1023,13 +1023,12 @@ void Thermostat::process_RC300Set(std::shared_ptr<const Telegram> telegram) {
1023
1023
// has_update(telegram, hc->selTemp, 10, 1); // single byte conversion, value is * 2 - manual
1024
1024
1025
1025
telegram->read_value (hc->mode_new , 21 ); // 0-off, 1-manual, 2-auto
1026
- if (hc->mode_new <= 2 ) {
1026
+ if (Helpers::hasValue ( hc->mode_new ) ) {
1027
1027
has_update (hc->mode , hc->mode_new );
1028
1028
} else {
1029
1029
uint8_t mode = hc->mode == 2 ? 0xFF : 0 ; // auto : manual
1030
- if (telegram->read_value (mode, 0 )) {
1031
- has_update (hc->mode , mode == 0xFF ? 2 : 1 );
1032
- }
1030
+ telegram->read_value (mode, 0 );
1031
+ has_update (hc->mode , mode == 0xFF ? 2 : 1 );
1033
1032
}
1034
1033
has_update (telegram, hc->daytemp , 2 ); // is * 2
1035
1034
has_update (telegram, hc->nighttemp , 4 ); // is * 2
@@ -2598,7 +2597,7 @@ bool Thermostat::set_mode_n(const uint8_t mode, const uint8_t hc_num) {
2598
2597
if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC10) {
2599
2598
hc->mode = set_mode_value >> 1 ;
2600
2599
} else if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC300 || model_ == EMSdevice::EMS_DEVICE_FLAG_RC100) {
2601
- hc->mode = set_mode_value ? 1 : 0 ;
2600
+ hc->mode = Helpers::hasValue (hc-> mode_new ) ? set_mode_value : set_mode_value == 0xFF ? 2 : 1 ;
2602
2601
} else if (model_ == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) {
2603
2602
hc->mode = set_mode_value - 1 ;
2604
2603
} else {
0 commit comments