Skip to content

Commit e7b7002

Browse files
committed
check RC20 master/remote thermostat, #1378
1 parent c934b9e commit e7b7002

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

src/devices/thermostat.cpp

+24-17
Original file line numberDiff line numberDiff line change
@@ -83,27 +83,34 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i
8383

8484
// RC20
8585
} else if (model == EMSdevice::EMS_DEVICE_FLAG_RC20) {
86-
monitor_typeids = {0x91};
87-
set_typeids = {0xA8};
88-
curve_typeids = {0x90};
89-
timer_typeids = {0x8F};
90-
for (uint8_t i = 0; i < monitor_typeids.size(); i++) {
91-
register_telegram_type(monitor_typeids[i], "RC20Monitor", false, MAKE_PF_CB(process_RC20Monitor));
92-
register_telegram_type(set_typeids[i], "RC20Set", false, MAKE_PF_CB(process_RC20Set));
93-
register_telegram_type(curve_typeids[i], "RC20Temp", false, MAKE_PF_CB(process_RC20Temp));
94-
register_telegram_type(timer_typeids[i], "RC20Timer", false, MAKE_PF_CB(process_RC20Timer));
86+
if (device_id == 0x17) { // master
87+
monitor_typeids = {0x91};
88+
set_typeids = {0xA8};
89+
curve_typeids = {0x90};
90+
timer_typeids = {0x8F};
91+
for (uint8_t i = 0; i < monitor_typeids.size(); i++) {
92+
register_telegram_type(monitor_typeids[i], "RC20Monitor", false, MAKE_PF_CB(process_RC20Monitor));
93+
register_telegram_type(set_typeids[i], "RC20Set", false, MAKE_PF_CB(process_RC20Set));
94+
register_telegram_type(curve_typeids[i], "RC20Temp", false, MAKE_PF_CB(process_RC20Temp));
95+
register_telegram_type(timer_typeids[i], "RC20Timer", false, MAKE_PF_CB(process_RC20Timer));
96+
}
97+
} else {
98+
// remote thermostat uses only 0xAF
99+
register_telegram_type(0xAF, "RC20Remote", false, MAKE_PF_CB(process_RC20Remote));
95100
}
96-
// remote thermostat uses only 0xAF
97-
register_telegram_type(0xAF, "RC20Remote", false, MAKE_PF_CB(process_RC20Remote));
98101
// RC20 newer
99102
} else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC20_N) || (model == EMSdevice::EMS_DEVICE_FLAG_RC25)) {
100-
monitor_typeids = {0xAE};
101-
set_typeids = {0xAD};
102-
for (uint8_t i = 0; i < monitor_typeids.size(); i++) {
103-
register_telegram_type(monitor_typeids[i], "RC20Monitor", false, MAKE_PF_CB(process_RC20Monitor_2));
104-
register_telegram_type(set_typeids[i], "RC20Set", false, MAKE_PF_CB(process_RC20Set_2));
103+
if (device_id == 0x17) { // master
104+
monitor_typeids = {0xAE};
105+
set_typeids = {0xAD};
106+
for (uint8_t i = 0; i < monitor_typeids.size(); i++) {
107+
register_telegram_type(monitor_typeids[i], "RC20Monitor", false, MAKE_PF_CB(process_RC20Monitor_2));
108+
register_telegram_type(set_typeids[i], "RC20Set", false, MAKE_PF_CB(process_RC20Set_2));
109+
}
110+
} else {
111+
// remote thermostat uses only 0xAF
112+
register_telegram_type(0xAF, "RC20Remote", false, MAKE_PF_CB(process_RC20Remote));
105113
}
106-
register_telegram_type(0xAF, "RC20Remote", false, MAKE_PF_CB(process_RC20Remote));
107114
// RC30
108115
} else if (model == EMSdevice::EMS_DEVICE_FLAG_RC30) {
109116
monitor_typeids = {0x41};

0 commit comments

Comments
 (0)