Skip to content

Commit bc978c5

Browse files
committed
Fix node availabillity
1 parent 7813bbf commit bc978c5

File tree

3 files changed

+27
-39
lines changed

3 files changed

+27
-39
lines changed

plugwise/controller.py

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,9 @@ def resend(self, seq_id):
114114
_mac = self.expected_responses[seq_id][0].mac.decode(UTF8_DECODE)
115115
_request = self.expected_responses[seq_id][0].__class__.__name__
116116

117-
if self.expected_responses[seq_id][2] <= MESSAGE_RETRY:
117+
if self.expected_responses[seq_id][2] == -1:
118+
_LOGGER.debug("Drop single %s to %s ", _request, _mac)
119+
elif self.expected_responses[seq_id][2] <= MESSAGE_RETRY:
118120
if (
119121
isinstance(self.expected_responses[seq_id][0], NodeInfoRequest)
120122
and not self.discovery_finished
@@ -142,35 +144,25 @@ def resend(self, seq_id):
142144
self.expected_responses[seq_id][2] + 1,
143145
)
144146
else:
145-
if self.expected_responses[seq_id][2] + 1 == MESSAGE_RETRY:
146-
_LOGGER.warning(
147-
"Drop %s to %s because max retries %s reached",
148-
_request,
147+
_LOGGER.warning(
148+
"Drop %s to %s because max retries %s reached",
149+
_request,
150+
_mac,
151+
str(MESSAGE_RETRY + 1),
152+
)
153+
# Report node as unavailable for missing NodePingRequest
154+
if isinstance(self.expected_responses[seq_id][0], NodePingRequest):
155+
self.node_state(_mac, False)
156+
else:
157+
_LOGGER.debug(
158+
"Do a single ping request to %s to validate if node is reachable",
149159
_mac,
150-
str(MESSAGE_RETRY + 1),
151160
)
152-
# Report node as unavailable for missing NodePingRequest
153-
if isinstance(self.expected_responses[seq_id][0], NodePingRequest):
154-
self.node_state(_mac, False)
155-
else:
156-
_LOGGER.debug(
157-
"Do a ping request to %s to validate if node is reachable",
158-
_mac,
159-
)
160-
self.send(NodePingRequest(_mac))
161-
else:
162-
if isinstance(self.expected_responses[seq_id][0], NodePingRequest):
163-
_LOGGER.info(
164-
"Drop single %s to %s ",
165-
_request,
166-
_mac,
167-
)
168-
else:
169-
_LOGGER.warning(
170-
"Drop single %s to %s ",
171-
_request,
172-
_mac,
173-
)
161+
self.send(
162+
NodePingRequest(self.expected_responses[seq_id][0].mac),
163+
None,
164+
MESSAGE_RETRY + 1,
165+
)
174166
del self.expected_responses[seq_id]
175167

176168
def _send_message_loop(self):

plugwise/nodes/sed.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import logging
88

99
from ..constants import (
10-
MESSAGE_RETRY,
1110
SED_AWAKE_BUTTON,
1211
SED_AWAKE_FIRST,
1312
SED_AWAKE_MAINTENANCE,
@@ -94,7 +93,7 @@ def _process_awake_response(self, message):
9493
request_message.__class__.__name__,
9594
self.get_mac(),
9695
)
97-
self.message_sender(request_message, callback, MESSAGE_RETRY)
96+
self.message_sender(request_message, callback, -1)
9897
self._SED_requests = {}
9998
else:
10099
if message.awake_type.value == SED_AWAKE_STATE:

plugwise/stick.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -607,17 +607,14 @@ def _update_loop(self):
607607
while self._run_update_thread:
608608
for mac in self._plugwise_nodes:
609609
if self._plugwise_nodes[mac]:
610+
# Do ping request for all nodes if listener is registered for sensor
611+
self._plugwise_nodes[mac].ping(None, True)
612+
# Check availability state of SED's
610613
if self._plugwise_nodes[mac].is_sed():
611-
# Check availability state of SED's
612614
self._check_availability_of_seds(mac)
613-
else:
614-
# Do ping request for all non SED's
615-
self._plugwise_nodes[mac].ping(None, True)
616-
617-
if self._plugwise_nodes[mac].measure_power():
618-
# Request current power usage
615+
# Request current power usage for all nodes supporting power measurement
616+
if self._plugwise_nodes[mac].measures_power():
619617
self._plugwise_nodes[mac].update_power_usage()
620-
621618
# Sync internal clock of power measure nodes once a day
622619
if datetime.now().day != day_of_month:
623620
day_of_month = datetime.now().day
@@ -629,7 +626,7 @@ def _update_loop(self):
629626
self.msg_controller.send(
630627
NodePingRequest(bytes(mac, UTF8_DECODE)),
631628
None,
632-
MESSAGE_RETRY + 1,
629+
-1,
633630
)
634631
_discover_counter = 0
635632
else:

0 commit comments

Comments
 (0)