From f5cc92078353e0319e193ce53c8e153f7f4629d5 Mon Sep 17 00:00:00 2001 From: Oren Sokoler Date: Thu, 29 Apr 2021 09:15:17 +0300 Subject: [PATCH 1/2] Added command retry on lost connection --- anthemav/protocol.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/anthemav/protocol.py b/anthemav/protocol.py index 0ccd180..a0b5513 100755 --- a/anthemav/protocol.py +++ b/anthemav/protocol.py @@ -100,6 +100,7 @@ def __init__(self, update_callback=None, loop=None, connection_lost_callback=Non self._input_numbers = {} self._poweron_refresh_successful = False self.transport = None + self._resend_action = {} for key in LOOKUP: setattr(self, '_'+key, '') @@ -165,9 +166,13 @@ def connection_made(self, transport): self.command('ECH1') self.refresh_core() + if self._resend_action: + for k, v in self._resend_action.items(): + self._set_boolean(k, v) def data_received(self, data): """Called when asyncio.Protocol detects received data from network.""" + self._resend_action = {} self.buffer += data.decode() self.log.debug('Received %d bytes from AVR: %s', len(self.buffer), self.buffer) self._assemble_buffer() @@ -522,6 +527,7 @@ def power(self): @power.setter def power(self, value): + self._resend_action = {'Z1POW': value} self._set_boolean('Z1POW', value) self._set_boolean('Z1POW', value) From 73a3736ecab615e6d4af286adb7ae0f8725198c1 Mon Sep 17 00:00:00 2001 From: Oren Sokoler Date: Thu, 29 Apr 2021 09:25:30 +0300 Subject: [PATCH 2/2] Fixed command retry on all boolean commands --- anthemav/protocol.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/anthemav/protocol.py b/anthemav/protocol.py index a0b5513..4def38c 100755 --- a/anthemav/protocol.py +++ b/anthemav/protocol.py @@ -508,6 +508,7 @@ def _get_boolean(self, key): return False def _set_boolean(self, key, value): + self._resend_action = {key: value} if value is True: self.command(key+'1') else: @@ -527,7 +528,6 @@ def power(self): @power.setter def power(self, value): - self._resend_action = {'Z1POW': value} self._set_boolean('Z1POW', value) self._set_boolean('Z1POW', value)