From a424e50936b6c574a4d9cbd7b4829973eaa3103a Mon Sep 17 00:00:00 2001 From: Bob Carroll Date: Mon, 6 Nov 2023 20:13:04 -0600 Subject: [PATCH] calculate midnight on iteration to deal with DST changes --- cherry/bedtime/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cherry/bedtime/__init__.py b/cherry/bedtime/__init__.py index 0f9d4e7..76d20fb 100644 --- a/cherry/bedtime/__init__.py +++ b/cherry/bedtime/__init__.py @@ -157,14 +157,14 @@ async def periodic_rule_check(client, chain, timezone, scene, state, mutex): :param state: shared state dictionary :param mutex: lock for making changes to shared state """ - midnight = timezone.localize( - datetime.combine(now(timezone), datetime.min.time())) - logging.debug(f'Setting time zone to {midnight.tzname()}') - while True: logging.debug('Begin rule check') await mutex.acquire() + midnight = timezone.localize( + datetime.combine(now(timezone), datetime.min.time())) + logging.debug(f'Setting time zone to {midnight.tzname()}') + if now(timezone) >= midnight: for rule in chain.walk(): if now(timezone).time() < rule.time: