From 89a8a6908542ce6b5cdc7a824f3d7db1057bc3e3 Mon Sep 17 00:00:00 2001 From: Benjamin Braatz Date: Thu, 29 Jul 2021 02:00:20 +0200 Subject: [PATCH] Bugfix on template translation. --- controlpi_plugins/wsclient.py | 37 +++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/controlpi_plugins/wsclient.py b/controlpi_plugins/wsclient.py index 60b09e2..6e21239 100644 --- a/controlpi_plugins/wsclient.py +++ b/controlpi_plugins/wsclient.py @@ -136,6 +136,20 @@ class WSClient(BasePlugin): bytes(self.conf['interface'], 'utf-8')[:15])) self._mac = ':'.join('%02x' % b for b in info[18:24]) + sends = [] + sends.append(MessageTemplate({'event': + {'const': 'registered'}})) + sends.append(MessageTemplate({'event': + {'const': 'connection opened'}})) + sends.append(MessageTemplate({'event': + {'const': 'connection closed'}})) + for template in self.conf['down filter']: + sends.append(MessageTemplate(template)) + receives = [] + for template in self.conf['up filter']: + receives.append(MessageTemplate(template)) + self.bus.register(self.name, 'WSClient', sends, receives, + self._receive) async def run(self) -> None: """Connect to wsserver and process messages from it.""" @@ -152,28 +166,18 @@ class WSClient(BasePlugin): self._client = f"{address}:{port}" if 'interface' in self.conf: conf_command['mac'] = self._mac - sends = [] - sends.append(MessageTemplate({'event': - {'const': 'registered'}})) - sends.append(MessageTemplate({'event': - {'const': - 'connection opened'}})) - sends.append(MessageTemplate({'event': - {'const': - 'connection closed'}})) - for template in self.conf['down filter']: - template = translate_template(template, - self.name, self._client) - sends.append(MessageTemplate(template)) - self.bus.register(self.name, 'WSClient', sends, - self.conf['up filter'], self._receive) up_filter = [] for template in self.conf['up filter']: template = translate_template(template, self._client, self.name) up_filter.append(MessageTemplate(template)) + down_filter = [] + for template in self.conf['down filter']: + template = translate_template(template, + self._client, self.name) + down_filter.append(MessageTemplate(template)) conf_command['up filter'] = up_filter - conf_command['down filter'] = self.conf['down filter'] + conf_command['down filter'] = down_filter json_command = json.dumps(conf_command) await websocket.send(json_command) await self.bus.send(Message(self.name, @@ -190,7 +194,6 @@ class WSClient(BasePlugin): await self.bus.send(Message(self.name, {'event': 'connection closed'})) - self.bus.unregister(self.name) except OSError: pass await asyncio.sleep(1) -- 2.34.1