Skip to content

Commit a056e98

Browse files
committed
Handle negative energy-pulse values
1 parent 077a435 commit a056e98

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

plugwise_usb/nodes/helpers/counter.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,12 @@ def energy(self) -> float | None:
261261
return None
262262
if self._pulses == 0:
263263
return 0.0
264-
pulses_per_s = self._pulses / float(HOUR_IN_SECONDS)
264+
# Handle both positive and negative pulses values
265+
negative = False
266+
if self._pulses < 0:
267+
negative = True
268+
269+
pulses_per_s = abs(self._pulses) / float(HOUR_IN_SECONDS)
265270
corrected_pulses = HOUR_IN_SECONDS * (
266271
(
267272
(
@@ -276,8 +281,8 @@ def energy(self) -> float | None:
276281
+ self._calibration.off_tot
277282
)
278283
calc_value = corrected_pulses / PULSES_PER_KW_SECOND / HOUR_IN_SECONDS
279-
# Guard for minor negative miscalculations
280-
calc_value = max(calc_value, 0.0)
284+
if negative:
285+
calc_value = -calc_value
281286
return calc_value
282287

283288
@property

0 commit comments

Comments
 (0)