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