From 005f19b9922ba693ce83352e604edaa7777fda92 Mon Sep 17 00:00:00 2001 From: Maxim Van den Abeele Date: Tue, 30 Aug 2022 18:01:42 +0200 Subject: [PATCH] Added support for smappee output modules with local mqtt --- pysmappee/mqtt.py | 9 +++++++++ pysmappee/servicelocation.py | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/pysmappee/mqtt.py b/pysmappee/mqtt.py index 721abb0..cae9876 100644 --- a/pysmappee/mqtt.py +++ b/pysmappee/mqtt.py @@ -255,6 +255,7 @@ def __init__(self, serial_number=None): self.switch_sensors = [] self.smart_plugs = [] + self.output_modules = [] self.actuators_connection_state = {} self.actuators_state = {} @@ -333,6 +334,14 @@ def _on_message(self, client, userdata, message): 'nodeId': plug['nodeId'], 'name': plug['name'] }) + # outputmodules + output_modules = json.loads(message.payload).get('outputModules', []) + for output_module in output_modules: + self.output_modules.append({ + 'nodeId': output_module['nodeId'], + 'name': output_module['name'], + 'serialNumber': output_module['serialNumber'] + }) elif message.topic.endswith('/presence'): pass elif message.topic.endswith('/aggregated'): diff --git a/pysmappee/servicelocation.py b/pysmappee/servicelocation.py index c1f4669..69bd44a 100644 --- a/pysmappee/servicelocation.py +++ b/pysmappee/servicelocation.py @@ -130,6 +130,24 @@ def load_configuration(self, refresh=False): actuator_type='COMFORT_PLUG' ) + # Load Smappee output module INFINITY_OUTPUT_MODULE + for output_module in self.smappee_api.output_modules: + current_state = False + if self.smappee_api.actuators_state.get(output_module['nodeId']) == 'ON': + current_state = True + + self._add_actuator( + id=output_module['nodeId'], + name=output_module['name'], + serialnumber=output_module['serialNumber'], + state_values=[ + {'id': 'ON_ON', 'name': 'on', 'current': True if current_state else False}, + {'id': 'OFF_OFF', 'name': 'off', 'current': False if current_state else True} + ], + connection_state='CONNECTED', + actuator_type='SWITCH' + ) + # Load all CT measurements for measurement_name, measurement_index in self.smappee_api.measurements.items(): self._add_measurement(