Skip to content

Commit 90c699e

Browse files
committed
Improve logic and summing covering the log_interval resets
1 parent 70c8b43 commit 90c699e

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

plugwise_usb/nodes/helpers/pulses.py

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

Comments
 (0)