|
169 | 169 | WSB3_240HUM_DATA, |
170 | 170 | DMD3_1_DATA, |
171 | 171 | GSB3_DATA, |
| 172 | + GSB3_V2_DATA, |
172 | 173 | RC3_610DALI_DATA, |
173 | 174 | FA3_612M_DATA, |
174 | 175 |
|
|
208 | 209 | Climate_action, |
209 | 210 | Climate_modes, |
210 | 211 |
|
| 212 | + MSB3_40, |
| 213 | + MSB3_60, |
| 214 | + MSB3_90, |
| 215 | + GSB3_40_V2, |
| 216 | + GSB3_60_V2, |
| 217 | + GSB3_90_V2, |
| 218 | + GSB3_40SX_V2, |
| 219 | + GSB3_60SX_V2, |
| 220 | + GSB3_90SX_V2, |
| 221 | + |
211 | 222 | BITS, |
212 | 223 | INTEGERS, |
213 | 224 | NUMBER, |
@@ -579,7 +590,7 @@ def __find_ha_value(self) -> None: |
579 | 590 | overflows.append(alerts[15-i] == "1") |
580 | 591 |
|
581 | 592 | digital_inputs = self.__trim_inels_status_values( |
582 | | - SA3_012M_DATA, SA3_012M, "") |
| 593 | + SA3_022M_DATA, SW, "") |
583 | 594 | digital_inputs = f"0x{digital_inputs}" |
584 | 595 | digital_inputs = f"{int(digital_inputs, 16):0>16b}" |
585 | 596 |
|
@@ -646,7 +657,7 @@ def __find_ha_value(self) -> None: |
646 | 657 | for relay in self.__trim_inels_status_bytes(IOU3_108M_DATA, RELAY): |
647 | 658 | re.append((int(relay, 16) & 1) != 0) |
648 | 659 |
|
649 | | - temps = self.__trim_inels_status_values(IOU3_108M_DATA, TEMP_IN) |
| 660 | + temps = self.__trim_inels_status_values(IOU3_108M_DATA, TEMP_IN, "") |
650 | 661 | temps = [temps[0:4], temps[4:8]] |
651 | 662 |
|
652 | 663 | digital_inputs = self.__trim_inels_status_values( |
@@ -1224,7 +1235,53 @@ def __find_ha_value(self) -> None: |
1224 | 1235 | temp_in=temp_in, |
1225 | 1236 | temp_out=temp_out, |
1226 | 1237 | ) |
1227 | | - elif self.__device_type is LIGHT: # dimmer |
| 1238 | + elif self.__inels_type in [GSB3_40_V2, GSB3_60_V2, GSB3_90_V2, GSB3_40SX_V2, GSB3_60SX_V2, GSB3_90SX_V2, MSB3_40, MSB3_60, MSB3_90]: |
| 1239 | + switches = self.__trim_inels_status_values(GSB3_V2_DATA, SW, "") |
| 1240 | + switches = f"0x{switches}" |
| 1241 | + switches = f"{int(switches, 16):0>8b}" |
| 1242 | + |
| 1243 | + digital_inputs = self.__trim_inels_status_values(GSB3_V2_DATA, DIN, "") |
| 1244 | + digital_inputs = f"0x{digital_inputs}" |
| 1245 | + digital_inputs = f"{int(digital_inputs, 16):0>8b}" |
| 1246 | + |
| 1247 | + interface=[] |
| 1248 | + |
| 1249 | + # Determine the number of buttons to process based on INTERFACE_BUTTON_COUNT |
| 1250 | + gsb3_amount = GSB3_AMOUNTS[self.__inels_type] |
| 1251 | + num_buttons = gsb3_amount if gsb3_amount < 8 else gsb3_amount - 1 |
| 1252 | + |
| 1253 | + # Append states from 'switches' based on the number of buttons |
| 1254 | + for i in range(num_buttons): |
| 1255 | + interface.append(switches[7 - i] == "1") |
| 1256 | + |
| 1257 | + # If there are 8 or more buttons, use the last digital input for the button |
| 1258 | + if gsb3_amount >= 8: |
| 1259 | + interface.append(digital_inputs[7] == "1") |
| 1260 | + |
| 1261 | + din=[digital_inputs[6] == "1"] |
| 1262 | + prox=digital_inputs[4] == "1" |
| 1263 | + |
| 1264 | + temp_in = self.__trim_inels_status_values(GSB3_V2_DATA, TEMP_IN, "") |
| 1265 | + |
| 1266 | + light_in = self.__trim_inels_status_values(GSB3_V2_DATA, LIGHT_IN, "") |
| 1267 | + |
| 1268 | + ain = self.__trim_inels_status_values(GSB3_V2_DATA, AIN, "") |
| 1269 | + |
| 1270 | + humidity = self.__trim_inels_status_values(GSB3_V2_DATA, HUMIDITY, "") |
| 1271 | + |
| 1272 | + dewpoint = self.__trim_inels_status_values(GSB3_V2_DATA, DEW_POINT, "") |
| 1273 | + |
| 1274 | + self.__ha_value = new_object( |
| 1275 | + interface=interface, |
| 1276 | + din=din, |
| 1277 | + prox=prox, |
| 1278 | + temp_in=temp_in, |
| 1279 | + light_in=light_in, |
| 1280 | + ain=ain, |
| 1281 | + humidity=humidity, |
| 1282 | + dewpoint=dewpoint, |
| 1283 | + ) |
| 1284 | + elif self.__device_type == LIGHT: # dimmer |
1228 | 1285 | if self.__inels_type in [RF_SINGLE_DIMMER, RF_DIMMER]: |
1229 | 1286 | if self.inels_status_value is None: |
1230 | 1287 | _LOGGER.info("inels_status_value was None for RFDAC") |
@@ -1418,8 +1475,8 @@ def __find_ha_value(self) -> None: |
1418 | 1475 | aout_val=[] |
1419 | 1476 | aouts = self.__trim_inels_status_bytes(DCDA_33M_DATA, OUT) |
1420 | 1477 | for i in range(len(aouts)): |
1421 | | - brightness = int(i, 16) |
1422 | | - brightness = brightness if brightness > 100 else 100 |
| 1478 | + brightness = int(aouts[i], 16) |
| 1479 | + brightness = brightness if brightness < 100 else 100 |
1423 | 1480 | aout_val.append(brightness) |
1424 | 1481 |
|
1425 | 1482 | aout=[] |
@@ -2133,11 +2190,12 @@ def __find_ha_value(self) -> None: |
2133 | 2190 | switches = f"{int(switches, 16):0>8b}" |
2134 | 2191 |
|
2135 | 2192 | digital_inputs = self.__trim_inels_status_values( |
2136 | | - GLASS_CONTROLLER_DATA, SW, "") |
| 2193 | + GLASS_CONTROLLER_DATA, DIN, "") |
2137 | 2194 | digital_inputs = f"0x{digital_inputs}" |
2138 | 2195 | digital_inputs = f"{int(digital_inputs, 16):0>8b}" |
2139 | 2196 |
|
2140 | 2197 | interface = [] |
| 2198 | + din = [] |
2141 | 2199 | for i in range(3): |
2142 | 2200 | interface.append(switches[6-2*i]=="1") |
2143 | 2201 | for i in range(2): |
@@ -2316,7 +2374,7 @@ def __find_inels_value(self) -> None: |
2316 | 2374 | elif self.__inels_type in DCDA_33M: |
2317 | 2375 | set_val = "00\n"*4 |
2318 | 2376 | for i in range(4): |
2319 | | - aout = self.__ha_value.out[i].brightness |
| 2377 | + aout = self.__ha_value.aout[i].brightness |
2320 | 2378 | set_val += f"{aout:02X}\n" |
2321 | 2379 | self.__inels_set_value = set_val |
2322 | 2380 | elif self.__inels_type is DA3_66M: |
@@ -2370,7 +2428,7 @@ def __find_inels_value(self) -> None: |
2370 | 2428 | self.__inels_set_value = f"{''.join([SIMPLE_SHUTTER_STATE_SET[x.state] for x in self.__ha_value.simple_shutters])}" |
2371 | 2429 | elif self.__device_type is CLIMATE: |
2372 | 2430 | if self.__inels_type is RF_WIRELESS_THERMOVALVE: |
2373 | | - required_temp = int(round(self.__ha_value.climate.required * 2, 0)) |
| 2431 | + required_temp = int(round(self.__ha_value.thermovalve.required * 2, 0)) |
2374 | 2432 | self.__inels_set_value = f"00\n{required_temp:02X}\n00\n" |
2375 | 2433 | elif self.__inels_type is VIRT_CONTR: |
2376 | 2434 | cc = self.ha_value.climate_controller |
|
0 commit comments