From 04f269c75066805f45f48d49f55f33a819c2c9b6 Mon Sep 17 00:00:00 2001 From: Dirk Alders Date: Sat, 25 Mar 2023 19:23:00 +0100 Subject: [PATCH] videv sends the initial state on startup --- base.py | 23 ++--------------------- devices/__init__.py | 2 ++ function/videv.py | 37 ------------------------------------- smart_brain.py | 2 +- 4 files changed, 5 insertions(+), 59 deletions(-) diff --git a/base.py b/base.py index 1ed17d6..32fb460 100644 --- a/base.py +++ b/base.py @@ -58,7 +58,6 @@ class videv_base(mqtt_base): super().__init__(mqtt_client, topic, default_values=default_values) self.__display_dict__ = {} self.__control_dict__ = {} - self.__capabilities__ = None def add_display(self, my_key, ext_device, ext_key, on_change_only=True): """ @@ -76,7 +75,8 @@ class videv_base(mqtt_base): self.__display_dict__[(id(ext_device), ext_key)] = my_key # register a callback to listen for data from external device ext_device.add_callback(ext_key, None, self.__rx_ext_device_data__, on_change_only) - # send default data to videv interface + # send initial display data to videv interface + self.__tx__(my_key, ext_device.get(ext_key)) def __rx_ext_device_data__(self, ext_device, ext_key, data): my_key = self.__display_dict__[(id(ext_device), ext_key)] @@ -87,10 +87,6 @@ class videv_base(mqtt_base): if type(data) not in (str, ): data = json.dumps(data) self.mqtt_client.send('/'.join([self.topic, key]), data) - self.__tx_capabilities__() - - def __tx_capabilities__(self): - self.mqtt_client.send(self.topic + '/' + self.KEY_INFO, json.dumps(self.capabilities)) def add_control(self, my_key, ext_device, ext_key, on_change_only=True): """ @@ -125,18 +121,3 @@ class videv_base(mqtt_base): # add display self.add_display(my_key, ext_device, ext_key, on_change_only_disp) self.add_control(my_key, ext_device, ext_key, on_change_only_videv) - - @property - def capabilities(self): - if self.__capabilities__ is None: - self.__capabilities__ = {} - self.__capabilities__['__type__'] = self.__class__.__name__ - for key in self.__control_dict__: - if not key in self.__capabilities__: - self.__capabilities__[key] = {} - self.__capabilities__[key]['control'] = True - for key in self.__display_dict__.values(): - if not key in self.__capabilities__: - self.__capabilities__[key] = {} - self.__capabilities__[key]['display'] = True - return self.__capabilities__ diff --git a/devices/__init__.py b/devices/__init__.py index 98a652f..9fc6a63 100644 --- a/devices/__init__.py +++ b/devices/__init__.py @@ -449,6 +449,8 @@ class silvercrest_motion_sensor(base): KEY_UNMOUNTED = "tamper" KEY_VOLTAGE = "voltage" # + TX_TYPE = base.TX_DICT + # RX_KEYS = [KEY_BATTERY, KEY_BATTERY_LOW, KEY_LINKQUALITY, KEY_OCCUPANCY, KEY_UNMOUNTED, KEY_VOLTAGE] def __init__(self, mqtt_client, topic): diff --git a/function/videv.py b/function/videv.py index d0cd3be..d5c3f33 100644 --- a/function/videv.py +++ b/function/videv.py @@ -26,8 +26,6 @@ class videv_switching(videv_base): def __init__(self, mqtt_client, topic, sw_device, sw_key): super().__init__(mqtt_client, topic) self.add_routing(self.KEY_STATE, sw_device, sw_key) - # - self.__tx_capabilities__() class videv_switching_timer(videv_base): @@ -38,8 +36,6 @@ class videv_switching_timer(videv_base): super().__init__(mqtt_client, topic) self.add_routing(self.KEY_STATE, sw_device, sw_key) self.add_display(self.KEY_TIMER, tm_device, tm_key) - # - self.__tx_capabilities__() class videv_switching_motion(videv_base): @@ -57,8 +53,6 @@ class videv_switching_motion(videv_base): # motion sensor state for index, motion_sensor in enumerate(self.motion_sensors): self.add_display(self.KEY_MOTION_SENSOR % index, motion_sensor, motion_sensor.KEY_OCCUPANCY) - # - self.__tx_capabilities__() class videv_switch_brightness(videv_base): @@ -69,8 +63,6 @@ class videv_switch_brightness(videv_base): super().__init__(mqtt_client, topic) self.add_routing(self.KEY_STATE, sw_device, sw_key) self.add_routing(self.KEY_BRIGHTNESS, br_device, br_key) - # - self.__tx_capabilities__() class videv_switch_brightness_color_temp(videv_base): @@ -83,8 +75,6 @@ class videv_switch_brightness_color_temp(videv_base): self.add_routing(self.KEY_STATE, sw_device, sw_key) self.add_routing(self.KEY_BRIGHTNESS, br_device, br_key) self.add_routing(self.KEY_COLOR_TEMP, ct_device, ct_key) - # - self.__tx_capabilities__() class videv_heating(videv_base): @@ -111,8 +101,6 @@ class videv_heating(videv_base): self.add_display(self.KEY_VALVE_TEMPERATURE_SETPOINT, heating_function, heating_function.KEY_TEMPERATURE_SETPOINT) self.add_display(self.KEY_BOOST_TIMER, heating_function, heating_function.KEY_BOOST_TIMER) self.add_display(self.KEY_TEMPERATURE, heating_function, heating_function.KEY_TEMPERATURE_CURRENT, False) - # - self.__tx_capabilities__() class videv_multistate(videv_base): @@ -126,14 +114,10 @@ class videv_multistate(videv_base): self.__tx__(self.KEY_STATE % i, False) # device.add_callback(key_for_device, None, self.__index_rx__, True) - # - self.__tx_capabilities__() def __index_rx__(self, device, key, data): for i in range(0, self.num_states): self.__tx__(self.KEY_STATE % i, i == data) - # - self.__tx_capabilities__() class videv_audio_player(videv_base): @@ -148,18 +132,10 @@ class videv_audio_player(videv_base): # for audio_device in args: audio_device.add_callback(audio_device.KEY_TITLE, None, self.__title_rx__, True) - # - self.__tx_capabilities__() def __title_rx__(self, device, key, data): self.__tx__(self.KEY_TITLE, data or self.NO_TITLE) - @property - def capabilities(self): - super().capabilities - self.__capabilities__[self.KEY_TITLE] = {'display': True} - return self.__capabilities__ - class videv_warnings(videv_base): MAX_WARNINGS = 10 @@ -188,8 +164,6 @@ class all_off(videv_base): # register mqtt callbacks for all my keys for key in self.__inst_dict__: mqtt_client.add_callback(topic + "/" + key, self.all_off) - # - self.__tx_capabilities__() def __check_inst_capabilities__(self, name, inst): # fits to specified classes @@ -220,14 +194,3 @@ class all_off(videv_base): def all_off(self, client, userdata, message): key = message.topic[len(self.topic) + 1:] self.__inst_dict__[key].all_off() - self.__tx_capabilities__() - - @property - def capabilities(self): - if self.__capabilities__ is None: - self.__capabilities__ = {} - self.__capabilities__['__type__'] = self.__class__.__name__ - for key in self.__inst_dict__: - self.__capabilities__[key] = {} - self.__capabilities__[key]['control'] = True - return self.__capabilities__ diff --git a/smart_brain.py b/smart_brain.py index 92117f8..96e2366 100644 --- a/smart_brain.py +++ b/smart_brain.py @@ -13,7 +13,7 @@ logger = logging.getLogger(config.APP_NAME) VERS_MAJOR = 1 VERS_MINOR = 2 -VERS_PATCH = 4 +VERS_PATCH = 5 INFO_TOPIC = "__info__" INFO_DATA = {