Skip to content

Commit 0f93853

Browse files
committed
Correct pulse counter update logic
1 parent 2c74e84 commit 0f93853

File tree

1 file changed

+34
-26
lines changed

1 file changed

+34
-26
lines changed

plugwise/nodes/circle.py

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -434,14 +434,15 @@ def _update_energy_current_hour(self, _pulses_cur_hour):
434434
str(_pulses_cur_hour),
435435
)
436436
_hour_rollover = False
437-
if (
438-
self._energy_pulses_current_hour is None
439-
or self._energy_pulses_current_hour != _pulses_cur_hour
440-
):
441-
if _pulses_cur_hour < self._energy_pulses_current_hour:
442-
_hour_rollover = True
437+
if self._energy_pulses_current_hour is None:
443438
self._energy_pulses_current_hour = _pulses_cur_hour
444439
self.do_callback(FEATURE_POWER_CONSUMPTION_CURRENT_HOUR["id"])
440+
else:
441+
if self._energy_pulses_current_hour != _pulses_cur_hour:
442+
if _pulses_cur_hour < self._energy_pulses_current_hour:
443+
_hour_rollover = True
444+
self._energy_pulses_current_hour = _pulses_cur_hour
445+
self.do_callback(FEATURE_POWER_CONSUMPTION_CURRENT_HOUR["id"])
445446

446447
# Update today
447448
self._update_energy_today_now(_hour_rollover, False, False)
@@ -501,11 +502,12 @@ def _update_energy_today_now(
501502
str(self._energy_pulses_today_hourly),
502503
str(self._energy_pulses_current_hour),
503504
)
504-
if _pulses_today_now is not None:
505-
if (
506-
self._energy_pulses_today_now is None
507-
or self._energy_pulses_today_now != _pulses_today_now
508-
):
505+
if self._energy_pulses_today_now is None:
506+
self._energy_pulses_today_now = _pulses_today_now
507+
if self._energy_pulses_today_now is not None:
508+
self.do_callback(FEATURE_ENERGY_CONSUMPTION_TODAY["id"])
509+
else:
510+
if self._energy_pulses_today_now != _pulses_today_now:
509511
self._energy_pulses_today_now = _pulses_today_now
510512
self.do_callback(FEATURE_ENERGY_CONSUMPTION_TODAY["id"])
511513

@@ -519,12 +521,14 @@ def _update_energy_previous_hour(self, prev_hour: datetime):
519521
str(_pulses_prev_hour),
520522
str(prev_hour),
521523
)
522-
if (
523-
self._energy_pulses_prev_hour is None
524-
or self._energy_pulses_prev_hour != _pulses_prev_hour
525-
):
524+
if self._energy_pulses_prev_hour is None:
526525
self._energy_pulses_prev_hour = _pulses_prev_hour
527-
self.do_callback(FEATURE_POWER_CONSUMPTION_PREVIOUS_HOUR["id"])
526+
if self._energy_pulses_prev_hour is not None:
527+
self.do_callback(FEATURE_POWER_CONSUMPTION_PREVIOUS_HOUR["id"])
528+
else:
529+
if self._energy_pulses_prev_hour != _pulses_prev_hour:
530+
self._energy_pulses_prev_hour = _pulses_prev_hour
531+
self.do_callback(FEATURE_POWER_CONSUMPTION_PREVIOUS_HOUR["id"])
528532

529533
def _update_energy_yesterday(
530534
self, start_yesterday: datetime, end_yesterday: datetime
@@ -539,12 +543,14 @@ def _update_energy_yesterday(
539543
str(start_yesterday),
540544
str(end_yesterday),
541545
)
542-
if (
543-
self._energy_pulses_yesterday is None
544-
or self._energy_pulses_yesterday != _pulses_yesterday
545-
):
546+
if self._energy_pulses_yesterday is None:
546547
self._energy_pulses_yesterday = _pulses_yesterday
547-
self.do_callback(FEATURE_POWER_CONSUMPTION_YESTERDAY["id"])
548+
if self._energy_pulses_yesterday is not None:
549+
self.do_callback(FEATURE_POWER_CONSUMPTION_YESTERDAY["id"])
550+
else:
551+
if self._energy_pulses_yesterday != _pulses_yesterday:
552+
self._energy_pulses_yesterday = _pulses_yesterday
553+
self.do_callback(FEATURE_POWER_CONSUMPTION_YESTERDAY["id"])
548554

549555
def _update_energy_today_hourly(self, start_today: datetime, end_today: datetime):
550556
"""Update energy consumption (pulses) of today up to last hour"""
@@ -560,12 +566,14 @@ def _update_energy_today_hourly(self, start_today: datetime, end_today: datetime
560566
str(start_today),
561567
str(end_today),
562568
)
563-
if (
564-
self._energy_pulses_today_hourly is None
565-
or self._energy_pulses_today_hourly != _pulses_today_hourly
566-
):
569+
if self._energy_pulses_today_hourly is None:
567570
self._energy_pulses_today_hourly = _pulses_today_hourly
568-
self.do_callback(FEATURE_POWER_CONSUMPTION_TODAY["id"])
571+
if self._energy_pulses_today_hourly is not None:
572+
self.do_callback(FEATURE_POWER_CONSUMPTION_TODAY["id"])
573+
else:
574+
if self._energy_pulses_today_hourly != _pulses_today_hourly:
575+
self._energy_pulses_today_hourly = _pulses_today_hourly
576+
self.do_callback(FEATURE_POWER_CONSUMPTION_TODAY["id"])
569577

570578
def request_energy_counters(self, log_address=None, callback=None):
571579
"""Request power log of specified address"""

0 commit comments

Comments
 (0)