diff --git a/config_example/config.py b/config_example/config.py index f8bafd5..0189782 100644 --- a/config_example/config.py +++ b/config_example/config.py @@ -21,9 +21,16 @@ CHRISTMAS = True USER_ON_TIME_STAIRWAYS = 100 DEFAULT_TEMPERATURE = { - TOPIC_FFE_SLEEP_HEATING_VALVE_ZIGBEE: 21.5, - TOPIC_GFW_DIRK_HEATING_VALVE_ZIGBEE: 25, - TOPIC_GFW_MARION_HEATING_VALVE_ZIGBEE: 22, - TOPIC_FFW_BATH_HEATING_VALVE_ZIGBEE: 23 + # GFW + TOPIC_GFW_DIRK_HEATING_VALVE_ZIGBEE: 21.5, + TOPIC_GFW_MARION_HEATING_VALVE_ZIGBEE: 21.5, + # FFW + TOPIC_FFW_BATH_HEATING_VALVE_ZIGBEE: 21.5, + TOPIC_FFW_LIVINGROOM_HEATING_VALVE_ZIGBEE: 21.5, + TOPIC_FFW_JULIAN_HEATING_VALVE_ZIGBEE: 21.5, + TOPIC_FFW_SLEEP_HEATING_VALVE_ZIGBEE: 21.5, + # FFE + TOPIC_FFE_DININGROOM_HEATING_VALVE_ZIGBEE: 21.5, + TOPIC_FFE_SLEEP_HEATING_VALVE_ZIGBEE: 21.5 } diff --git a/function/first_floor_east.py b/function/first_floor_east.py index 8774364..7e10eaf 100644 --- a/function/first_floor_east.py +++ b/function/first_floor_east.py @@ -34,12 +34,14 @@ class first_floor_east_floor(room): # Device initialisation # # http://shelly1l-3C6105E4E629 + # main light self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFE_FLOOR_MAIN_LIGHT_SHELLY) super().__init__(mqtt_client) # # Virtual Device Interface # + # main light self.main_light = videv_switching( mqtt_client, config.TOPIC_FFE_FLOOR_MAIN_LIGHT_VIDEV, self.main_light_shelly, devices.shelly.KEY_OUTPUT_0 @@ -52,8 +54,10 @@ class first_floor_east_kitchen(room): # Device initialisation # # http://shelly1l-8CAAB5616C01 + # main light self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFE_KITCHEN_MAIN_LIGHT_SHELLY) # http://shelly1-e89f6d85a466/ + # circulation pump self.circulation_pump_shelly = devices.shelly(mqtt_client, config.TOPIC_FFE_KITCHEN_CIRCULATION_PUMP_SHELLY) super().__init__(mqtt_client) @@ -61,16 +65,19 @@ class first_floor_east_kitchen(room): # # Functionality initialisation # + # circulation pump self.circulation_pump = timer_on_activation(self.circulation_pump_shelly, devices.shelly.KEY_OUTPUT_0, 10*60) self.circulation_pump_shelly.add_callback(devices.shelly.KEY_OUTPUT_0, True, self.main_light_shelly.flash_0_mcb, True) # # Virtual Device Interface # + # main light self.main_light_videv = videv_switching( mqtt_client, config.TOPIC_FFE_KITCHEN_MAIN_LIGHT_VIDEV, self.main_light_shelly, devices.shelly.KEY_OUTPUT_0 ) + # circulation pump self.circulation_pump_videv = videv_switching_timer( mqtt_client, config.TOPIC_FFE_KITCHEN_CIRCULATION_PUMP_VIDEV, self.circulation_pump_shelly, devices.shelly.KEY_OUTPUT_0, @@ -86,8 +93,13 @@ class first_floor_east_dining(room): self.day_events = day_event((6, 0), (22, 0), 30, -30) # http://shelly1l-84CCA8ADD055 + # main light self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFE_DININGROOM_MAIN_LIGHT_SHELLY) + # floor lamp self.floorlamp_powerplug = devices.silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_DININGROOM_FLOOR_LAMP_POWERPLUG) + # heating function + self.heating_valve = devices.brennenstuhl_heatingvalve(mqtt_client, config.TOPIC_FFE_DININGROOM_HEATING_VALVE_ZIGBEE) + # garland if config.CHRISTMAS: self.garland_powerplug = devices.silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_DININGROOM_GARLAND_POWERPLUG) super().__init__(mqtt_client) @@ -97,19 +109,36 @@ class first_floor_east_dining(room): # self.day_events.add_callback(None, True, self.__day_events__, True) + # main light self.main_light_shelly.add_callback(devices.shelly.KEY_OUTPUT_0, None, self.floorlamp_powerplug.set_output_0_mcb, True) + # heating function + self.heating_function = heating_function( + self.heating_valve, + config.DEFAULT_TEMPERATURE[self.heating_valve.topic], + **get_radiator_data(self.heating_valve.topic) + ) + self.heating_function.add_callback(None, None, set_radiator_data, True) + # # Virtual Device Interface # + # main light self.main_light_videv = videv_switching( mqtt_client, config.TOPIC_FFE_DININGROOM_MAIN_LIGHT_VIDEV, self.main_light_shelly, devices.shelly.KEY_OUTPUT_0 ) + # floor lamp self.floorlamp_videv = videv_switching( mqtt_client, config.TOPIC_FFE_DININGROOM_FLOOR_LAMP_VIDEV, self.floorlamp_powerplug, devices.silvercrest_powerplug.KEY_OUTPUT_0 ) + # heating function + self.heating_function_videv = videv_heating( + mqtt_client, config.TOPIC_FFE_DININGROOM_HEATING_VALVE_VIDEV, + self.heating_function + ) + # garland if config.CHRISTMAS: self.garland_videv = videv_switching( mqtt_client, config.TOPIC_FFE_DININGROOM_GARLAND_VIDEV, @@ -131,11 +160,15 @@ class first_floor_east_sleep(room): # Device initialisation # # http://shelly1l-E8DB84A254C7 + # main light self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFE_SLEEP_MAIN_LIGHT_SHELLY) self.main_light_tradfri = devices.tradfri_light(mqtt_client, config.TOPIC_FFE_SLEEP_MAIN_LIGHT_ZIGBEE) + # bed light self.bed_light_di_tradfri = devices.tradfri_light(mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_DI_ZIGBEE) self.bed_light_ma_powerplug = devices.silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_MA_POWERPLUG) + # heating function self.heating_valve = devices.brennenstuhl_heatingvalve(mqtt_client, config.TOPIC_FFE_SLEEP_HEATING_VALVE_ZIGBEE) + # button self.button_tradfri = devices.tradfri_button(mqtt_client, config.TOPIC_FFE_SLEEP_INPUT_DEVICE) super().__init__(mqtt_client) @@ -147,7 +180,6 @@ class first_floor_east_sleep(room): self.brightness_functions = brightness_choose_n_action(self.button_tradfri) self.brightness_functions.add(self.main_light_tradfri, self.main_light_shelly, devices.shelly.KEY_OUTPUT_0) self.brightness_functions.add(self.bed_light_di_tradfri, self.bed_light_di_tradfri, devices.tradfri_light.KEY_OUTPUT_0) - # button / main light self.button_tradfri.add_callback(devices.tradfri_button.KEY_ACTION, devices.tradfri_button.ACTION_TOGGLE, self.main_light_shelly.toggle_output_0_mcb) @@ -168,12 +200,14 @@ class first_floor_east_sleep(room): # # Virtual Device Interface # + # main light self.main_light_videv = videv_switch_brightness_color_temp( mqtt_client, config.TOPIC_FFE_SLEEP_MAIN_LIGHT_VIDEV, self.main_light_shelly, devices.shelly.KEY_OUTPUT_0, self.main_light_tradfri, devices.tradfri_light.KEY_BRIGHTNESS, self.main_light_tradfri, devices.tradfri_light.KEY_COLOR_TEMP ) + # bed light self.bed_light_di_videv = videv_switch_brightness( mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_DI_VIDEV, self.bed_light_di_tradfri, devices.tradfri_light.KEY_OUTPUT_0, @@ -183,10 +217,12 @@ class first_floor_east_sleep(room): mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_MA_VIDEV, self.bed_light_ma_powerplug, devices.silvercrest_powerplug.KEY_OUTPUT_0 ) + # heating function self.heating_function_videv = videv_heating( mqtt_client, config.TOPIC_FFE_SLEEP_HEATING_VALVE_VIDEV, self.heating_function ) + # button self.brightness_functions_device_videv = videv_multistate( mqtt_client, config.TOPIC_FFE_SLEEP_ACTIVE_BRIGHTNESS_DEVICE_VIDEV, brightness_choose_n_action.KEY_ACTIVE_DEVICE, self.brightness_functions, 2 @@ -199,10 +235,13 @@ class first_floor_east_living(room): # Device initialisation # # http://shelly1l-3C6105E3F910 + # main light self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFE_LIVINGROOM_MAIN_LIGHT_SHELLY) self.main_light_tradfri = devices.tradfri_light(mqtt_client, config.TOPIC_FFE_LIVINGROOM_MAIN_LIGHT_ZIGBEE) + # floor lamp self.floorlamp_tradfri = devices.group( *[devices.tradfri_light(mqtt_client, config.TOPIC_FFE_LIVINGROOM_FLOOR_LAMP_ZIGBEE % i) for i in range(1, 7)]) + # xmas tree if config.CHRISTMAS: self.powerplug_xmas_tree = devices.silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_LIVINGROOM_XMAS_TREE_POWERPLUG) self.powerplug_xmas_star = devices.silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_LIVINGROOM_XMAS_STAR_POWERPLUG) @@ -218,18 +257,21 @@ class first_floor_east_living(room): # # Virtual Device Interface # + # main light self.main_light_videv = videv_switch_brightness_color_temp( mqtt_client, config.TOPIC_FFE_LIVINGROOM_MAIN_LIGHT_VIDEV, self.main_light_shelly, devices.shelly.KEY_OUTPUT_0, self.main_light_tradfri, devices.tradfri_light.KEY_BRIGHTNESS, self.main_light_tradfri, devices.tradfri_light.KEY_COLOR_TEMP ) + # floor lamp self.floorlamp_videv = videv_switch_brightness_color_temp( mqtt_client, config.TOPIC_FFE_LIVINGROOM_FLOOR_LAMP_VIDEV, self.floorlamp_tradfri, devices.tradfri_light.KEY_OUTPUT_0, self.floorlamp_tradfri, devices.tradfri_light.KEY_BRIGHTNESS, self.floorlamp_tradfri, devices.tradfri_light.KEY_COLOR_TEMP ) + # xmas tree if config.CHRISTMAS: self.xmas_tree_videv = videv_switching( mqtt_client, config.TOPIC_FFE_LIVINGROOM_XMAS_TREE_VIDEV, diff --git a/function/first_floor_west.py b/function/first_floor_west.py index c4bf8b6..85fcaee 100644 --- a/function/first_floor_west.py +++ b/function/first_floor_west.py @@ -33,27 +33,11 @@ class first_floor_west_julian(room): # Device initialisation # # http://shelly1l-3C6105E43452 + # main light self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFW_JULIAN_MAIN_LIGHT_SHELLY) self.main_light_tradfri = devices.tradfri_light(mqtt_client, config.TOPIC_FFW_JULIAN_MAIN_LIGHT_ZIGBEE) - super().__init__(mqtt_client) - - # - # Virtual Device Interface - # - self.main_light_videv = videv_switch_brightness_color_temp( - mqtt_client, config.TOPIC_FFW_JULIAN_MAIN_LIGHT_VIDEV, - self.main_light_shelly, devices.shelly.KEY_OUTPUT_0, - self.main_light_tradfri, devices.tradfri_light.KEY_BRIGHTNESS, - self.main_light_tradfri, devices.tradfri_light.KEY_COLOR_TEMP - ) - - -class first_floor_west_bath(room): - def __init__(self, mqtt_client): - # - # Device initialisation - # - self.heating_valve = devices.brennenstuhl_heatingvalve(mqtt_client, config.TOPIC_FFW_BATH_HEATING_VALVE_ZIGBEE) + # heating function + self.heating_valve = devices.brennenstuhl_heatingvalve(mqtt_client, config.TOPIC_FFW_JULIAN_HEATING_VALVE_ZIGBEE) super().__init__(mqtt_client) # # Functionality initialisation @@ -69,6 +53,44 @@ class first_floor_west_bath(room): # # Virtual Device Interface # + # main light + self.main_light_videv = videv_switch_brightness_color_temp( + mqtt_client, config.TOPIC_FFW_JULIAN_MAIN_LIGHT_VIDEV, + self.main_light_shelly, devices.shelly.KEY_OUTPUT_0, + self.main_light_tradfri, devices.tradfri_light.KEY_BRIGHTNESS, + self.main_light_tradfri, devices.tradfri_light.KEY_COLOR_TEMP + ) + # heating function + self.heating_function_videv = videv_heating( + mqtt_client, config.TOPIC_FFW_JULIAN_HEATING_VALVE_VIDEV, + self.heating_function + ) + + +class first_floor_west_bath(room): + def __init__(self, mqtt_client): + # + # Device initialisation + # + # heating function + self.heating_valve = devices.brennenstuhl_heatingvalve(mqtt_client, config.TOPIC_FFW_BATH_HEATING_VALVE_ZIGBEE) + super().__init__(mqtt_client) + + # + # Functionality initialisation + # + # heating function + self.heating_function = heating_function( + self.heating_valve, + config.DEFAULT_TEMPERATURE[self.heating_valve.topic], + **get_radiator_data(self.heating_valve.topic) + ) + self.heating_function.add_callback(None, None, set_radiator_data, True) + + # + # Virtual Device Interface + # + # heating function self.heating_function_videv = videv_heating( mqtt_client, config.TOPIC_FFW_BATH_HEATING_VALVE_VIDEV, self.heating_function @@ -81,19 +103,39 @@ class first_floor_west_living(room): # Device initialisation # # http://shelly1l-84CCA8ACE6A1 + # main light self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFW_LIVINGROOM_MAIN_LIGHT_SHELLY) self.main_light_tradfri = devices.tradfri_light(mqtt_client, config.TOPIC_FFW_LIVINGROOM_MAIN_LIGHT_ZIGBEE) + # heating function + self.heating_valve = devices.brennenstuhl_heatingvalve(mqtt_client, config.TOPIC_FFW_LIVINGROOM_HEATING_VALVE_ZIGBEE) super().__init__(mqtt_client) + # + # Functionality initialisation + # + # heating function + self.heating_function = heating_function( + self.heating_valve, + config.DEFAULT_TEMPERATURE[self.heating_valve.topic], + **get_radiator_data(self.heating_valve.topic) + ) + self.heating_function.add_callback(None, None, set_radiator_data, True) + # # Virtual Device Interface # + # main light self.main_light_videv = videv_switch_brightness_color_temp( mqtt_client, config.TOPIC_FFW_LIVINGROOM_MAIN_LIGHT_VIDEV, self.main_light_shelly, devices.shelly.KEY_OUTPUT_0, self.main_light_tradfri, devices.tradfri_light.KEY_BRIGHTNESS, self.main_light_tradfri, devices.tradfri_light.KEY_COLOR_TEMP ) + # heating function + self.heating_function_videv = videv_heating( + mqtt_client, config.TOPIC_FFW_LIVINGROOM_HEATING_VALVE_VIDEV, + self.heating_function + ) class first_floor_west_sleep(room): @@ -102,15 +144,35 @@ class first_floor_west_sleep(room): # Device initialisation # # http://shelly1-3494546A51F2 + # main light self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFW_SLEEP_MAIN_LIGHT_SHELLY) self.main_light_tradfri = devices.tradfri_light(mqtt_client, config.TOPIC_FFW_SLEEP_MAIN_LIGHT_ZIGBEE) + # heating function + self.heating_valve = devices.brennenstuhl_heatingvalve(mqtt_client, config.TOPIC_FFW_SLEEP_HEATING_VALVE_ZIGBEE) super().__init__(mqtt_client) + # + # Functionality initialisation + # + # heating function + self.heating_function = heating_function( + self.heating_valve, + config.DEFAULT_TEMPERATURE[self.heating_valve.topic], + **get_radiator_data(self.heating_valve.topic) + ) + self.heating_function.add_callback(None, None, set_radiator_data, True) + # # Virtual Device Interface # + # main light self.main_light_videv = videv_switch_brightness( mqtt_client, config.TOPIC_FFW_SLEEP_MAIN_LIGHT_VIDEV, self.main_light_shelly, devices.shelly.KEY_OUTPUT_0, self.main_light_tradfri, devices.tradfri_light.KEY_BRIGHTNESS ) + # heating function + self.heating_function_videv = videv_heating( + mqtt_client, config.TOPIC_FFW_SLEEP_HEATING_VALVE_VIDEV, + self.heating_function + ) diff --git a/topics.py b/topics.py index 67447ec..b44047d 100644 --- a/topics.py +++ b/topics.py @@ -40,6 +40,8 @@ TOPIC_GFW_DIRK_HEATING_VALVE_VIDEV = "videv/gfw/dirk/heating_valve" TOPIC_FFW_JULIAN_MAIN_LIGHT_SHELLY = "shellies/ffw/julian/main_light" TOPIC_FFW_JULIAN_MAIN_LIGHT_VIDEV = "videv/ffw/julian/main_light" TOPIC_FFW_JULIAN_MAIN_LIGHT_ZIGBEE = "zigbee/ffw/julian/main_light" +TOPIC_FFW_JULIAN_HEATING_VALVE_ZIGBEE = "zigbee/ffw/julian/heating_valve" +TOPIC_FFW_JULIAN_HEATING_VALVE_VIDEV = "videv/ffw/julian/heating_valve" # bath TOPIC_FFW_BATH_HEATING_VALVE_ZIGBEE = "zigbee/ffw/bath/heating_valve" @@ -49,11 +51,15 @@ TOPIC_FFW_BATH_HEATING_VALVE_VIDEV = "videv/ffw/bath/heating_valve" TOPIC_FFW_LIVINGROOM_MAIN_LIGHT_SHELLY = "shellies/ffw/livingroom/main_light" TOPIC_FFW_LIVINGROOM_MAIN_LIGHT_VIDEV = "videv/ffw/livingroom/main_light" TOPIC_FFW_LIVINGROOM_MAIN_LIGHT_ZIGBEE = "zigbee/ffw/livingroom/main_light" +TOPIC_FFW_LIVINGROOM_HEATING_VALVE_ZIGBEE = "zigbee/ffw/livingroom/heating_valve" +TOPIC_FFW_LIVINGROOM_HEATING_VALVE_VIDEV = "videv/ffw/livingroom/heating_valve" # sleep TOPIC_FFW_SLEEP_MAIN_LIGHT_SHELLY = "shellies/ffw/sleep/main_light" TOPIC_FFW_SLEEP_MAIN_LIGHT_VIDEV = "videv/ffw/sleep/main_light" TOPIC_FFW_SLEEP_MAIN_LIGHT_ZIGBEE = "zigbee/ffw/sleep/main_light" +TOPIC_FFW_SLEEP_HEATING_VALVE_ZIGBEE = "zigbee/ffw/sleep/heating_valve" +TOPIC_FFW_SLEEP_HEATING_VALVE_VIDEV = "videv/ffw/sleep/heating_valve" # first floor east @@ -74,6 +80,8 @@ TOPIC_FFE_DININGROOM_FLOOR_LAMP_POWERPLUG = "zigbee/ffe/diningroom/powerplug_flo TOPIC_FFE_DININGROOM_FLOOR_LAMP_VIDEV = "videv/ffe/diningroom/floorlamp" TOPIC_FFE_DININGROOM_GARLAND_POWERPLUG = "zigbee/ffe/diningroom/garland" TOPIC_FFE_DININGROOM_GARLAND_VIDEV = "videv/ffe/diningroom/garland" +TOPIC_FFE_DININGROOM_HEATING_VALVE_ZIGBEE = "zigbee/ffe/diningroom/heating_valve" +TOPIC_FFE_DININGROOM_HEATING_VALVE_VIDEV = "videv/ffe/diningroom/heating_valve" # sleep TOPIC_FFE_SLEEP_MAIN_LIGHT_SHELLY = "shellies/ffe/sleep/main_light"