import config import random import report import time from mqtt import mqtt_client from simulation.rooms import house from .help import testSession from .help import STATES_SW, STATES_BR, STATES_CT, STATES_TEMP from tests.common_testcases import device_follow, device_flash, FLASH_TRIGGER_LONGPUSH, FLASH_TRIGGER_ACTIVATE def rand_tcel(): return random.choice(5 * [report.TCEL_FULL] + 3 * [report.TCEL_SHORT] + 2 * [report.TCEL_SMOKE]) def device_follow_sw_with_keys(ts, master, master_key, slave, slave_key, single=False): master_name = master.get_name(master_key) slave_name = slave.get_name(slave_key) # testcase_id = master_name + " -> " + slave_name ts.testCase( testcase_id, report.TCEL_SINGLE if single else rand_tcel(), device_follow, master, master_key, slave, slave_key, STATES_SW, None ) def device_follow_sw(ts, master, slave, single=False): device_follow_sw_with_keys(ts, master, master.KEY_OUTPUT_0, slave, slave.KEY_OUTPUT_0) def device_follow_br(ts, master, slave, switch_on=None, single=False): master_name = master.get_name(master.KEY_BRIGHTNESS) slave_name = slave.get_name(slave.KEY_BRIGHTNESS) # testcase_id = master_name + " -> " + slave_name ts.testCase( testcase_id, report.TCEL_SINGLE if single else rand_tcel(), device_follow, master, master.KEY_BRIGHTNESS, slave, slave.KEY_BRIGHTNESS, STATES_BR, switch_on ) def device_follow_ct(ts, master, slave, switch_on=None, single=False): master_name = master.get_name(master.KEY_COLOR_TEMP) slave_name = slave.get_name(slave.KEY_COLOR_TEMP) # testcase_id = master_name + " -> " + slave_name ts.testCase( testcase_id, report.TCEL_SINGLE if single else rand_tcel(), device_follow, master, master.KEY_COLOR_TEMP, slave, slave.KEY_COLOR_TEMP, STATES_CT, switch_on ) def device_follow_temp(ts, master, slave, single=False): master_name = master.get_name(master.KEY_USER_TEMPERATURE_SETPOINT) slave_name = slave.get_name(slave.KEY_TEMPERATURE_SETPOINT) # testcase_id = master_name + " -> " + slave_name ts.testCase( testcase_id, report.TCEL_SINGLE if single else rand_tcel(), device_follow, master, master.KEY_USER_TEMPERATURE_SETPOINT, slave, slave.KEY_TEMPERATURE_SETPOINT, STATES_TEMP, None ) def device_flash_by_vers(ts, flash_device, trigger_device, start_state, trigger_vers, single=True): flash_device_flash_key = flash_device.KEY_OUTPUT_0 if trigger_vers == FLASH_TRIGGER_LONGPUSH: trigger_device_key = trigger_device.KEY_LONGPUSH_0 elif trigger_vers == FLASH_TRIGGER_ACTIVATE: trigger_device_key = trigger_device.KEY_OUTPUT_0 else: raise AttributeError("Unknown trigger_vers in device_flash: %s", repr(trigger_vers)) trigger_name = trigger_device.get_name(trigger_device_key) flash_name = flash_device.get_name(flash_device_flash_key) + " from %s" % repr(start_state) # testcase_id = trigger_name + " -> " + flash_name ts.testCase( testcase_id, report.TCEL_SINGLE if single else report.TCEL_SHORT, device_flash, flash_device, flash_device_flash_key, trigger_device, trigger_device_key, start_state, ) def preconditions(ts: testSession, mc: mqtt_client, h: house): def precond_test(tLogger): mc.send("videv/all/oof", True) time.sleep(0.5) tLogger.debug("Collecting precondition logs...") # Clean-Up ts.testCase('Clean-Up', report.TCEL_SINGLE, precond_test) def ffe(ts: testSession, mc: mqtt_client, h: house): # # ffe.livingroom # room = h.ffe.livingroom # Switching devices ################################## # main_light videv<-->shelly device_follow_sw(ts, room.videv_main_light, room.switch_main_light) device_follow_sw(ts, room.switch_main_light, room.videv_main_light) # floor_lamp videv<->zigbee + main_light->zigbee device_follow_sw(ts, room.videv_floor_light, room.light_floor_light) device_follow_sw(ts, room.light_floor_light, room.videv_floor_light) device_follow_sw(ts, room.switch_main_light, room.light_floor_light) # xmas_tree videv<-->shelly if config.CHRISTMAS: device_follow_sw(ts, room.videv_xmas_tree_light, room.switch_xmas_tree_light) device_follow_sw(ts, room.switch_xmas_tree_light, room.videv_xmas_tree_light) # Brightness and Colortemperature #################### device_follow_br(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) device_follow_br(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) device_follow_ct(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) device_follow_ct(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) device_follow_br(ts, room.videv_floor_light, room.light_floor_light, room.light_floor_light) device_follow_br(ts, room.light_floor_light, room.videv_floor_light, room.light_floor_light) device_follow_ct(ts, room.videv_floor_light, room.light_floor_light, room.light_floor_light) device_follow_ct(ts, room.light_floor_light, room.videv_floor_light, room.light_floor_light) # Temperature ######################################## device_follow_temp(ts, room.videv_heating, room.valve_heating) # # ffe.sleep # room = h.ffe.sleep # Switching devices ################################## # main_light videv<-->shelly device_follow_sw(ts, room.videv_main_light, room.switch_main_light) device_follow_sw(ts, room.switch_main_light, room.videv_main_light) # bed_light_di videv<-->zigbee device_follow_sw(ts, room.videv_bed_dirk_light, room.light_bed_dirk_light) device_follow_sw(ts, room.light_bed_dirk_light, room.videv_bed_dirk_light) # device_follow_sw(ts, room.videv_bed_marion_light, room.switch_bed_marion_light) device_follow_sw(ts, room.switch_bed_marion_light, room.videv_bed_marion_light) # Brightness and Colortemperature #################### device_follow_br(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) device_follow_br(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) device_follow_ct(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) device_follow_ct(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) device_follow_br(ts, room.videv_bed_dirk_light, room.light_bed_dirk_light, room.light_bed_dirk_light) device_follow_br(ts, room.light_bed_dirk_light, room.videv_bed_dirk_light, room.light_bed_dirk_light) # TODO: Wardrobe # Temperature ######################################## device_follow_temp(ts, room.videv_heating, room.valve_heating) # # ffe.diningroom # room = h.ffe.diningroom # Switching devices ################################## # main_light videv<-->shelly device_follow_sw(ts, room.videv_main_light, room.switch_main_light) device_follow_sw(ts, room.switch_main_light, room.videv_main_light) # floor_lamp videv<->zigbee + main_light->zigbee device_follow_sw(ts, room.videv_floor_light, room.switch_floor_light) device_follow_sw(ts, room.switch_floor_light, room.videv_floor_light) device_follow_sw(ts, room.switch_main_light, room.switch_floor_light) # garland if config.CHRISTMAS: device_follow_sw(ts, room.videv_garland_light, room.switch_garland_light) device_follow_sw(ts, room.switch_garland_light, room.videv_garland_light) # # ffe.kitchen # room = h.ffe.kitchen # Switching devices ################################## # main_light videv<-->shelly device_follow_sw(ts, room.videv_main_light, room.switch_main_light) device_follow_sw(ts, room.switch_main_light, room.videv_main_light) # circulation_pump device_follow_sw(ts, room.videv_circulation_pump, room.switch_circulation_pump) device_follow_sw(ts, room.switch_circulation_pump, room.videv_circulation_pump) # circulation pump feedback (flash test) device_flash_by_vers(ts, room.switch_main_light, room.switch_circulation_pump, True, FLASH_TRIGGER_ACTIVATE, single=True) device_flash_by_vers(ts, room.switch_main_light, room.switch_circulation_pump, False, FLASH_TRIGGER_ACTIVATE, single=True) # Brightness and Colortemperature #################### # TODO: device_follow_br(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) # TODO: device_follow_br(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) # TODO: device_follow_ct(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) # TODO: device_follow_ct(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) # Temperature ######################################## device_follow_temp(ts, room.videv_heating, room.valve_heating) # # ffe.floor # # Switching devices ################################## room = h.ffe.floor # main_light videv<-->shelly device_follow_sw(ts, room.videv_main_light, room.switch_main_light) device_follow_sw(ts, room.switch_main_light, room.videv_main_light) # area all_off (flash test) device_flash_by_vers(ts, room.switch_main_light, room.switch_main_light, True, FLASH_TRIGGER_LONGPUSH) device_flash_by_vers(ts, room.switch_main_light, room.switch_main_light, False, FLASH_TRIGGER_LONGPUSH) def ffw(ts: testSession, mc: mqtt_client, h: house): # # ffw.livingroom # room = h.ffw.livingroom # Switching devices ################################## # main_light videv<-->shelly device_follow_sw(ts, room.videv_main_light, room.switch_main_light) device_follow_sw(ts, room.switch_main_light, room.videv_main_light) # Brightness and Colortemperature #################### device_follow_br(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) device_follow_br(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) device_follow_ct(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) device_follow_ct(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) # Temperature ######################################## device_follow_temp(ts, room.videv_heating, room.valve_heating) # # ffw.sleep # room = h.ffw.sleep # Switching devices ################################## # main_light videv<-->shelly device_follow_sw(ts, room.videv_main_light, room.switch_main_light) device_follow_sw(ts, room.switch_main_light, room.videv_main_light) # TODO: window_light # Brightness and Colortemperature #################### device_follow_br(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) device_follow_br(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) # Temperature ######################################## device_follow_temp(ts, room.videv_heating, room.valve_heating) # # ffw.julian # room = h.ffw.julian # Switching devices ################################## # main_light videv<-->shelly device_follow_sw(ts, room.videv_main_light, room.switch_main_light) device_follow_sw(ts, room.switch_main_light, room.videv_main_light) # Brightness and Colortemperature #################### device_follow_br(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) device_follow_br(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) device_follow_ct(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) device_follow_ct(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) # Temperature ######################################## device_follow_temp(ts, room.videv_heating, room.valve_heating) # # ffw.bath # room = h.ffw.bath # Switching devices ################################## # main_light videv<-->shelly device_follow_sw(ts, room.videv_main_light, room.switch_main_light) device_follow_sw(ts, room.switch_main_light, room.videv_main_light) # Temperature ######################################## device_follow_temp(ts, room.videv_heating, room.valve_heating) # # ffw.floor # room = h.ffw.floor # Switching devices ################################## # main_light videv<-->shelly device_follow_sw(ts, room.videv_main_light, room.switch_main_light) device_follow_sw(ts, room.switch_main_light, room.videv_main_light) # area all_off (flash test) device_flash_by_vers(ts, room.switch_main_light, room.switch_main_light, True, FLASH_TRIGGER_LONGPUSH) device_flash_by_vers(ts, room.switch_main_light, room.switch_main_light, False, FLASH_TRIGGER_LONGPUSH) def gfe(ts: testSession, mc: mqtt_client, h: house): # # gfe. # # room = h.gfe # Switching devices ################################## pass def gfw(ts: testSession, mc: mqtt_client, h: house): # # gfw.dirk # room = h.gfw.dirk # Switching devices ################################## # main_light videv<-->shelly device_follow_sw(ts, room.videv_main_light, room.switch_main_light) device_follow_sw(ts, room.switch_main_light, room.videv_main_light) # desk_light videv<-->tradfri device_follow_sw(ts, room.videv_desk_light, room.light_desk_light) device_follow_sw(ts, room.light_desk_light, room.videv_desk_light) # desk_light videv<-->powerplug device_follow_sw(ts, room.videv_pc_dock, room.switch_pc_dock) device_follow_sw(ts, room.switch_pc_dock, room.videv_pc_dock) # powerplug videv <-> channel device_follow_sw_with_keys(ts, room.videv_amplifier, room.videv_amplifier.KEY_OUTPUT_0, room.switch_powerplug_4, room.KEY_POWERPLUG_AMPLIFIER) device_follow_sw_with_keys(ts, room.switch_powerplug_4, room.KEY_POWERPLUG_AMPLIFIER, room.videv_amplifier, room.videv_amplifier.KEY_OUTPUT_0) device_follow_sw_with_keys(ts, room.videv_phono, room.videv_phono.KEY_OUTPUT_0, room.switch_powerplug_4, room.KEY_POWERPLUG_PHONO) device_follow_sw_with_keys(ts, room.switch_powerplug_4, room.KEY_POWERPLUG_PHONO, room.videv_phono, room.videv_phono.KEY_OUTPUT_0) device_follow_sw_with_keys(ts, room.videv_cd_player, room.videv_cd_player.KEY_OUTPUT_0, room.switch_powerplug_4, room.KEY_POWERPLUG_CD_PLAYER) device_follow_sw_with_keys(ts, room.switch_powerplug_4, room.KEY_POWERPLUG_CD_PLAYER, room.videv_cd_player, room.videv_cd_player.KEY_OUTPUT_0) device_follow_sw_with_keys(ts, room.videv_bluetooth, room.videv_bluetooth.KEY_OUTPUT_0, room.switch_powerplug_4, room.KEY_POWERPLUG_BT) device_follow_sw_with_keys(ts, room.switch_powerplug_4, room.KEY_POWERPLUG_BT, room.videv_bluetooth, room.videv_bluetooth.KEY_OUTPUT_0) # powerplug follow device_follow_sw_with_keys(ts, room.switch_powerplug_4, room.KEY_POWERPLUG_BT, room.switch_powerplug_4, room.KEY_POWERPLUG_AMPLIFIER) device_follow_sw_with_keys(ts, room.switch_powerplug_4, room.KEY_POWERPLUG_CD_PLAYER, room.switch_powerplug_4, room.KEY_POWERPLUG_AMPLIFIER) device_follow_sw_with_keys(ts, room.switch_powerplug_4, room.KEY_POWERPLUG_PHONO, room.switch_powerplug_4, room.KEY_POWERPLUG_AMPLIFIER) # Brightness and Colortemperature #################### device_follow_br(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) device_follow_br(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) device_follow_ct(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) device_follow_ct(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) device_follow_br(ts, room.videv_desk_light, room.light_desk_light, room.light_desk_light) device_follow_br(ts, room.light_desk_light, room.videv_desk_light, room.light_desk_light) device_follow_ct(ts, room.videv_desk_light, room.light_desk_light, room.light_desk_light) device_follow_ct(ts, room.light_desk_light, room.videv_desk_light, room.light_desk_light) # Temperature ######################################## device_follow_temp(ts, room.videv_heating, room.valve_heating) # # gfw.marion # room = h.gfw.marion # Switching devices ################################## # main_light videv<-->shelly device_follow_sw(ts, room.videv_main_light, room.switch_main_light) device_follow_sw(ts, room.switch_main_light, room.videv_main_light) # floor_lamp videv<->zigbee + main_light->zigbee device_follow_sw(ts, room.videv_window_light, room.light_window_light) device_follow_sw(ts, room.light_window_light, room.videv_window_light) device_follow_sw(ts, room.switch_main_light, room.light_window_light) # Temperature ######################################## device_follow_temp(ts, room.videv_heating, room.valve_heating) # # gfw.floor # room = h.gfw.floor # Switching devices ################################## # main_light videv<-->shelly device_follow_sw(ts, room.videv_main_light, room.switch_main_light) device_follow_sw(ts, room.switch_main_light, room.videv_main_light) # Brightness and Colortemperature #################### device_follow_br(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) device_follow_br(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) device_follow_ct(ts, room.videv_main_light, room.light_main_light, room.switch_main_light) device_follow_ct(ts, room.light_main_light, room.videv_main_light, room.switch_main_light) def stw(ts: testSession, mc: mqtt_client, h: house): # # stairways # room = h.stairway # Switching devices ################################## # main_light videv<-->shelly device_follow_sw(ts, room.videv_main_light, room.switch_main_light) device_follow_sw(ts, room.switch_main_light, room.videv_main_light) # area all_off (flash test) device_flash_by_vers(ts, room.switch_main_light, room.switch_main_light, True, FLASH_TRIGGER_LONGPUSH) device_flash_by_vers(ts, room.switch_main_light, room.switch_main_light, False, FLASH_TRIGGER_LONGPUSH) def inter_room(ts: testSession, mc: mqtt_client, h: house): # # gfw.dirk.swith # input = h.gfw.dirk.switch_main_light output = h.gfw.floor.switch_main_light device_follow_sw_with_keys(ts, input, input.KEY_INPUT_1, output, output.KEY_OUTPUT_0)