101 lines
4.6 KiB
Python
101 lines
4.6 KiB
Python
|
import config
|
||
|
import devices
|
||
|
import logging
|
||
|
import mqtt
|
||
|
import report
|
||
|
import time
|
||
|
|
||
|
|
||
|
class device_creator(dict):
|
||
|
def __init__(self, mqtt_client):
|
||
|
self.mqtt_client = mqtt_client
|
||
|
#
|
||
|
# ground floor west
|
||
|
# floor
|
||
|
l1 = self.add_device(devices.livarno.sw_br_ct, config.TOPIC_GFW_FLOOR_MAIN_LIGHT_ZIGBEE % 1)
|
||
|
l2 = self.add_device(devices.livarno.sw_br_ct, config.TOPIC_GFW_FLOOR_MAIN_LIGHT_ZIGBEE % 2)
|
||
|
self.add_device(devices.shelly.sw_plain, config.TOPIC_GFW_FLOOR_MAIN_LIGHT_SHELLY, cd_r0=[l1, l2])
|
||
|
|
||
|
# marion
|
||
|
self.add_device(devices.shelly.sw_plain, config.TOPIC_GFW_MARION_MAIN_LIGHT_SHELLY)
|
||
|
self.add_device(devices.null, config.TOPIC_GFW_MARION_HEATING_VALVE_ZIGBEE)
|
||
|
|
||
|
# dirk
|
||
|
l = self.add_device(devices.tradfri.sw_br_ct, config.TOPIC_GFW_DIRK_MAIN_LIGHT_ZIGBEE)
|
||
|
self.add_device(devices.shelly.sw_plain, config.TOPIC_GFW_DIRK_MAIN_LIGHT_SHELLY, cd_r0=[l])
|
||
|
self.add_device(devices.null, config.TOPIC_GFW_DIRK_INPUT_DEVICE)
|
||
|
self.add_device(devices.null, config.TOPIC_GFW_DIRK_POWERPLUG)
|
||
|
self.add_device(devices.tradfri.sw_br_ct, config.TOPIC_GFW_DIRK_DESK_LIGHT_ZIGBEE)
|
||
|
self.add_device(devices.null, config.TOPIC_GFW_DIRK_HEATING_VALVE_ZIGBEE)
|
||
|
|
||
|
# first floor west
|
||
|
# julian
|
||
|
l = self.add_device(devices.tradfri.sw_br_ct, config.TOPIC_FFW_JULIAN_MAIN_LIGHT_ZIGBEE)
|
||
|
self.add_device(devices.shelly.sw_plain, config.TOPIC_FFW_JULIAN_MAIN_LIGHT_SHELLY, cd_r0=[l])
|
||
|
|
||
|
# bath
|
||
|
self.add_device(devices.null, config.TOPIC_FFW_BATH_HEATING_VALVE_ZIGBEE)
|
||
|
|
||
|
# livingroom
|
||
|
l = self.add_device(devices.tradfri.sw_br_ct, config.TOPIC_FFW_LIVINGROOM_MAIN_LIGHT_ZIGBEE)
|
||
|
self.add_device(devices.shelly.sw_plain, config.TOPIC_FFW_LIVINGROOM_MAIN_LIGHT_SHELLY, cd_r0=[l])
|
||
|
|
||
|
# sleep
|
||
|
l = self.add_device(devices.tradfri.sw_br, config.TOPIC_FFW_SLEEP_MAIN_LIGHT_ZIGBEE)
|
||
|
self.add_device(devices.shelly.sw_plain, config.TOPIC_FFW_SLEEP_MAIN_LIGHT_SHELLY, cd_r0=[l])
|
||
|
|
||
|
|
||
|
# first floor east
|
||
|
# floor
|
||
|
self.add_device(devices.shelly.sw_plain, config.TOPIC_FFE_FLOOR_MAIN_LIGHT_SHELLY)
|
||
|
|
||
|
# kitchen
|
||
|
self.add_device(devices.shelly.sw_plain, config.TOPIC_FFE_KITCHEN_MAIN_LIGHT_SHELLY)
|
||
|
self.add_device(devices.null, config.TOPIC_FFE_KITCHEN_CIRCULATION_PUMP_SHELLY)
|
||
|
|
||
|
# diningroom
|
||
|
self.add_device(devices.shelly.sw_plain, config.TOPIC_FFE_DININGROOM_MAIN_LIGHT_SHELLY)
|
||
|
self.add_device(devices.null, config.TOPIC_FFE_DININGROOM_FLOOR_LAMP_POWERPLUG)
|
||
|
self.add_device(devices.null, config.TOPIC_FFE_DININGROOM_GARLAND_POWERPLUG)
|
||
|
|
||
|
# sleep
|
||
|
l = self.add_device(devices.tradfri.sw_br_ct, config.TOPIC_FFE_SLEEP_MAIN_LIGHT_ZIGBEE)
|
||
|
self.add_device(devices.shelly.sw_plain, config.TOPIC_FFE_SLEEP_MAIN_LIGHT_SHELLY, cd_r0=[l])
|
||
|
self.add_device(devices.null, config.TOPIC_FFE_SLEEP_INPUT_DEVICE)
|
||
|
self.add_device(devices.tradfri.sw_br, config.TOPIC_FFE_SLEEP_BED_LIGHT_DI_ZIGBEE)
|
||
|
self.add_device(devices.null, config.TOPIC_FFE_SLEEP_BED_LIGHT_MA_POWERPLUG)
|
||
|
self.add_device(devices.null, config.TOPIC_FFE_SLEEP_HEATING_VALVE_ZIGBEE)
|
||
|
|
||
|
# livingroom
|
||
|
l = self.add_device(devices.tradfri.sw_br_ct, config.TOPIC_FFE_LIVINGROOM_MAIN_LIGHT_ZIGBEE)
|
||
|
self.add_device(devices.shelly.sw_plain, config.TOPIC_FFE_LIVINGROOM_MAIN_LIGHT_SHELLY, cd_r0=[l])
|
||
|
for i in range(1,7):
|
||
|
self.add_device(devices.tradfri.sw_br_ct, config.TOPIC_FFE_LIVINGROOM_FLOOR_LAMP_ZIGBEE % i)
|
||
|
self.add_device(devices.null, config.TOPIC_FFE_LIVINGROOM_XMAS_TREE_POWERPLUG)
|
||
|
self.add_device(devices.null, config.TOPIC_FFE_LIVINGROOM_XMAS_STAR_POWERPLUG)
|
||
|
|
||
|
|
||
|
# first floor east
|
||
|
# floor
|
||
|
self.add_device(devices.shelly.sw_plain, config.TOPIC_STW_STAIRWAY_MAIN_LIGHT_SHELLY)
|
||
|
self.add_device(devices.null, config.TOPIC_STW_STAIRWAY_MAIN_LIGHT_MOTION_SENSOR_FF)
|
||
|
self.add_device(devices.null, config.TOPIC_STW_STAIRWAY_MAIN_LIGHT_MOTION_SENSOR_GF)
|
||
|
|
||
|
def add_device(self, deviceclass, topic, **kwargs):
|
||
|
self[topic] = deviceclass(self.mqtt_client, topic, **kwargs)
|
||
|
return self[topic]
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
report.stdoutLoggingConfigure((
|
||
|
(config.APP_NAME, logging.DEBUG),
|
||
|
('devices', logging.DEBUG),
|
||
|
), report.SHORT_FMT)
|
||
|
|
||
|
mc = mqtt.mqtt_client(host=config.MQTT_SERVER, port=config.MQTT_PORT, username=config.MQTT_USER,
|
||
|
password=config.MQTT_PASSWORD, name='home_emulation')
|
||
|
|
||
|
device_dict = device_creator(mc)
|
||
|
|
||
|
while (True):
|
||
|
time.sleep(1)
|