@@ -469,7 +469,7 @@ async def _get_initial_energy_logs(self) -> None:
469469 if not result:
470470 # Handle case with None-data in all address slots
471471 _LOGGER.debug(
472- "Energy None-data of outdated data collected from log address %s, stopping collection",
472+ "All slots at log address %s are empty or outdated – stopping initial collection",
473473 log_address,
474474 )
475475 break
@@ -509,29 +509,26 @@ async def get_missing_energy_logs(self) -> None:
509509 await self._energy_log_records_save_to_cache()
510510
511511 async def energy_log_update(self, address: int | None) -> bool:
512- """Request energy log statistics from node. Returns true if successful ."""
513- result = False
512+ """Request energy logs and return True only when at least one recent, non-empty record was stored; otherwise return False ."""
513+ any_record_stored = False
514514 if address is None:
515- return result
515+ return False
516516
517517 _LOGGER.debug(
518518 "Requesting EnergyLogs from node %s address %s",
519- str(address) ,
520- self.name ,
519+ self._mac_in_str ,
520+ address ,
521521 )
522522 request = CircleEnergyLogsRequest(self._send, self._mac_in_bytes, address)
523523 if (response := await request.send()) is None:
524524 _LOGGER.debug(
525525 "Retrieving EnergyLogs data from node %s failed",
526526 self._mac_in_str,
527527 )
528- return result
528+ return False
529529
530- _LOGGER.debug(
531- "EnergyLogs data from node %s, address=%s", self._mac_in_str, address
532- )
530+ _LOGGER.debug("EnergyLogs from node %s, address=%s:", self._mac_in_str, address)
533531 await self._available_update_state(True, response.timestamp)
534- energy_record_update = False
535532
536533 # Forward historical energy log information to energy counters
537534 # Each response message contains 4 log counters (slots) of the
@@ -542,11 +539,12 @@ async def energy_log_update(self, address: int | None) -> bool:
542539 _LOGGER.debug(
543540 "In slot=%s: pulses=%s, timestamp=%s", _slot, log_pulses, log_timestamp
544541 )
545- if log_timestamp is None or log_pulses is None:
546- self._energy_counters.add_empty_log(response.log_address, _slot)
547- continue
548- elif not self._check_timestamp_is_recent(address, _slot, log_timestamp):
542+ if (
543+ log_timestamp is None
544+ or log_pulses is None
549545 # Don't store an old log-record, store am empty record instead
546+ or not self._check_timestamp_is_recent(address, _slot, log_timestamp)
547+ ):
550548 self._energy_counters.add_empty_log(response.log_address, _slot)
551549 continue
552550
@@ -557,7 +555,7 @@ async def energy_log_update(self, address: int | None) -> bool:
557555 log_pulses,
558556 import_only=True,
559557 ):
560- energy_record_update = True
558+ any_record_stored = True
561559 if not last_energy_timestamp_collected:
562560 # Collect the timestamp of the most recent response
563561 self._last_collected_energy_timestamp = log_timestamp.replace(
@@ -569,25 +567,26 @@ async def energy_log_update(self, address: int | None) -> bool:
569567 )
570568 last_energy_timestamp_collected = True
571569
572- result = True
573570 self._energy_counters.update()
574- if energy_record_update :
571+ if any_record_stored :
575572 _LOGGER.debug(
576573 "Saving energy record update to cache for %s", self._mac_in_str
577574 )
578575 await self.save_cache()
579576
580- return result
577+ return any_record_stored
581578
582- def _check_timestamp_is_recent(self, address, slot, timestamp) -> bool:
579+ def _check_timestamp_is_recent(
580+ self, address: int, slot: int, timestamp: datetime
581+ ) -> bool:
583582 """Check if the timestamp of the received log-record is recent.
584583
585584 A timestamp from within the last 24 hours is considered recent.
586585 """
587- if (
588- ( datetime.now(tz=UTC) - timestamp.replace(tzinfo=UTC)).total_seconds( )
589- // 3600
590- ) > DAY_IN_HOURS:
586+ age_seconds = (
587+ datetime.now(tz=UTC) - timestamp.replace(tzinfo=UTC)
588+ ).total_seconds()
589+ if age_seconds > DAY_IN_HOURS * 3600 :
591590 _LOGGER.warning(
592591 "EnergyLog from Node %s | address %s | slot %s | timestamp %s is outdated, ignoring...",
593592 self._mac_in_str,
0 commit comments