@@ -174,7 +174,7 @@ def collected_pulses(
174174 return (None , None )
175175
176176 if (
177- log_pulses := self ._collect_pulses_from_logs (from_timestamp , is_consumption )
177+ log_pulses , reset := self ._collect_pulses_from_logs (from_timestamp , is_consumption )
178178 ) is None :
179179 _LOGGER .debug ("collected_pulses | %s | log_pulses:None" , self ._mac )
180180 return (None , None )
@@ -188,18 +188,24 @@ def collected_pulses(
188188 delta_cons_pulses = self ._pulses_consumption - self ._prev_pulses_consumption
189189 pulses = self ._prev_pulses_consumption + delta_cons_pulses
190190 self ._prev_pulses_consumption = pulses
191- if self . _pulsecounter_reset :
192- pulses = self . _pulses_consumption
191+ if reset :
192+ pulses = delta_cons_pulses
193193 self ._prev_pulses_consumption = 0
194+ if self ._pulsecounter_reset :
195+ pulses = self ._pulses_consumption + self ._prev_pulses_consumption
196+ self ._prev_pulses_consumption = pulses
194197
195198 if not is_consumption and self ._pulses_production is not None :
196199 timestamp = self ._pulses_timestamp
197200 delta_prod_pulses = self ._pulses_production - self ._prev_pulses_production
198201 pulses = self ._prev_pulses_production + delta_prod_pulses
199202 self ._prev_pulses_production = pulses
200- if self . _pulsecounter_reset :
201- pulses = self . _pulses_production
203+ if reset :
204+ pulses = delta_prod_pulses
202205 self ._prev_pulses_production = 0
206+ if self ._pulsecounter_reset :
207+ pulses = self ._prev_pulses_production + self ._prev_pulses_production
208+ self ._prev_pulses_production = pulses
203209
204210 if pulses is None :
205211 _LOGGER .debug (
@@ -222,8 +228,11 @@ def collected_pulses(
222228
223229 def _collect_pulses_from_logs (
224230 self , from_timestamp : datetime , is_consumption : bool
225- ) -> int | None :
226- """Collect all pulses from logs."""
231+ ) -> tuple [int , bool ] | None :
232+ """Collect all pulses from logs.
233+
234+ And return True when the from_timestamp rolls over to the next log_interval.
235+ """
227236 if self ._logs is None :
228237 _LOGGER .debug ("_collect_pulses_from_logs | %s | self._logs=None" , self ._mac )
229238 return None
@@ -236,7 +245,7 @@ def _collect_pulses_from_logs(
236245 )
237246 return None
238247 if from_timestamp > self ._last_log_consumption_timestamp :
239- return 0
248+ return ( 0 , True )
240249 else :
241250 if self ._last_log_production_timestamp is None :
242251 _LOGGER .debug (
@@ -245,7 +254,7 @@ def _collect_pulses_from_logs(
245254 )
246255 return None
247256 if from_timestamp > self ._last_log_production_timestamp :
248- return 0
257+ return ( 0 , True )
249258
250259 missing_logs = self ._logs_missing (from_timestamp )
251260 if missing_logs is None or missing_logs :
@@ -265,7 +274,7 @@ def _collect_pulses_from_logs(
265274 ):
266275 log_pulses += slot_item .pulses
267276
268- return log_pulses
277+ return ( log_pulses , False )
269278
270279 def update_pulse_counter (
271280 self , pulses_consumed : int , pulses_produced : int , timestamp : datetime
0 commit comments