Skip to content

Commit e3d162a

Browse files
committed
Simplify _schedules()
1 parent 21d97b1 commit e3d162a

File tree

1 file changed

+6
-30
lines changed

1 file changed

+6
-30
lines changed

plugwise/helper.py

Lines changed: 6 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,40 +1081,18 @@ def _schedules(self, location: str) -> tuple[list[str], str, str | None]:
10811081
if not (rule_ids := self._rule_ids_by_tag(tag, location)):
10821082
return available, selected, None
10831083

1084-
schedules: dict[str, dict[str, float]] = {}
1084+
schedules: list[str] = []
10851085
for rule_id, loc_id in rule_ids.items():
10861086
name = self._domain_objects.find(f'./rule[@id="{rule_id}"]/name').text
1087-
schedule: dict[str, float] = {}
1088-
temp: dict[str, float] = {}
1087+
schedule = False
10891088
locator = f'./rule[@id="{rule_id}"]/directives'
10901089
directives = self._domain_objects.find(locator)
10911090
count = 0
1092-
for directive in directives:
1093-
entry = directive.find("then").attrib
1094-
keys, dummy = zip(*entry.items())
1095-
if str(keys[0]) == "preset":
1096-
temp[directive.attrib["time"]] = float(
1097-
self._presets(loc_id)[entry["preset"]][0]
1098-
)
1099-
if self.cooling_active:
1100-
temp[directive.attrib["time"]] = float(
1101-
self._presets(loc_id)[entry["preset"]][1]
1102-
)
1103-
else:
1104-
if "heating_setpoint" in entry:
1105-
temp[directive.attrib["time"]] = float(
1106-
entry["heating_setpoint"]
1107-
)
1108-
if self.cooling_active:
1109-
temp[directive.attrib["time"]] = float(
1110-
entry["cooling_setpoint"]
1111-
)
1112-
else:
1113-
temp[directive.attrib["time"]] = float(entry["setpoint"])
1091+
for _ in directives:
11141092
count += 1
11151093

11161094
if count > 1:
1117-
schedule = temp
1095+
schedule = True
11181096
else:
11191097
# Schedule with less than 2 items
11201098
LOGGER.debug("Invalid schedule, only one entry, ignoring.")
@@ -1124,17 +1102,15 @@ def _schedules(self, location: str) -> tuple[list[str], str, str | None]:
11241102
if location == loc_id:
11251103
selected = name
11261104
self._last_active[location] = selected
1127-
schedules[name] = schedule
1105+
schedules.append(name)
11281106

11291107
if schedules:
11301108
available.remove(NONE)
11311109
last_used = self._last_used_schedule(location, schedules)
11321110

11331111
return available, selected, last_used
11341112

1135-
def _last_used_schedule(
1136-
self, loc_id: str, schedules: dict[str, dict[str, float]]
1137-
) -> str | None:
1113+
def _last_used_schedule(self, loc_id: str, schedules: list[str]) -> str | None:
11381114
"""Helper-function for smile.py: _device_data_climate().
11391115
Determine the last-used schedule based on the location or the modified date.
11401116
"""

0 commit comments

Comments
 (0)