From 34e7cab81875bb56436aa69b663daac458034593 Mon Sep 17 00:00:00 2001 From: Dirk Alders Date: Tue, 20 Dec 2022 19:38:57 +0100 Subject: [PATCH] bed_light fading implemented --- devices/__init__.py | 14 +++++++++++-- function/__init__.py | 40 +++++++++++++++++++++--------------- function/first_floor_east.py | 8 ++++++++ 3 files changed, 43 insertions(+), 19 deletions(-) diff --git a/devices/__init__.py b/devices/__init__.py index 3b6306f..f62af80 100644 --- a/devices/__init__.py +++ b/devices/__init__.py @@ -3,7 +3,7 @@ # """ devices (DEVICES) -=========== +================= **Author:** @@ -369,10 +369,11 @@ class tradfri_light(base): KEY_OUTPUT_0 = "state" KEY_BRIGHTNESS = "brightness" KEY_COLOR_TEMP = "color_temp" + KEY_BRIGHTNESS_FADE = "brightness_move" # TX_TOPIC = 'set' TX_TYPE = base.TX_DICT - TX_FILTER_DATA_KEYS = [KEY_OUTPUT_0, KEY_BRIGHTNESS, KEY_COLOR_TEMP] + TX_FILTER_DATA_KEYS = [KEY_OUTPUT_0, KEY_BRIGHTNESS, KEY_COLOR_TEMP, KEY_BRIGHTNESS_FADE] # RX_KEYS = [KEY_LINKQUALITY, KEY_OUTPUT_0, KEY_BRIGHTNESS, KEY_COLOR_TEMP] RX_IGNORE_TOPICS = [TX_TOPIC] @@ -432,6 +433,15 @@ class tradfri_light(base): """brightness: [0, ..., 100]""" self.pack(self.KEY_BRIGHTNESS, brightness) + def brightness_inc(self, speed=40): + self.pack(self.KEY_BRIGHTNESS_FADE, speed) + + def brightness_dec(self, speed=-40): + self.brightness_inc(speed) + + def brightness_stop(self): + self.brightness_inc(0) + def set_color_temp(self, color_temp): """color_temp: [0, ..., 100]""" self.pack(self.KEY_COLOR_TEMP, color_temp) diff --git a/function/__init__.py b/function/__init__.py index 1b89df0..4fcba43 100644 --- a/function/__init__.py +++ b/function/__init__.py @@ -18,31 +18,35 @@ import inspect class all_functions(object): def __init__(self, mqtt_client): - self.rooms = {} + self.mqtt_client = mqtt_client + # self.__devices__ = None # - # ground floor west - # - self.gfw_floor = ground_floor_west_floor(mqtt_client) - self.gfw_marion = ground_floor_west_marion(mqtt_client) - self.gfw_dirk = ground_floor_west_dirk(mqtt_client) + # add rooms # + # # ground floor west + self.gfw_floor = ground_floor_west_floor(self.mqtt_client) + self.gfw_marion = ground_floor_west_marion(self.mqtt_client) + self.gfw_dirk = ground_floor_west_dirk(self.mqtt_client) # first floor west - # - self.ffw_julian = first_floor_west_julian(mqtt_client) - self.ffw_living = first_floor_west_living(mqtt_client) - # + self.ffw_julian = first_floor_west_julian(self.mqtt_client) + self.ffw_living = first_floor_west_living(self.mqtt_client) # first floor east + self.ffe_floor = first_floor_east_floor(self.mqtt_client) + self.ffe_kitchen = first_floor_east_kitchen(self.mqtt_client) + self.ffe_dining = first_floor_east_dining(self.mqtt_client) + self.ffe_sleep_madi = first_floor_east_sleep_madi(self.mqtt_client) + self.ffe_living = first_floor_east_living(self.mqtt_client) # - self.ffe_floor = first_floor_east_floor(mqtt_client) - self.ffe_kitchen = first_floor_east_kitchen(mqtt_client) - self.ffe_dining = first_floor_east_dining(mqtt_client) - self.ffe_sleep_madi = first_floor_east_sleep_madi(mqtt_client) - self.ffe_living = first_floor_east_living(mqtt_client) + # additional functionality # - # Input devices sleep_madi + self.init_input_device_sleep_madi_functionality() + + def init_input_device_sleep_madi_functionality(self): + # + self.ffe_button_tradfri_sleep = devices.tradfri_button( + self.mqtt_client, topic="zigbee_og_e/input_device/og_east") # - self.ffe_button_tradfri_sleep = devices.tradfri_button(mqtt_client, topic="zigbee_og_e/input_device/og_east") self.ffe_button_tradfri_sleep.add_callback(devices.tradfri_button.KEY_ACTION, "toggle", self.ffe_sleep_madi.toggle_main_light) self.ffe_button_tradfri_sleep.add_callback(devices.tradfri_button.KEY_ACTION, "brightness_up_click", @@ -51,6 +55,8 @@ class all_functions(object): self.ffe_sleep_madi.toggle_bed_light_di) self.ffe_button_tradfri_sleep.add_callback(devices.tradfri_button.KEY_ACTION, "arrow_right_click", self.ffe_floor.toggle_main_light) + self.ffe_button_tradfri_sleep.add_callback(devices.tradfri_button.KEY_ACTION, None, + self.ffe_sleep_madi.fade_bed_light) def devicelist(self): if self.__devices__ is None: diff --git a/function/first_floor_east.py b/function/first_floor_east.py index 3831181..0620bb2 100644 --- a/function/first_floor_east.py +++ b/function/first_floor_east.py @@ -92,6 +92,14 @@ class first_floor_east_sleep_madi(room_shelly_tradfri_light): logger.info("Toggeling \"%s\" main light", type(self).__name__) self.main_light_shelly.set_output_0("toggle") + def fade_bed_light(self, device, topic, data): + if (data == 'brightness_up_hold'): + self.bed_light_di_tradfri.brightness_inc() + elif (data == 'brightness_down_hold'): + self.bed_light_di_tradfri.brightness_dec() + elif (data.startswith('brightness') and data.endswith('release')): + self.bed_light_di_tradfri.brightness_stop() + def gui_switch_command_bed_light_di(self, device, key, data): logger.info("Switching \"%s\" bed light dirk: %s", type(self).__name__, str(data)) self.bed_light_di_tradfri.set_output_0(data)