Fix loop in tod binary sensor (#51491)

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
This commit is contained in:
J. Nick Koston 2021-06-07 08:21:10 -10:00 committed by GitHub
parent a383198c0c
commit a3146ad150
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 237 additions and 4 deletions

View file

@ -156,6 +156,26 @@ class TodSensor(BinarySensorEntity):
self._time_after += self._after_offset
self._time_before += self._before_offset
def _turn_to_next_day(self):
"""Turn to to the next day."""
if is_sun_event(self._after):
self._time_after = get_astral_event_next(
self.hass, self._after, self._time_after - self._after_offset
)
self._time_after += self._after_offset
else:
# Offset is already there
self._time_after += timedelta(days=1)
if is_sun_event(self._before):
self._time_before = get_astral_event_next(
self.hass, self._before, self._time_before - self._before_offset
)
self._time_before += self._before_offset
else:
# Offset is already there
self._time_before += timedelta(days=1)
async def async_added_to_hass(self):
"""Call when entity about to be added to Home Assistant."""
self._calculate_boudary_time()
@ -182,7 +202,7 @@ class TodSensor(BinarySensorEntity):
if now < self._time_before:
self._next_update = self._time_before
return
self._calculate_boudary_time()
self._turn_to_next_day()
self._next_update = self._time_after
@callback