|
15 | 15 | ADAM, |
16 | 16 | ANNA, |
17 | 17 | ATTR_NAME, |
18 | | - ATTR_UNIT_OF_MEASUREMENT, |
19 | | - BINARY_SENSORS, |
20 | 18 | DATA, |
21 | 19 | DEVICE_MEASUREMENTS, |
22 | 20 | DHW_SETPOINT, |
|
29 | 27 | NONE, |
30 | 28 | OFF, |
31 | 29 | P1_MEASUREMENTS, |
32 | | - SENSORS, |
33 | | - SPECIALS, |
34 | | - SWITCHES, |
35 | 30 | TEMP_CELSIUS, |
36 | 31 | THERMOSTAT_CLASSES, |
37 | 32 | TOGGLES, |
38 | 33 | UOM, |
39 | 34 | ActuatorData, |
40 | 35 | ActuatorDataType, |
41 | 36 | ActuatorType, |
42 | | - BinarySensorType, |
43 | 37 | DeviceData, |
44 | 38 | GatewayData, |
45 | 39 | SensorType, |
46 | | - SpecialType, |
47 | | - SwitchType, |
48 | 40 | ThermoLoc, |
49 | 41 | ToggleNameType, |
50 | 42 | ) |
|
58 | 50 | check_model, |
59 | 51 | escape_illegal_xml_characters, |
60 | 52 | format_measure, |
| 53 | + match_on_true_cases, |
61 | 54 | skip_obsolete_measurements, |
62 | 55 | ) |
63 | 56 |
|
@@ -585,29 +578,12 @@ def _appliance_measurements( |
585 | 578 | measurement = new_name |
586 | 579 |
|
587 | 580 | match measurement: |
588 | | - # measurements with states "on" or "off" that need to be passed directly |
589 | | - case "select_dhw_mode": |
590 | | - data["select_dhw_mode"] = appl_p_loc.text |
591 | | - case _ as measurement if measurement in BINARY_SENSORS: |
592 | | - bs_key = cast(BinarySensorType, measurement) |
593 | | - bs_value = appl_p_loc.text in ("on", "true") |
594 | | - data["binary_sensors"][bs_key] = bs_value |
595 | | - case _ as measurement if measurement in SENSORS: |
596 | | - s_key = cast(SensorType, measurement) |
597 | | - s_value = format_measure( |
598 | | - appl_p_loc.text, getattr(attrs, ATTR_UNIT_OF_MEASUREMENT) |
599 | | - ) |
600 | | - data["sensors"][s_key] = s_value |
601 | | - case _ as measurement if measurement in SWITCHES: |
602 | | - sw_key = cast(SwitchType, measurement) |
603 | | - sw_value = appl_p_loc.text in ("on", "true") |
604 | | - data["switches"][sw_key] = sw_value |
605 | | - case _ as measurement if measurement in SPECIALS: |
606 | | - sp_key = cast(SpecialType, measurement) |
607 | | - sp_value = appl_p_loc.text in ("on", "true") |
608 | | - data[sp_key] = sp_value |
609 | 581 | case "elga_status_code": |
610 | 582 | data["elga_status_code"] = int(appl_p_loc.text) |
| 583 | + case "select_dhw_mode": |
| 584 | + data["select_dhw_mode"] = appl_p_loc.text |
| 585 | + |
| 586 | + match_on_true_cases(measurement, attrs, appl_p_loc, data) |
611 | 587 |
|
612 | 588 | i_locator = f'.//logs/interval_log[type="{measurement}"]/period/measurement' |
613 | 589 | if (appl_i_loc := appliance.find(i_locator)) is not None: |
|
0 commit comments