337 lines
15 KiB
Python
337 lines
15 KiB
Python
import config
|
|
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
|
|
|
|
# TODO: Compare with nodered capabilities and remove todos in code
|
|
|
|
|
|
def device_follow_sw(ts, master, slave, master_ch=0, slave_ch=0, single=False):
|
|
master_key = getattr(master, "KEY_OUTPUT_%d" % master_ch)
|
|
slave_key = getattr(slave, "KEY_OUTPUT_%d" % slave_ch)
|
|
#
|
|
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 report.TCEL_SMOKE, device_follow,
|
|
master, master_key,
|
|
slave, slave_key,
|
|
STATES_SW, None
|
|
)
|
|
|
|
|
|
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 report.TCEL_SMOKE, 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 report.TCEL_SMOKE, 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 report.TCEL_SMOKE, device_follow,
|
|
master, master.KEY_USER_TEMPERATURE_SETPOINT,
|
|
slave, slave.KEY_TEMPERATURE_SETPOINT,
|
|
STATES_TEMP, None
|
|
)
|
|
|
|
|
|
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.main_light)
|
|
device_follow_sw(ts, room.main_light, room.videv_main_light)
|
|
# floor_lamp videv<->zigbee + main_light->zigbee
|
|
device_follow_sw(ts, room.videv_floor_lamp, room.floor_lamp_zigbee)
|
|
device_follow_sw(ts, room.floor_lamp_zigbee, room.videv_floor_lamp)
|
|
device_follow_sw(ts, room.main_light, room.floor_lamp_zigbee)
|
|
# xmas_tree videv<-->shelly
|
|
if config.CHRISTMAS:
|
|
device_follow_sw(ts, room.videv_xmas_tree, room.xmas_tree)
|
|
device_follow_sw(ts, room.xmas_tree, room.videv_xmas_tree)
|
|
# Brightness and Colortemperature ####################
|
|
device_follow_br(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
device_follow_br(ts, room.main_light_zigbee, room.videv_main_light, room.main_light)
|
|
device_follow_ct(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
device_follow_ct(ts, room.main_light_zigbee, room.videv_main_light, room.main_light)
|
|
device_follow_br(ts, room.videv_floor_lamp, room.floor_lamp_zigbee, room.floor_lamp_zigbee)
|
|
device_follow_br(ts, room.floor_lamp_zigbee, room.videv_floor_lamp, room.floor_lamp_zigbee)
|
|
device_follow_ct(ts, room.videv_floor_lamp, room.floor_lamp_zigbee, room.floor_lamp_zigbee)
|
|
device_follow_ct(ts, room.floor_lamp_zigbee, room.videv_floor_lamp, room.floor_lamp_zigbee)
|
|
# Temperature ########################################
|
|
device_follow_temp(ts, room.videv_heating, room.heating_valve)
|
|
|
|
#
|
|
# ffe.sleep
|
|
#
|
|
room = h.ffe.sleep
|
|
# Switching devices ##################################
|
|
# main_light videv<-->shelly
|
|
device_follow_sw(ts, room.videv_main_light, room.main_light)
|
|
device_follow_sw(ts, room.main_light, room.videv_main_light)
|
|
# bed_light_di videv<-->zigbee
|
|
device_follow_sw(ts, room.videv_bed_light_di, room.bed_light_di_zigbee)
|
|
device_follow_sw(ts, room.bed_light_di_zigbee, room.videv_bed_light_di)
|
|
#
|
|
device_follow_sw(ts, room.videv_bed_light_ma, room.bed_light_ma)
|
|
device_follow_sw(ts, room.bed_light_ma, room.videv_bed_light_ma)
|
|
# Brightness and Colortemperature ####################
|
|
device_follow_br(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
device_follow_br(ts, room.main_light_zigbee, room.videv_main_light, room.main_light)
|
|
device_follow_ct(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
device_follow_ct(ts, room.main_light_zigbee, room.videv_main_light, room.main_light)
|
|
device_follow_br(ts, room.videv_bed_light_di, room.bed_light_di_zigbee, room.bed_light_di_zigbee)
|
|
device_follow_br(ts, room.bed_light_di_zigbee, room.videv_bed_light_di, room.bed_light_di_zigbee)
|
|
# TODO: Wardrobe
|
|
# Temperature ########################################
|
|
device_follow_temp(ts, room.videv_heating, room.heating_valve)
|
|
|
|
#
|
|
# ffe.diningroom
|
|
#
|
|
room = h.ffe.diningroom
|
|
# Switching devices ##################################
|
|
# main_light videv<-->shelly
|
|
device_follow_sw(ts, room.videv_main_light, room.main_light)
|
|
device_follow_sw(ts, room.main_light, room.videv_main_light)
|
|
# floor_lamp videv<->zigbee + main_light->zigbee
|
|
device_follow_sw(ts, room.videv_floor_lamp, room.floor_lamp)
|
|
device_follow_sw(ts, room.floor_lamp, room.videv_floor_lamp)
|
|
device_follow_sw(ts, room.main_light, room.floor_lamp)
|
|
# garland
|
|
if config.CHRISTMAS:
|
|
device_follow_sw(ts, room.videv_garland, room.garland)
|
|
device_follow_sw(ts, room.garland, room.videv_garland)
|
|
|
|
#
|
|
# ffe.kitchen
|
|
#
|
|
room = h.ffe.kitchen
|
|
# Switching devices ##################################
|
|
# main_light videv<-->shelly
|
|
device_follow_sw(ts, room.videv_main_light, room.main_light)
|
|
device_follow_sw(ts, room.main_light, room.videv_main_light)
|
|
# circulation_pump
|
|
device_follow_sw(ts, room.videv_circulation_pump, room.circulation_pump)
|
|
device_follow_sw(ts, room.circulation_pump, room.videv_circulation_pump)
|
|
# Brightness and Colortemperature ####################
|
|
# TODO: device_follow_br(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
# TODO: device_follow_br(ts, room.main_light_zigbee, room.videv_main_light, room.main_light)
|
|
# TODO: device_follow_ct(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
# TODO: device_follow_ct(ts, room.main_light_zigbee, room.videv_main_light, room.main_light)
|
|
# Temperature ########################################
|
|
device_follow_temp(ts, room.videv_heating, room.heating_valve)
|
|
|
|
#
|
|
# ffe.floor
|
|
#
|
|
# Switching devices ##################################
|
|
room = h.ffe.floor
|
|
# main_light videv<-->shelly
|
|
device_follow_sw(ts, room.videv_main_light, room.main_light)
|
|
device_follow_sw(ts, room.main_light, room.videv_main_light)
|
|
|
|
|
|
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.main_light)
|
|
device_follow_sw(ts, room.main_light, room.videv_main_light)
|
|
# Brightness and Colortemperature ####################
|
|
device_follow_br(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
device_follow_br(ts, room.main_light_zigbee, room.videv_main_light, room.main_light)
|
|
device_follow_ct(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
device_follow_ct(ts, room.main_light_zigbee, room.videv_main_light, room.main_light)
|
|
# Temperature ########################################
|
|
device_follow_temp(ts, room.videv_heating, room.heating_valve)
|
|
|
|
#
|
|
# ffw.sleep
|
|
#
|
|
room = h.ffw.sleep
|
|
# Switching devices ##################################
|
|
# main_light videv<-->shelly
|
|
device_follow_sw(ts, room.videv_main_light, room.main_light)
|
|
device_follow_sw(ts, room.main_light, room.videv_main_light)
|
|
# TODO: window_light
|
|
# Brightness and Colortemperature ####################
|
|
device_follow_br(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
device_follow_br(ts, room.main_light_zigbee, room.videv_main_light, room.main_light)
|
|
# Temperature ########################################
|
|
device_follow_temp(ts, room.videv_heating, room.heating_valve)
|
|
|
|
#
|
|
# ffw.julian
|
|
#
|
|
room = h.ffw.julian
|
|
# Switching devices ##################################
|
|
# main_light videv<-->shelly
|
|
device_follow_sw(ts, room.videv_main_light, room.main_light)
|
|
device_follow_sw(ts, room.main_light, room.videv_main_light)
|
|
# Brightness and Colortemperature ####################
|
|
device_follow_br(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
device_follow_br(ts, room.main_light_zigbee, room.videv_main_light, room.main_light)
|
|
device_follow_ct(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
device_follow_ct(ts, room.main_light_zigbee, room.videv_main_light, room.main_light)
|
|
# Temperature ########################################
|
|
device_follow_temp(ts, room.videv_heating, room.heating_valve)
|
|
|
|
#
|
|
# ffw.bath
|
|
#
|
|
room = h.ffw.bath
|
|
# Switching devices ##################################
|
|
# main_light videv<-->shelly
|
|
device_follow_sw(ts, room.videv_main_light, room.main_light, single=True)
|
|
device_follow_sw(ts, room.main_light, room.videv_main_light, single=True)
|
|
# Temperature ########################################
|
|
device_follow_temp(ts, room.videv_heating, room.heating_valve)
|
|
|
|
#
|
|
# ffw.floor
|
|
#
|
|
room = h.ffw.floor
|
|
# Switching devices ##################################
|
|
# main_light videv<-->shelly
|
|
device_follow_sw(ts, room.videv_main_light, room.main_light)
|
|
device_follow_sw(ts, room.main_light, room.videv_main_light)
|
|
|
|
|
|
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.main_light)
|
|
device_follow_sw(ts, room.main_light, room.videv_main_light)
|
|
# desk_light videv<-->tradfri
|
|
device_follow_sw(ts, room.videv_desk_light, room.desk_light)
|
|
device_follow_sw(ts, room.desk_light, room.videv_desk_light)
|
|
# desk_light videv<-->powerplug
|
|
device_follow_sw(ts, room.videv_pc_dock, room.pc_dock)
|
|
device_follow_sw(ts, room.pc_dock, room.videv_pc_dock)
|
|
# powerplug videv <-> channel
|
|
device_follow_sw(ts, room.videv_amplifier, room.my_powerplug, slave_ch=0)
|
|
device_follow_sw(ts, room.my_powerplug, room.videv_amplifier, master_ch=0)
|
|
device_follow_sw(ts, room.videv_phono, room.my_powerplug, slave_ch=1)
|
|
device_follow_sw(ts, room.my_powerplug, room.videv_phono, master_ch=1)
|
|
device_follow_sw(ts, room.videv_cd_player, room.my_powerplug, slave_ch=2)
|
|
device_follow_sw(ts, room.my_powerplug, room.videv_cd_player, master_ch=2)
|
|
device_follow_sw(ts, room.videv_bt, room.my_powerplug, slave_ch=3)
|
|
device_follow_sw(ts, room.my_powerplug, room.videv_bt, master_ch=3)
|
|
# powerplug follow
|
|
device_follow_sw(ts, room.my_powerplug, room.my_powerplug, master_ch=1, slave_ch=0)
|
|
device_follow_sw(ts, room.my_powerplug, room.my_powerplug, master_ch=2, slave_ch=0)
|
|
device_follow_sw(ts, room.my_powerplug, room.my_powerplug, master_ch=3, slave_ch=0)
|
|
# Brightness and Colortemperature ####################
|
|
device_follow_br(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
device_follow_br(ts, room.main_light_zigbee, room.videv_main_light, room.main_light)
|
|
device_follow_ct(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
device_follow_ct(ts, room.main_light_zigbee, room.videv_main_light, room.main_light)
|
|
device_follow_br(ts, room.videv_desk_light, room.desk_light, room.desk_light)
|
|
device_follow_br(ts, room.desk_light, room.videv_desk_light, room.desk_light)
|
|
device_follow_ct(ts, room.videv_desk_light, room.desk_light, room.desk_light)
|
|
device_follow_ct(ts, room.desk_light, room.videv_desk_light, room.desk_light)
|
|
# Temperature ########################################
|
|
device_follow_temp(ts, room.videv_heating, room.heating_valve)
|
|
|
|
#
|
|
# gfw.marion
|
|
#
|
|
room = h.gfw.marion
|
|
# Switching devices ##################################
|
|
# main_light videv<-->shelly
|
|
device_follow_sw(ts, room.videv_main_light, room.main_light)
|
|
device_follow_sw(ts, room.main_light, room.videv_main_light)
|
|
# floor_lamp videv<->zigbee + main_light->zigbee
|
|
device_follow_sw(ts, room.videv_window_light, room.window_light)
|
|
device_follow_sw(ts, room.window_light, room.videv_window_light)
|
|
device_follow_sw(ts, room.main_light, room.window_light)
|
|
# Temperature ########################################
|
|
device_follow_temp(ts, room.videv_heating, room.heating_valve)
|
|
|
|
#
|
|
# gfw.floor
|
|
#
|
|
room = h.gfw.floor
|
|
# Switching devices ##################################
|
|
# main_light videv<-->shelly
|
|
device_follow_sw(ts, room.videv_main_light, room.main_light)
|
|
device_follow_sw(ts, room.main_light, room.videv_main_light)
|
|
# Brightness and Colortemperature ####################
|
|
device_follow_br(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
device_follow_br(ts, room.main_light_zigbee, room.videv_main_light, room.main_light)
|
|
device_follow_ct(ts, room.videv_main_light, room.main_light_zigbee, room.main_light)
|
|
device_follow_ct(ts, room.main_light_zigbee, room.videv_main_light, room.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.main_light)
|
|
device_follow_sw(ts, room.main_light, room.videv_main_light)
|