Skip to content

Commit ae9def3

Browse files
committed
Handle device resetting late
1 parent d5278ce commit ae9def3

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

plugwise_usb/nodes/helpers/pulses.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,9 @@ def __init__(self, mac: str) -> None:
9090
self._logs: dict[int, dict[int, PulseLogRecord]] | None = None
9191
self._log_addresses_missing: list[int] | None = None
9292
self._log_production: bool | None = None
93+
self._prev_pulses_consumption: int = 0
9394
self._pulses_consumption: int | None = None
95+
self._prev_pulses_production: int = 0
9496
self._pulses_production: int | None = None
9597
self._pulses_timestamp: datetime | None = None
9698

@@ -178,14 +180,26 @@ def collected_pulses(
178180
return (None, None)
179181

180182
pulses: int | None = None
183+
delta_cons_pulses: int = 0
184+
delta_prod_pulses: int = 0
181185
timestamp: datetime | None = None
182186
if is_consumption and self._pulses_consumption is not None:
183-
pulses = self._pulses_consumption
184187
timestamp = self._pulses_timestamp
188+
delta_cons_pulses = self._pulses_consumption - self._prev_pulses_consumption
189+
pulses = self._prev_pulses_consumption + delta_cons_pulses
190+
self._prev_pulses_consumption = pulses
191+
if self._pulsecounter_reset:
192+
pulses = self._pulses_consumption
193+
self._prev_pulses_consumption = 0
185194

186195
if not is_consumption and self._pulses_production is not None:
187-
pulses = self._pulses_production
188196
timestamp = self._pulses_timestamp
197+
delta_prod_pulses = self._pulses_production - self._prev_pulses_production
198+
pulses = self._prev_pulses_production + delta_prod_pulses
199+
self._prev_pulses_production = pulses
200+
if self._pulsecounter_reset:
201+
pulses = self._pulses_production
202+
self._prev_pulses_production = 0
189203

190204
if pulses is None:
191205
_LOGGER.debug(
@@ -194,6 +208,7 @@ def collected_pulses(
194208
is_consumption,
195209
)
196210
return (None, None)
211+
197212
_LOGGER.debug(
198213
"collected_pulses | pulses=%s | log_pulses=%s | consumption=%s at timestamp=%s",
199214
pulses,

0 commit comments

Comments
 (0)