@@ -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