Skip to content

Commit 2451efb

Browse files
committed
Only save cache when energy record is updated
1 parent 00a7430 commit 2451efb

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

plugwise_usb/nodes/circle.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,7 @@ async def energy_log_update(self, address: int) -> bool:
421421
return False
422422

423423
await self._available_update_state(True)
424+
energy_record_update = False
424425

425426
# Forward historical energy log information to energy counters
426427
# Each response message contains 4 log counters (slots) of the
@@ -433,15 +434,17 @@ async def energy_log_update(self, address: int) -> bool:
433434
if _log_timestamp is None:
434435
self._energy_counters.add_empty_log(response.log_address, _slot)
435436
else:
436-
await self._energy_log_record_update_state(
437+
if await self._energy_log_record_update_state(
437438
response.log_address,
438439
_slot,
439440
_log_timestamp.replace(tzinfo=UTC),
440441
_log_pulses,
441442
import_only=True
442-
)
443+
):
444+
energy_record_update = True
443445
self._energy_counters.update()
444-
await self.save_cache()
446+
if energy_record_update:
447+
await self.save_cache()
445448
return True
446449

447450
async def _energy_log_records_load_from_cache(self) -> bool:
@@ -525,8 +528,8 @@ async def _energy_log_record_update_state(
525528
timestamp: datetime,
526529
pulses: int,
527530
import_only: bool = False,
528-
) -> None:
529-
"""Process new energy log record."""
531+
) -> bool:
532+
"""Process new energy log record. Returns true if record is new or changed."""
530533
self._energy_counters.add_pulse_log(
531534
address,
532535
slot,
@@ -535,7 +538,7 @@ async def _energy_log_record_update_state(
535538
import_only=import_only
536539
)
537540
if not self._cache_enabled:
538-
return
541+
return False
539542
log_cache_record = f"{address}:{slot}:{timestamp.year}"
540543
log_cache_record += f"-{timestamp.month}-{timestamp.day}"
541544
log_cache_record += f"-{timestamp.hour}-{timestamp.minute}"
@@ -551,12 +554,15 @@ async def _energy_log_record_update_state(
551554
self._set_cache(
552555
CACHE_ENERGY_COLLECTION, cached_logs + "|" + log_cache_record
553556
)
557+
return True
558+
return False
554559
else:
555560
_LOGGER.debug(
556561
"No existing energy collection log cached for %s",
557562
self.mac
558563
)
559564
self._set_cache(CACHE_ENERGY_COLLECTION, log_cache_record)
565+
return True
560566

561567
async def switch_relay(self, state: bool) -> bool | None:
562568
"""Switch state of relay.

0 commit comments

Comments
 (0)