@@ -604,7 +604,7 @@ async def _energy_log_records_load_from_cache(self) -> bool:
604604 "Failed to restore energy log records from cache for node %s" , self .name
605605 )
606606 return False
607- restored_logs : dict [int , list [int ]] = {}
607+ restored_logs : dict [int , dict [ int , list [int , datetime ] ]] = {}
608608 if cache_data == "" :
609609 _LOGGER .debug ("Cache-record is empty" )
610610 return False
@@ -617,38 +617,41 @@ async def _energy_log_records_load_from_cache(self) -> bool:
617617 if len (timestamp_energy_log ) == 6 :
618618 address = int (log_fields [0 ])
619619 slot = int (log_fields [1 ])
620- self ._energy_counters .add_pulse_log (
621- address = address ,
622- slot = slot ,
623- timestamp = datetime (
624- year = int (timestamp_energy_log [0 ]),
625- month = int (timestamp_energy_log [1 ]),
626- day = int (timestamp_energy_log [2 ]),
627- hour = int (timestamp_energy_log [3 ]),
628- minute = int (timestamp_energy_log [4 ]),
629- second = int (timestamp_energy_log [5 ]),
630- tzinfo = UTC ,
631- ),
632- pulses = int (log_fields [3 ]),
633- import_only = True ,
620+ pulses = int (log_fields [3 ])
621+ timestamp = datetime (
622+ year = int (timestamp_energy_log [0 ]),
623+ month = int (timestamp_energy_log [1 ]),
624+ day = int (timestamp_energy_log [2 ]),
625+ hour = int (timestamp_energy_log [3 ]),
626+ minute = int (timestamp_energy_log [4 ]),
627+ second = int (timestamp_energy_log [5 ]),
628+ tzinfo = UTC ,
634629 )
635630 if restored_logs .get (address ) is None :
636- restored_logs [address ] = []
637- restored_logs [address ].append (slot )
631+ restored_logs [address ] = {}
632+ restored_logs [address ][slot ] = [pulses , timestamp ]
633+ _LOGGER .debug ("HOI restored_logs=%s" , restored_logs )
638634
639635 # Sort and prune the records loaded from cache
640- sorted_logs : dict [int , dict [int , PulseLogRecord ]] = {}
641636 skip_before = datetime .now (tz = UTC ) - timedelta (hours = MAX_LOG_HOURS )
642- sorted_address = sorted (restored_logs .keys (), reverse = True )
643- for address in sorted_address :
637+ sorted_addresses = sorted (restored_logs .keys (), reverse = True )
638+ for address in sorted_addresses :
644639 sorted_slots = sorted (restored_logs [address ].keys (), reverse = True )
645640 for slot in sorted_slots :
646641 if restored_logs [address ][slot ].timestamp > skip_before :
647642 if sorted_log .get (address ) is None :
648643 sorted_log [address ] = {}
649644 sorted_log [address ][slot ] = restored_logs [address ][slot ]
650645
651- restored_logs = sorted_logs
646+ for address , data in sorted_log .items ():
647+ for slot , pulse_data in data .items ():
648+ self ._energy_counters .add_pulse_log (
649+ address = address ,
650+ slot = slot ,
651+ pulses = pulse_data [0 ]
652+ timestamp = pulse_data [1 ]
653+ import_only = True ,
654+ )
652655
653656 self ._energy_counters .update ()
654657
0 commit comments