Skip to content

Commit e658a70

Browse files
committed
Optimize midnight rollover trigger
1 parent 9bee069 commit e658a70

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

plugwise/nodes/circle.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,8 @@ def _response_energy_counters(self, message: CircleEnergyCountersResponse):
656656
)
657657
_local_hour = datetime.now().hour
658658
_utc_midnight_timestamp = _utc_hour_timestamp - timedelta(hours=_local_hour)
659+
_midnight_rollover = False
660+
659661
for _slot in range(1, 5):
660662
_log_timestamp = getattr(message, "logdate%d" % (_slot,)).value
661663
if _log_timestamp is None:
@@ -668,7 +670,11 @@ def _response_energy_counters(self, message: CircleEnergyCountersResponse):
668670
if message.logaddr.value == self._last_log_address:
669671
self._energy_last_populated_slot = _slot
670672

671-
# Check for midnight rollover
673+
# Store most recent timestamp of collected pulses
674+
if self._energy_last_collected_timestamp < _log_timestamp:
675+
self._energy_last_collected_timestamp = _log_timestamp
676+
677+
# Trigger midnight rollover
672678
if (
673679
_log_timestamp == _utc_midnight_timestamp
674680
and not self._energy_rollover_day_finished
@@ -679,11 +685,7 @@ def _response_energy_counters(self, message: CircleEnergyCountersResponse):
679685
str(_local_midnight_timestamp),
680686
)
681687
self._energy_consumption_today_reset = _local_midnight_timestamp
682-
self._update_energy_today_now(False, True, True)
683-
684-
# Store most recent timestamp of collected pulses
685-
if self._energy_last_collected_timestamp < _log_timestamp:
686-
self._energy_last_collected_timestamp = _log_timestamp
688+
_midnight_rollover = True
687689

688690
# Reset energy collection progress
689691
if (
@@ -704,7 +706,10 @@ def _response_energy_counters(self, message: CircleEnergyCountersResponse):
704706
_utc_midnight_timestamp - timedelta(hours=23),
705707
_utc_midnight_timestamp,
706708
)
707-
self._update_energy_today_now(False, False, False)
709+
if _midnight_rollover:
710+
self._update_energy_today_now(False, True, True)
711+
else:
712+
self._update_energy_today_now(False, False, False)
708713

709714
# Cleanup energy history for more than 8 day's ago
710715
_8_days_ago = datetime.utcnow().replace(

0 commit comments

Comments
 (0)