Skip to content

Commit 0163aa0

Browse files
committed
Move code to helper.py, simplify and improve
1 parent df8513d commit 0163aa0

File tree

2 files changed

+20
-35
lines changed

2 files changed

+20
-35
lines changed

plugwise/helper.py

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -612,8 +612,11 @@ def _all_appliances(self) -> None:
612612
appl.location = None
613613
if (appl_loc := appliance.find("location")) is not None:
614614
appl.location = appl_loc.attrib["id"]
615-
# Provide a home_location for legacy_anna
616-
elif self._smile_legacy and self.smile_type == "thermostat":
615+
# Provide a home_location for legacy_anna, don't assign the _home_location
616+
# to thermostat-devices without a location, they are not active
617+
elif (
618+
self._smile_legacy and self.smile_type == "thermostat"
619+
) or appl.pwclass not in THERMOSTAT_CLASSES:
617620
appl.location = self._home_location
618621

619622
appl.dev_id = appliance.attrib["id"]
@@ -668,6 +671,9 @@ def _match_locations(self) -> dict[str, ThermoLoc]:
668671
for location_id, location_details in self._loc_data.items():
669672
for _, appliance_details in self._appl_data.items():
670673
if appliance_details["location"] == location_id:
674+
location_details.update(
675+
{"master": None, "master_prio": 0, "slaves": set()}
676+
)
671677
matched_locations[location_id] = location_details
672678

673679
return matched_locations
@@ -869,9 +875,7 @@ def _rank_thermostat(
869875
Rank the thermostat based on appliance_details: master or slave."""
870876
appl_class = appliance_details["dev_class"]
871877
appl_d_loc = appliance_details["location"]
872-
if (
873-
loc_id == appl_d_loc or (self._smile_legacy and not appl_d_loc)
874-
) and appl_class in thermo_matching:
878+
if loc_id == appl_d_loc and appl_class in thermo_matching:
875879

876880
# Pre-elect new master
877881
if thermo_matching[appl_class] > self._thermo_locs[loc_id]["master_prio"]:
@@ -888,7 +892,8 @@ def _rank_thermostat(
888892

889893
def _scan_thermostats(self) -> None:
890894
"""Helper-function for smile.py: get_all_devices().
891-
Update locations with thermostat ranking results.
895+
Update locations with thermostat ranking results and use
896+
the result to update the device_class of slave thermostats.
892897
"""
893898
if self.smile_type != "thermostat":
894899
pass
@@ -902,22 +907,16 @@ def _scan_thermostats(self) -> None:
902907
"thermostatic_radiator_valve": 1,
903908
}
904909

905-
for loc_id, location_details in self._thermo_locs.items():
906-
self._thermo_locs[loc_id] = location_details
907-
908-
if loc_id != self._home_location:
909-
self._thermo_locs[loc_id].update(
910-
{"master": None, "master_prio": 0, "slaves": set()}
911-
)
912-
elif self._smile_legacy:
913-
self._thermo_locs[loc_id].update(
914-
{"master": None, "master_prio": 0, "slaves": set()}
915-
)
910+
for loc_id in self._thermo_locs:
911+
for appl_id, details in self._appl_data.items():
912+
self._rank_thermostat(thermo_matching, loc_id, appl_id, details)
916913

917-
for appliance_id, appliance_details in self._appl_data.items():
918-
self._rank_thermostat(
919-
thermo_matching, loc_id, appliance_id, appliance_details
920-
)
914+
# Update slave thermostat class where needed
915+
for appl_id, details in self._appl_data.items():
916+
if (loc_id := details["location"]) in self._thermo_locs:
917+
tl_loc_id = self._thermo_locs[loc_id]
918+
if "slaves" in tl_loc_id and appl_id in tl_loc_id["slaves"]:
919+
details["dev_class"] = "thermo_sensor"
921920

922921
def _thermostat_uri_legacy(self) -> str:
923922
"""Helper-function for _thermostat_uri().

plugwise/smile.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -72,20 +72,6 @@ def get_all_devices(self) -> None:
7272
"""Determine the devices present from the obtained XML-data."""
7373
self._scan_thermostats()
7474

75-
for appliance, details in self._appl_data.items():
76-
# Don't assign the _home_location to thermostat-devices without a location, they are not active
77-
if (
78-
details.get("location") is None
79-
and details["dev_class"] not in THERMOSTAT_CLASSES
80-
):
81-
details["location"] = self._home_location
82-
83-
# Override slave thermostat class
84-
if (loc_id := details["location"]) in self._thermo_locs:
85-
tl_loc_id = self._thermo_locs[loc_id]
86-
if "slaves" in tl_loc_id and appliance in tl_loc_id["slaves"]:
87-
details["dev_class"] = "thermo_sensor"
88-
8975
if group_data := self._group_switches():
9076
self._appl_data.update(group_data)
9177

0 commit comments

Comments
 (0)