Skip to content
This repository was archived by the owner on Jan 5, 2024. It is now read-only.

Commit 629ccf3

Browse files
committed
Recalculate the auto on/off time fields
1 parent 33396b7 commit 629ccf3

File tree

2 files changed

+27
-32
lines changed

2 files changed

+27
-32
lines changed

lmdirect/__init__.py

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,8 @@ async def set_auto_on_off_times(
282282
state[self._get_key((day_of_week, OFF, HOUR))] = hour_off
283283
state[self._get_key((day_of_week, OFF, MIN))] = minute_off
284284

285+
self.calculate_auto_sched_times(day_of_week)
286+
285287
self._call_callbacks(entity_type=TYPE_MAIN)
286288

287289
async def set_dose(self, key=None, pulses=None):
@@ -293,11 +295,8 @@ async def set_dose(self, key=None, pulses=None):
293295
f"set_dose: Some parameters not specified {key=} {pulses=}"
294296
)
295297

296-
if isinstance(pulses, str):
297-
pulses = int(pulses)
298-
299-
if isinstance(key, str):
300-
key = int(key)
298+
isinstance(pulses, str) and (pulses := int(pulses))
299+
isinstance(key, str) and (key := int(key))
301300

302301
"""Validate input."""
303302
if not (1 <= pulses <= 1000 and 1 <= key <= 5):
@@ -320,8 +319,7 @@ async def set_dose_hot_water(self, seconds=None):
320319
if seconds is None:
321320
raise InvalidInput("set_dose_hot_water: Seconds not specified")
322321

323-
if isinstance(seconds, str):
324-
seconds = int(seconds)
322+
isinstance(seconds, str) and (seconds := int(seconds))
325323

326324
"""Validate input."""
327325
if not (1 <= seconds <= 30):
@@ -346,9 +344,7 @@ async def set_prebrew_times(self, key=None, seconds_on=None, seconds_off=None):
346344
)
347345

348346
seconds_on, seconds_off = [float(x) for x in [seconds_on, seconds_off]]
349-
350-
if isinstance(key, str):
351-
key = int(key)
347+
isinstance(key, str) and (key := int(key))
352348

353349
"""Validate input."""
354350
if not (
@@ -386,9 +382,7 @@ async def set_coffee_temp(self, temp=None):
386382
if temp is None:
387383
raise InvalidInput("set_coffee__temp: Temperature not specified")
388384

389-
if isinstance(temp, str):
390-
temp = float(temp)
391-
385+
isinstance(temp, str) and (temp := float(temp))
392386
temp = round(temp, 1)
393387

394388
data = self._convert_to_ascii(int(temp * 10), size=2)
@@ -407,9 +401,7 @@ async def set_steam_temp(self, temp=None):
407401
if temp is None:
408402
raise InvalidInput("set_steam_temp: Temperature not specified")
409403

410-
if isinstance(temp, str):
411-
temp = float(temp)
412-
404+
isinstance(temp, str) and (temp := float(temp))
413405
temp = round(temp, 1)
414406

415407
data = self._convert_to_ascii(int(temp * 10), size=2)

lmdirect/connection.py

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,24 @@ async def process_data(self, plaintext):
340340

341341
return retval
342342

343+
def calculate_auto_sched_times(self, key):
344+
time_on_key = self._get_key((key, ON, TIME))
345+
hour_on_key = self._get_key((key, ON, HOUR))
346+
min_on_key = self._get_key((key, ON, MIN))
347+
time_off_key = self._get_key((key, OFF, TIME))
348+
hour_off_key = self._get_key((key, OFF, HOUR))
349+
min_off_key = self._get_key((key, OFF, MIN))
350+
351+
"""Set human-readable "on" time"""
352+
self._current_status[
353+
time_on_key
354+
] = f"{'%02d' % self._current_status[hour_on_key]}:{'%02d' % self._current_status[min_on_key]}"
355+
356+
"""Set human-readable "off" time"""
357+
self._current_status[
358+
time_off_key
359+
] = f"{'%02d' % self._current_status[hour_off_key]}:{'%02d' % self._current_status[min_off_key]}"
360+
343361
async def _populate_items(self, data, cur_msg):
344362
def handle_cached_value(element, value):
345363
"""See if we've stored a temporary value that may take a while to update on the machine"""
@@ -443,22 +461,7 @@ def handle_cached_value(element, value):
443461
) # turn \xff into a solid block (heating element on)
444462
)
445463
elif key in AUTO_SCHED_MAP.values() and elem.index == CALCULATED_VALUE:
446-
time_on_key = self._get_key((key, ON, TIME))
447-
hour_on_key = self._get_key((key, ON, HOUR))
448-
min_on_key = self._get_key((key, ON, MIN))
449-
time_off_key = self._get_key((key, OFF, TIME))
450-
hour_off_key = self._get_key((key, OFF, HOUR))
451-
min_off_key = self._get_key((key, OFF, MIN))
452-
453-
"""Set human-readable "on" time"""
454-
self._current_status[
455-
time_on_key
456-
] = f"{'%02d' % self._current_status[hour_on_key]}:{'%02d' % self._current_status[min_on_key]}"
457-
458-
"""Set human-readable "off" time"""
459-
self._current_status[
460-
time_off_key
461-
] = f"{'%02d' % self._current_status[hour_off_key]}:{'%02d' % self._current_status[min_off_key]}"
464+
self.calculate_auto_sched_times(key)
462465
continue
463466

464467
self._current_status[key] = handle_cached_value(key, value)

0 commit comments

Comments
 (0)