Skip to content

Commit d9c2afc

Browse files
committed
Add pulsecounter_reset booleans, and detection
1 parent d2a6db7 commit d9c2afc

File tree

1 file changed

+25
-10
lines changed

1 file changed

+25
-10
lines changed

plugwise_usb/nodes/helpers/pulses.py

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ def __init__(self, mac: str) -> None:
8383
self._first_log_production_slot: int | None = None
8484
self._next_log_production_timestamp: datetime | None = None
8585

86+
self._cons_pulsecounter_reset = False
87+
self._prod_pulsecounter_reset = False
8688
self._rollover_consumption = False
8789
self._rollover_production = False
8890

@@ -258,21 +260,34 @@ def update_pulse_counter(
258260
259261
Both device consumption and production counters reset after the beginning of a new hour.
260262
"""
263+
self._cons_pulsecounter_reset = False
264+
self._prod_pulsecounter_reset = False
261265
self._pulses_timestamp = timestamp
262-
self._update_rollover()
263-
if not (self._rollover_consumption or self._rollover_production):
264266
# No rollover based on time, check rollover based on counter reset
265267
# Required for special cases like nodes which have been powered off for several days
266-
if (
267-
self._pulses_consumption is not None
268-
and self._pulses_consumption > pulses_consumed
269-
):
268+
if (
269+
self._pulses_consumption is not None
270+
and self._pulses_consumption > pulses_consumed
271+
):
272+
self._cons_pulsecounter_reset = True
273+
274+
if (
275+
self._pulses_production is not None
276+
and self._pulses_production < pulses_produced
277+
):
278+
self._prod_pulsecounter_reset = True
279+
280+
if consumption_counter_reset or production_counter_reset:
281+
_LOGGER.debug("update_pulse_counter | pulsecounter reset")
282+
self._pulsecounter_reset = True
283+
284+
self._update_rollover()
285+
if not (self._rollover_consumption or self._rollover_production):
286+
if self._cons_pulsecounter_reset:
270287
_LOGGER.debug("update_pulse_counter | rollover consumption")
271288
self._rollover_consumption = True
272-
if (
273-
self._pulses_production is not None
274-
and self._pulses_production < pulses_produced
275-
):
289+
290+
if self._prod_pulsecounter_reset:
276291
_LOGGER.debug("update_pulse_counter | rollover production")
277292
self._rollover_production = True
278293

0 commit comments

Comments
 (0)