@@ -83,27 +83,34 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i
83
83
84
84
// RC20
85
85
} 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));
95
100
}
96
- // remote thermostat uses only 0xAF
97
- register_telegram_type (0xAF , " RC20Remote" , false , MAKE_PF_CB (process_RC20Remote));
98
101
// RC20 newer
99
102
} 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));
105
113
}
106
- register_telegram_type (0xAF , " RC20Remote" , false , MAKE_PF_CB (process_RC20Remote));
107
114
// RC30
108
115
} else if (model == EMSdevice::EMS_DEVICE_FLAG_RC30) {
109
116
monitor_typeids = {0x41 };
0 commit comments