@@ -368,7 +368,7 @@ async def energy_update(self) -> EnergyStatistics | None: # noqa: PLR0911 PLR09
368368 # Always request last energy log records at initial startup
369369 if not self ._last_energy_log_requested :
370370 self ._last_energy_log_requested = await self .energy_log_update (
371- self ._current_log_address
371+ self ._current_log_address , save_cache = False
372372 )
373373
374374 if self ._energy_counters .log_rollover :
@@ -381,7 +381,7 @@ async def energy_update(self) -> EnergyStatistics | None: # noqa: PLR0911 PLR09
381381 return None
382382
383383 # Try collecting energy-stats for _current_log_address
384- result = await self .energy_log_update (self ._current_log_address )
384+ result = await self .energy_log_update (self ._current_log_address , save_cache = True )
385385 if not result :
386386 _LOGGER .debug (
387387 "async_energy_update | %s | Log rollover | energy_log_update from address %s failed" ,
@@ -394,7 +394,7 @@ async def energy_update(self) -> EnergyStatistics | None: # noqa: PLR0911 PLR09
394394 # Retry with previous log address as Circle node pointer to self._current_log_address
395395 # could be rolled over while the last log is at previous address/slot
396396 prev_log_address , _ = calc_log_address (self ._current_log_address , 1 , - 4 )
397- result = await self .energy_log_update (prev_log_address )
397+ result = await self .energy_log_update (prev_log_address , save_cache = True )
398398 if not result :
399399 _LOGGER .debug (
400400 "async_energy_update | %s | Log rollover | energy_log_update from address %s failed" ,
@@ -415,7 +415,7 @@ async def energy_update(self) -> EnergyStatistics | None: # noqa: PLR0911 PLR09
415415 return self ._energy_counters .energy_statistics
416416
417417 if len (missing_addresses ) == 1 :
418- result = await self .energy_log_update (missing_addresses [0 ])
418+ result = await self .energy_log_update (missing_addresses [0 ], save_cache = True )
419419 if result :
420420 await self .power_update ()
421421 _LOGGER .debug (
@@ -454,7 +454,7 @@ async def energy_update(self) -> EnergyStatistics | None: # noqa: PLR0911 PLR09
454454 return None
455455
456456 async def _get_initial_energy_logs (self ) -> None :
457- """Collect initial energy logs for the hours elapsed today up to MAX_LOG_HOURS."""
457+ """Collect initial energy logs for recent hours up to MAX_LOG_HOURS."""
458458 if self ._current_log_address is None :
459459 return
460460
@@ -476,7 +476,7 @@ async def _get_initial_energy_logs(self) -> None:
476476 )
477477 log_address = self ._current_log_address
478478 while total_addresses > 0 :
479- result = await self .energy_log_update (log_address )
479+ result = await self .energy_log_update (log_address , save_cache = False )
480480 if not result :
481481 # Stop initial log collection when an address contains no (None) or outdated data
482482 # Outdated data can indicate a EnergyLog address rollover: from address 6014 to 0
@@ -511,7 +511,7 @@ async def get_missing_energy_logs(self) -> None:
511511 )
512512 missing_addresses = sorted (missing_addresses , reverse = True )
513513 tasks = [
514- create_task (self .energy_log_update (address ))
514+ create_task (self .energy_log_update (address , save_cache = False ))
515515 for address in missing_addresses
516516 ]
517517 for idx , task in enumerate (tasks ):
@@ -528,7 +528,7 @@ async def get_missing_energy_logs(self) -> None:
528528 if self ._cache_enabled :
529529 await self ._energy_log_records_save_to_cache ()
530530
531- async def energy_log_update (self , address : int | None ) -> bool :
531+ async def energy_log_update (self , address : int | None , save_cache : bool = True ) -> bool :
532532 """Request energy logs and return True only when at least one recent, non-empty record was stored; otherwise return False."""
533533 any_record_stored = False
534534 if address is None :
@@ -577,7 +577,7 @@ async def energy_log_update(self, address: int | None) -> bool:
577577 any_record_stored = True
578578
579579 self ._energy_counters .update ()
580- if any_record_stored and self ._cache_enabled :
580+ if any_record_stored and self ._cache_enabled and save_cache :
581581 _LOGGER .debug (
582582 "Saving energy record update to cache for %s" , self ._mac_in_str
583583 )
0 commit comments