diff --git a/src/device_library.h b/src/device_library.h index 4890d2d82..41730b710 100644 --- a/src/device_library.h +++ b/src/device_library.h @@ -93,7 +93,7 @@ { 93, DeviceType::THERMOSTAT, "RC20RF", DeviceFlags::EMS_DEVICE_FLAG_RC20}, // 0x19 { 94, DeviceType::THERMOSTAT, "RFM20 Remote", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // 0x18 {151, DeviceType::THERMOSTAT, "RC25", DeviceFlags::EMS_DEVICE_FLAG_RC25}, // 0x17 -{157, DeviceType::THERMOSTAT, "RC200/CW100", DeviceFlags::EMS_DEVICE_FLAG_RC100}, // 0x18 +{157, DeviceType::THERMOSTAT, "RC200/CW100/CR120", DeviceFlags::EMS_DEVICE_FLAG_RC100}, // 0x18,, CR120 v22 is FLAG_BC400 {158, DeviceType::THERMOSTAT, "RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410", DeviceFlags::EMS_DEVICE_FLAG_RC300}, // 0x10 {165, DeviceType::THERMOSTAT, "RC100/Moduline 1000/1010", DeviceFlags::EMS_DEVICE_FLAG_RC100}, // 0x18, 0x38 {172, DeviceType::THERMOSTAT, "Rego 2000/3000", DeviceFlags::EMS_DEVICE_FLAG_R3000}, // 0x10 diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 8607fd2a9..b6d541ac9 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -4351,6 +4351,7 @@ void Thermostat::register_device_values_hc(std::shared_ptrmode_new, DeviceValueType::ENUM, FL_(enum_mode2), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); } else { + hc->mode_new = EMS_VALUE_UINT8_NOTSET; register_device_value(tag, &hc->mode, DeviceValueType::ENUM, FL_(enum_mode), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode)); } register_device_value(tag, &hc->modetype, DeviceValueType::ENUM, FL_(enum_modetype), FL_(modetype), DeviceValueUOM::NONE); diff --git a/src/telegram.cpp b/src/telegram.cpp index ef0b114bf..5bc116c36 100644 --- a/src/telegram.cpp +++ b/src/telegram.cpp @@ -336,8 +336,8 @@ void TxService::send_telegram(const QueuedTxTelegram & tx_telegram) { telegram_raw[3] = telegram->offset; // EMS+ has different format for read and write - if (telegram->operation == Telegram::Operation::TX_WRITE) { - // WRITE + if (telegram->operation != Telegram::Operation::TX_READ) { + // WRITE/NONE telegram_raw[4] = (telegram->type_id >> 8) - 1; // type, 1st byte, high-byte, subtract 0x100 telegram_raw[5] = telegram->type_id & 0xFF; // type, 2nd byte, low-byte message_p = 6; @@ -382,7 +382,7 @@ void TxService::send_telegram(const QueuedTxTelegram & tx_telegram) { } LOG_DEBUG("Sending %s Tx [#%d], telegram: %s", - (telegram->operation == Telegram::Operation::TX_WRITE) ? ("write") : ("read"), + (telegram->operation != Telegram::Operation::TX_READ) ? ("write") : ("read"), tx_telegram.id_, Helpers::data_to_hex(telegram_raw, length - 1).c_str()); // exclude the last CRC byte