@@ -385,23 +385,22 @@ async def energy_update(self) -> EnergyStatistics | None: # noqa: PLR0911 PLR09
385385 result = await self .energy_log_update (self ._current_log_address )
386386 if not result :
387387 _LOGGER .debug (
388- "async_energy_update | %s | Log rollover | energy_log_update failed" ,
388+ "async_energy_update | %s | Log rollover | energy_log_update from address %s failed" ,
389389 self ._mac_in_str ,
390+ self ._current_log_address ,
390391 )
391392 return None
392393
393394 if self ._current_log_address is not None :
394395 # Retry with previous log address as Circle node pointer to self._current_log_address
395396 # could be rolled over while the last log is at previous address/slot
396- _prev_log_address , _ = calc_log_address (
397- self ._current_log_address , 1 , - 4
398- )
399- result = await self .energy_log_update (_prev_log_address )
397+ prev_log_address , _ = calc_log_address (self ._current_log_address , 1 , - 4 )
398+ result = await self .energy_log_update (prev_log_address )
400399 if not result :
401400 _LOGGER .debug (
402- "async_energy_update | %s | Log rollover | energy_log_update %s failed" ,
401+ "async_energy_update | %s | Log rollover | energy_log_update from address %s failed" ,
403402 self ._mac_in_str ,
404- _prev_log_address ,
403+ prev_log_address ,
405404 )
406405 return None
407406
@@ -507,6 +506,10 @@ async def get_missing_energy_logs(self) -> None:
507506 ]
508507 for task in tasks :
509508 await task
509+ # When an energy log collection task returns False, do not execute the remaining tasks
510+ if not task .result ():
511+ for t in tasks :
512+ t .cancel ()
510513
511514 if self ._cache_enabled :
512515 await self ._energy_log_records_save_to_cache ()
0 commit comments