@@ -681,7 +681,17 @@ def request_energy_counters(self, log_address=None, callback=None):
681681 # TODO: validate range of log_addresses
682682 self ._energy_history_collecting = True
683683 self ._energy_history_collecting_timestamp = datetime .now ()
684- for req_log_address in range (log_address - 13 , log_address ):
684+ _log_delta = datetime .utcnow ().replace (
685+ minute = 0 , second = 0 , microsecond = 0
686+ ) - (
687+ datetime .utcnow ().replace (
688+ hour = 0 , minute = 0 , second = 0 , microsecond = 0
689+ ) - timedelta (days = 1 )
690+ )
691+ _log_count = _log_delta .total_seconds ()/ 60 / 60 / 4
692+ _log_count = int (_log_count ) + (1 if _log_count - int (_log_count ) > 0 else 0 )
693+
694+ for req_log_address in range (log_address - _log_count , log_address ):
685695 if self ._energy_memory .get (req_log_address , 0 ) < 4 :
686696 self .message_sender (
687697 CircleEnergyCountersRequest (self ._mac , req_log_address ),
@@ -816,12 +826,12 @@ def _response_energy_counters(self, message: CircleEnergyCountersResponse):
816826 )
817827 _LOGGER .info (logstring )
818828
819- # Cleanup energy history for more than 8 day's ago
820- _8_days_ago = datetime .utcnow ().replace (
829+ # Cleanup energy history for more than 48 hours
830+ _48_hours_ago = datetime .utcnow ().replace (
821831 minute = 0 , second = 0 , microsecond = 0
822- ) - timedelta (days = 8 )
832+ ) - timedelta (hours = 48 )
823833 for log_timestamp in list (self ._energy_history .keys ()):
824- if log_timestamp < _8_days_ago :
834+ if log_timestamp < _48_hours_ago :
825835 del self ._energy_history [log_timestamp ]
826836
827837 def _response_clock (self , message : CircleClockResponse ):
0 commit comments