@@ -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