Skip to content

Commit 989cfca

Browse files
committed
Add_pulse_logs from sorted and pruned restored cache data
1 parent 164bad6 commit 989cfca

File tree

1 file changed

+24
-21
lines changed

1 file changed

+24
-21
lines changed

plugwise_usb/nodes/circle.py

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)