From ade031409a47c819888e9a01f0895694da9dbf37 Mon Sep 17 00:00:00 2001 From: Dirk Alders Date: Mon, 18 Aug 2025 21:57:13 +0200 Subject: [PATCH] Restructured testsuite. Added mainlight testcases. 3 failing. --- devices/__init__.py | 2 +- report | 2 +- simulation/rooms.py | 74 +- smart_brain_test.py | 116 +- testresults/testrun.tex | 2502 ----- testresults/testrun_full.pdf | Bin 405336 -> 0 bytes testresults/testrun_full.tex | 18248 --------------------------------- tests/__init__.py | 60 +- tests/all.py | 145 - tests/common_testcases.py | 27 + tests/heating.py | 152 - tests/help.py | 87 + tests/light.py | 105 - tests/rooms.py | 112 + tests/synchronisation.py | 89 - 15 files changed, 310 insertions(+), 21411 deletions(-) delete mode 100644 testresults/testrun.tex delete mode 100644 testresults/testrun_full.pdf delete mode 100644 testresults/testrun_full.tex delete mode 100644 tests/all.py create mode 100644 tests/common_testcases.py delete mode 100644 tests/heating.py create mode 100644 tests/help.py delete mode 100644 tests/light.py create mode 100644 tests/rooms.py delete mode 100644 tests/synchronisation.py diff --git a/devices/__init__.py b/devices/__init__.py index 46a2717..06bc624 100644 --- a/devices/__init__.py +++ b/devices/__init__.py @@ -1,5 +1,6 @@ from simulation.devices import tradfri_light +from simulation.devices import silvercrest_powerplug from simulation.devices import shelly as shelly_sw1 from simulation.devices import brennenstuhl_heatingvalve @@ -29,7 +30,6 @@ shelly_pro3 = None tradfri_button = None hue_sw_br_ct = None silvercrest_button = None -silvercrest_powerplug = None silvercrest_motion_sensor = None audio_status = None remote = None diff --git a/report b/report index e2392c9..1526900 160000 --- a/report +++ b/report @@ -1 +1 @@ -Subproject commit e2392c9f28d88ee54463681850acf95ae496c9a0 +Subproject commit 152690007a3b87ee0047bcad78b2673111ff1928 diff --git a/simulation/rooms.py b/simulation/rooms.py index 92cb3e2..cc2bbff 100644 --- a/simulation/rooms.py +++ b/simulation/rooms.py @@ -49,11 +49,6 @@ class gfw_floor(base): self.main_light_zigbee = pd.get(props.STG_ZGW, loc, roo, props.FUN_MAL) # , True, True, True, False self.main_light.add_callback(self.main_light.KEY_OUTPUT_0, True, self.main_light_zigbee.power_on) self.main_light.add_callback(self.main_light.KEY_OUTPUT_0, False, self.main_light_zigbee.power_off) - # TODO: Ist "self.main_light_zigbee" schon eine Gruppe??? - # self.main_light_zigbee_2 = tradfri_light(mqtt_client, config.TOPIC_GFW_FLOOR_MAIN_LIGHT_ZIGBEE % 2, True, True, True, False) - # self.main_light.add_callback(self.main_light.KEY_OUTPUT_0, True, self.main_light_zigbee_2.power_on) - # self.main_light.add_callback(self.main_light.KEY_OUTPUT_0, False, self.main_light_zigbee_2.power_off) - # self.videv_main_light = videv_light(mqtt_client, config.TOPIC_GFW_FLOOR_MAIN_LIGHT_VIDEV, True, True, True) @@ -176,12 +171,25 @@ class ffw_bath(base): self.videv_heating = videv_heating(mqtt_client, config.TOPIC_FFW_BATH_HEATING_VALVE_VIDEV) +class ffw_floor(base): + def __init__(self, mqtt_client, pd): + loc = props.LOC_FFW + roo = props.ROO_FLO + # + self.main_light = pd.get(props.STG_SHE, loc, roo, props.FUN_MAL) + self.main_light.configure(input_0_func=self.main_light.INPUT_FUNC_OUT1_TRIGGER) + self.main_light.add_channel_name(self.main_light.KEY_OUTPUT_0, "Main Light") + # + self.videv_main_light = videv_light(mqtt_client, config.TOPIC_FFW_SLEEP_MAIN_LIGHT_VIDEV, True, False, False) + + class ffw(base): def __init__(self, mqtt_client, pd): self.julian = ffw_julian(mqtt_client, pd) self.livingroom = ffw_livingroom(mqtt_client, pd) self.sleep = ffw_sleep(mqtt_client, pd) self.bath = ffw_bath(mqtt_client, pd) + self.floor = ffw_floor(mqtt_client, pd) class ffe_floor(base): @@ -224,19 +232,18 @@ class ffe_diningroom(base): self.main_light.configure(input_0_func=self.main_light.INPUT_FUNC_OUT1_TRIGGER) self.main_light.add_channel_name(self.main_light.KEY_OUTPUT_0, "Main Light") - # TODO: Add this again... - # self.floor_lamp = silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_DININGROOM_FLOOR_LAMP_POWERPLUG) - # self.floor_lamp.add_channel_name(self.floor_lamp.KEY_OUTPUT_0, "Floor Lamp") + self.floor_lamp = pd.get(props.STG_ZFE, loc, roo, props.FUN_FLL) + self.floor_lamp.add_channel_name(self.floor_lamp.KEY_OUTPUT_0, "Floor Lamp") - # if config.CHRISTMAS: - # self.garland = silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_DININGROOM_GARLAND_POWERPLUG) - # self.garland.add_channel_name(self.garland, "Garland") + if config.CHRISTMAS: + self.garland = pd.get(props.STG_ZFE, loc, roo, props.FUN_GAR) + self.garland.add_channel_name(self.garland.KEY_OUTPUT_0, "Garland") # - # self.videv_main_light = videv_light(mqtt_client, config.TOPIC_FFE_DININGROOM_MAIN_LIGHT_VIDEV, True, False, False) - # self.videv_floor_lamp = videv_light(mqtt_client, config.TOPIC_FFE_DININGROOM_FLOOR_LAMP_VIDEV, True, False, False) - # if config.CHRISTMAS: - # self.videv_garland = videv_light(mqtt_client, config.TOPIC_FFE_DININGROOM_GARLAND_VIDEV, True, False, False) + self.videv_main_light = videv_light(mqtt_client, config.TOPIC_FFE_DININGROOM_MAIN_LIGHT_VIDEV, True, False, False) + self.videv_floor_lamp = videv_light(mqtt_client, config.TOPIC_FFE_DININGROOM_FLOOR_LAMP_VIDEV, True, False, False) + if config.CHRISTMAS: + self.videv_garland = videv_light(mqtt_client, config.TOPIC_FFE_DININGROOM_GARLAND_VIDEV, True, False, False) class ffe_sleep(base): @@ -251,18 +258,17 @@ class ffe_sleep(base): self.main_light.add_callback(self.main_light.KEY_OUTPUT_0, True, self.main_light_zigbee.power_on) self.main_light.add_callback(self.main_light.KEY_OUTPUT_0, False, self.main_light_zigbee.power_off) - # TODO: Add this again... - # self.bed_light_di_zigbee = tradfri_light(mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_DI_ZIGBEE, True, True, False) - # self.bed_light_ma = silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_MA_POWERPLUG) + self.bed_light_di_zigbee = pd.get(props.STG_ZFE, loc, roo, props.FUN_BLD) + self.bed_light_ma = pd.get(props.STG_ZFE, loc, roo, props.FUN_BLM) + self.bed_light_ma.add_channel_name(self.bed_light_ma.KEY_OUTPUT_0, "Bed light Marion") self.heating_valve = pd.get(props.STG_ZFE, loc, roo, props.FUN_HEA) # self.videv_main_light = videv_light(mqtt_client, config.TOPIC_FFE_SLEEP_MAIN_LIGHT_VIDEV, True, True, True) - # TODO: Add this again... - # self.videv_bed_light_ma = videv_light(mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_MA_VIDEV, True, False, False) - # self.videv_bed_light_di = videv_light(mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_DI_VIDEV, True, True, False) - # self.videv_bed_light_ma = videv_light(mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_MA_VIDEV, True, False, False) + + self.videv_bed_light_ma = videv_light(mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_MA_VIDEV, True, False, False) + self.videv_bed_light_di = videv_light(mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_DI_VIDEV, True, True, False) self.videv_heating = videv_heating(mqtt_client, config.TOPIC_FFE_SLEEP_HEATING_VALVE_VIDEV) @@ -279,22 +285,19 @@ class ffe_livingroom(base): self.main_light.add_callback(self.main_light.KEY_OUTPUT_0, True, self.main_light_zigbee.power_on) self.main_light.add_callback(self.main_light.KEY_OUTPUT_0, False, self.main_light_zigbee.power_off) - # TODO: Add this again... - # for i in range(1, 7): - # setattr(self, "floor_lamp_zigbee_%d" % i, tradfri_light(mqtt_client, config.TOPIC_FFE_LIVINGROOM_FLOOR_LAMP_ZIGBEE % i, True, True, True)) + self.floor_lamp_zigbee = pd.get(props.STG_ZFE, loc, roo, props.FUN_FLL) - # if config.CHRISTMAS: - # self.xmas_tree = silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_LIVINGROOM_XMAS_TREE_POWERPLUG) - # self.xmas_tree.add_channel_name(self.xmas_tree, "Xmas-Tree") - # self.xmas_star = silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_LIVINGROOM_XMAS_STAR_POWERPLUG) - # self.xmas_star.add_channel_name(self.xmas_star, "Xmas-Star") + if config.CHRISTMAS: + self.xmas_tree = pd.get(props.STG_ZFE, loc, roo, props.FUN_XTR) + self.xmas_tree.add_channel_name(self.xmas_tree.KEY_OUTPUT_0, "Xmas-Tree") + self.xmas_star = pd.get(props.STG_ZFE, loc, roo, props.FUN_XST) + self.xmas_star.add_channel_name(self.xmas_star.KEY_OUTPUT_0, "Xmas-Star") # self.videv_main_light = videv_light(mqtt_client, config.TOPIC_FFE_LIVINGROOM_MAIN_LIGHT_VIDEV, True, True, True) - # TODO: Add this again... - # self.videv_floor_lamp = videv_light(mqtt_client, config.TOPIC_FFE_LIVINGROOM_FLOOR_LAMP_VIDEV, True, True, True) - # if config.CHRISTMAS: - # self.videv_xmas_tree = videv_light(mqtt_client, config.TOPIC_FFE_LIVINGROOM_XMAS_TREE_VIDEV) + self.videv_floor_lamp = videv_light(mqtt_client, config.TOPIC_FFE_LIVINGROOM_FLOOR_LAMP_VIDEV, True, True, True) + if config.CHRISTMAS: + self.videv_xmas_tree = videv_light(mqtt_client, config.TOPIC_FFE_LIVINGROOM_XMAS_TREE_VIDEV) class ffe(base): @@ -325,5 +328,4 @@ class house(base): self.ffw = ffw(mqtt_client, pd) self.ffe = ffe(mqtt_client, pd) self.stairway = stairway(mqtt_client, pd) - # TODO: Add this again... - # self.warnings = videv_warnings(mqtt_client, pd, config.TOPIC_WARNINGS) + self.warnings = videv_warnings(mqtt_client, config.TOPIC_WARNINGS) diff --git a/smart_brain_test.py b/smart_brain_test.py index 7f9e5f8..15a8dd0 100644 --- a/smart_brain_test.py +++ b/smart_brain_test.py @@ -1,10 +1,14 @@ +import argparse import config import devdi.devices import mqtt -import readline from simulation.rooms import house -import sys -from tests.all import test_smarthome +import report +import os +import time + +import tests.help + # TODO: Reimplement existing test # TODO: Extend tests in simulation @@ -16,95 +20,47 @@ from tests.all import test_smarthome # - Heating functionality (extended: mode switch off by other function, timer) # - Circulation pump (Extend Timer) # - Stairways (Extend Motion sensor and Timer) +def cleanup(tLogger): + time.sleep(0.5) + tLogger.debug("Collecting startup logs...") + if __name__ == "__main__": + # Command line arguments + tcel = { + "single": report.TCEL_SINGLE, + "full": report.TCEL_FULL + } + parser = argparse.ArgumentParser() + parser.add_argument("level", help="Set the execution level", choices=tcel.keys(), default="full") + args = parser.parse_args() + # # MQTT Client # mc = mqtt.mqtt_client(host=config.MQTT_SERVER, port=config.MQTT_PORT, username=config.MQTT_USER, - password=config.MQTT_PASSWORD, name=config.APP_NAME + '_simulation') + password=config.MQTT_PASSWORD, name=config.APP_NAME) # # Smarthome physical Devices # pd = devdi.devices.physical_devices(mc) # - COMMANDS = ['quit', 'help'] + # House instance # h = house(mc, pd) - for name in h.getmembers(): - d = h.getobjbyname(name) - if d.capabilities() is None: - print("\n\n" + 2*"**********\n" + "\n" + name + "\n\n" + 2*"**********\n" + "\n\n") - print(type(d)) - sys.exit(2) - else: - for c in d.capabilities(): - COMMANDS.append(name + '.' + c) + # - ts = test_smarthome(h, mc) - for name in ts.getmembers(): - d = ts.getobjbyname(name) - for c in d.capabilities(): - COMMANDS.append('test.' + name + '.' + c) - - def reduced_list(text): - """ - Create reduced completation list - """ - reduced_list = {} - for cmd in COMMANDS: - next_dot = cmd[len(text):].find('.') - if next_dot >= 0: - reduced_list[cmd[:len(text) + next_dot + 1]] = None - else: - reduced_list[cmd] = None - return reduced_list.keys() - - def completer(text, state): - """ - Our custom completer function - """ - options = [x for x in reduced_list(text) if x.startswith(text)] - return options[state] - - def complete(text, state): - for cmd in COMMANDS: - if cmd.startswith(text): - if not state: - hit = "" - index = 0 - sub_list = cmd.split('.') - while len(text) >= len(hit): - hit += sub_list[index] + '.' - return hit # cmd - else: - state -= 1 - - if len(sys.argv) == 1: - readline.parse_and_bind("tab: complete") - readline.set_completer(completer) - print("\nEnter command: ") - while True: - userfeedback = input('') - command = userfeedback.split(' ')[0] - if userfeedback == 'quit': - break - elif userfeedback == 'help': - print("Help is not yet implemented!") - elif userfeedback.startswith("test"): - ts.command(userfeedback) - elif command in COMMANDS[2:]: - h.command(userfeedback) - elif userfeedback != "": - print("Unknown command!") - else: - print() - else: - cmd = sys.argv[1] - if cmd.startswith('test'): - ts.command(cmd) - else: - h.command(cmd) - - ts.close() + # Testsuite + # + ts = tests.help.testSession(mc, tcel=tcel.get(args.level)) + # Clean-Up + ts.testCase('Clean-Up', report.TCEL_SINGLE, cleanup) + # Add and run tests + tests.add_all_testcases(ts, mc, h) + # Export testresults + BASEPATH = os.path.abspath(os.path.join(os.path.dirname(__file__))) + ts.export_results_to( + template_file=os.path.join(BASEPATH, 'unittest', 'templates', 'unittest.tex'), + path=os.path.join(BASEPATH, "testresults") + ) diff --git a/testresults/testrun.tex b/testresults/testrun.tex deleted file mode 100644 index 6d56660..0000000 --- a/testresults/testrun.tex +++ /dev/null @@ -1,2502 +0,0 @@ - -\documentclass[a4paper]{article} -%\documentclass[a4paper,landscape]{article} - -\renewcommand{\familydefault}{\sfdefault} -\usepackage[table]{xcolor} -\definecolor{orange}{rgb}{1, 0.7, 0} -\definecolor{lightgrey}{rgb}{0.925, 0.925, 0.925} - -\setlength{\topmargin}{-3cm} -\setlength{\oddsidemargin}{-0.5cm} -\setlength{\evensidemargin}{0cm} -\setlength{\textwidth}{17.5cm} -\setlength{\textheight}{24.5cm} -%\setlength{\textwidth}{25cm} -%\setlength{\textheight}{15cm} -\setlength{\headheight}{84pt} - -\usepackage{fancyvrb} -\usepackage{fvextra} -%\usepackage{framed,color} -%\newenvironment{modulelog}{\snugshade\Verbatim}{\endVerbatim\endsnugshade} -\usepackage{adjustbox} -\newenvironment{modulelog}% -{\par\noindent\adjustbox{margin=0ex,bgcolor=shadecolor,margin=0ex}\bgroup\varwidth\linewidth\Verbatim}% -{\endVerbatim\endvarwidth\egroup} -%\usepackage{xcolor} - -\renewcommand{\baselinestretch}{1,2} -\setlength{\parindent}{0pt} -\setlength{\parskip}{9pt plus3pt minus3pt} - -\usepackage{listings} -\usepackage{color} -\definecolor{bg-partially-covered}{rgb}{1,1,0.6} % light-yellow -\definecolor{bg-uncovered}{rgb}{1,0.8,0.8} % light-red -\definecolor{bg-covered}{rgb}{0.95,1,0.95} % very light-green -\definecolor{bg-clean}{rgb}{1,1,1} % white -\definecolor{mygreen}{rgb}{0,0.6,0} -\definecolor{mygray}{rgb}{0.5,0.5,0.5} -\definecolor{mymauve}{rgb}{0.58,0,0.82} -\lstset{ % - backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}; should come as last argument - basicstyle=\footnotesize, % the size of the fonts that are used for the code - breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace - breaklines=true, % sets automatic line breaking - captionpos=b, % sets the caption-position to bottom - commentstyle=\color{mygreen}, % comment style - deletekeywords={...}, % if you want to delete keywords from the given language - escapeinside={\%*}{*)}, % if you want to add LaTeX within your code - extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8 - frame=none, % adds a frame around the code - keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible) - keywordstyle=\color{blue}, % keyword style - language=Octave, % the language of the code - morekeywords={*,...}, % if you want to add more keywords to the set - numbers=left, % where to put the line-numbers; possible values are (none, left, right) - numbersep=5pt, % how far the line-numbers are from the code - numberstyle=\tiny\color{mygray}, % the style that is used for the line-numbers - rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here)) - showlines=true, - showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces' - showstringspaces=false, % underline spaces within strings only - showtabs=false, % show tabs within strings adding particular underscores - stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered - stringstyle=\color{mymauve}, % string literal style - tabsize=2, % sets default tabsize to 2 spaces -} -\usepackage{hyperref} -\usepackage{longtable}[=v4.13] -\usepackage{tabu} -\usepackage{multicol} -\usepackage{booktabs} -\usepackage{graphicx} -\usepackage{lastpage} % for the number of the last page in the document -\usepackage{fancyhdr} - -\fancyhf{} -\renewcommand{\headrulewidth}{0pt} -\renewcommand{\footrulewidth}{0pt} -\lhead{\textcolor{gray}{}} -\chead{\textcolor{gray}{ Unittest for {\tt smart\_brain }}} -\rhead{\textcolor{gray}{}} -\lfoot{\textcolor{gray}{}} -\cfoot{\textcolor{gray}{}} -\rfoot{\textcolor{gray}{\thepage\,/ \pageref{LastPage}}} - -\begin{document} - -\begin{titlepage} -\date{\today} -\title{ - Unittest for {\tt smart\_brain } -} -\date{\today} -\maketitle -\thispagestyle{empty} -\newpage -\end{titlepage} - -\setcounter{page}{1} -\pagestyle{fancy} - -\tableofcontents -\newpage - -\section{Test System Information} -\begin{tabu} to \linewidth {lX} -\toprule -{\bf System Information} & \\ -\midrule -Architecture & 64bit \\ -Machine & x86\_64 \\ -Hostname & ahorn \\ -Distribution & Linux Mint 21.1 (vera) \\ -System & Linux \\ -Kernel & 5.15.0-60-generic (\#66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023) \\ -Username & dirk \\ -Path & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test \\ -\bottomrule -\end{tabu} - -\section{Test Object Information} -\begin{tabu} to \linewidth {lX} -\toprule -{\bf Test object Information} & \\ -\midrule -Test Object Name & smart\_brain \\ -Test Object Vesion & 1.2.0 \\ -GIT repository & https:/\allowbreak /\allowbreak git.mount-mockery.de/\allowbreak smarthome/\allowbreak smart\_brain.git\\ -GIT reference & f3ed72974e5fd3bf932ab78acdf0a1d6154dd733\\ -\bottomrule -\end{tabu} - - -\section{Summary} -\begin{tabu} to \linewidth {lX} - \toprule - Number of tests & {\bf 67}\\ - Number of successfull tests & {\bf 67}\\ - Number of possibly failed tests & \textcolor{black}{\bf 0}\\ - Number of failed tests & \textcolor{black}{\bf 0}\\ - \midrule - Executionlevel & Full Test (all defined tests)\\ - Time consumption & 84.664s\\ - \bottomrule -\end{tabu} - - - - - - - \section{\textcolor{green}{Testcases (Success)}} - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak diningroom/\allowbreak powerplug\_floorlamp } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:23,206\\ -Finished-Time: & 2023-02-15 07:13:24,415\\ -Time-Consumption & 1.209s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffe/\allowbreak diningroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:24,416\\ -Finished-Time: & 2023-02-15 07:13:25,627\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off synchronisation test: shellies/\allowbreak ffe/\allowbreak diningroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (24)\\ -Start-Time: & 2023-02-15 07:13:25,627\\ -Finished-Time: & 2023-02-15 07:13:26,532\\ -Time-Consumption & 0.905s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'False'\\ -\bf{\,Info } & Changing master device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak diningroom/\allowbreak powerplug\_floorlamp) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing master device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak diningroom/\allowbreak powerplug\_floorlamp) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffe/\allowbreak floor/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:26,533\\ -Finished-Time: & 2023-02-15 07:13:27,743\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffe/\allowbreak kitchen/\allowbreak circulation\_pump } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:27,744\\ -Finished-Time: & 2023-02-15 07:13:28,953\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffe/\allowbreak kitchen/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:28,954\\ -Finished-Time: & 2023-02-15 07:13:30,164\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:13:30,165\\ -Finished-Time: & 2023-02-15 07:13:31,978\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:13:31,979\\ -Finished-Time: & 2023-02-15 07:13:33,792\\ -Time-Consumption & 1.813s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:33,793\\ -Finished-Time: & 2023-02-15 07:13:35,004\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:13:35,005\\ -Finished-Time: & 2023-02-15 07:13:36,817\\ -Time-Consumption & 1.812s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:13:36,818\\ -Finished-Time: & 2023-02-15 07:13:38,632\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffe/\allowbreak livingroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:38,632\\ -Finished-Time: & 2023-02-15 07:13:39,843\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Brightness synchronisation test: videv/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (42)\\ -Start-Time: & 2023-02-15 07:13:39,844\\ -Finished-Time: & 2023-02-15 07:13:41,055\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'True' (Power on)\\ -\bf{\,Info } & Changing master device brightness to '35'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing master device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting preconditions for master device 'False' (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Color temperature synchronisation test: videv/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (67)\\ -Start-Time: & 2023-02-15 07:13:41,056\\ -Finished-Time: & 2023-02-15 07:13:42,266\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'True' (Power on)\\ -\bf{\,Info } & Changing master device color temperature to '2'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing master device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting preconditions for master device 'False' (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off synchronisation test: shellies/\allowbreak ffe/\allowbreak livingroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (24)\\ -Start-Time: & 2023-02-15 07:13:42,267\\ -Finished-Time: & 2023-02-15 07:13:43,177\\ -Time-Consumption & 0.910s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'False'\\ -\bf{\,Info } & Changing master device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing master device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak bed\_light\_di } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:13:43,177\\ -Finished-Time: & 2023-02-15 07:13:44,990\\ -Time-Consumption & 1.812s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak bed\_light\_di } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:44,990\\ -Finished-Time: & 2023-02-15 07:13:46,199\\ -Time-Consumption & 1.209s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak bed\_light\_ma } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:46,200\\ -Finished-Time: & 2023-02-15 07:13:47,410\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Away mode test: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (101)\\ -Start-Time: & 2023-02-15 07:13:47,411\\ -Finished-Time: & 2023-02-15 07:13:48,318\\ -Time-Consumption & 0.908s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ -\bf{\,Info } & Deactivating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Boost mode test: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (128)\\ -Start-Time: & 2023-02-15 07:13:48,319\\ -Finished-Time: & 2023-02-15 07:13:49,225\\ -Time-Consumption & 0.906s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Activating boost mode\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is greater expectation (Content 900 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Setting postconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Default temperature test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (50)\\ -Start-Time: & 2023-02-15 07:13:49,225\\ -Finished-Time: & 2023-02-15 07:13:49,830\\ -Time-Consumption & 0.604s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Valve setpoint to 16.5)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint (is not default temperature) is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Triggering set to default temperature (21.5)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Summer mode test: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (74)\\ -Start-Time: & 2023-02-15 07:13:49,830\\ -Finished-Time: & 2023-02-15 07:13:50,738\\ -Time-Consumption & 0.908s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Deactivating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ User temperature setpoint test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (22)\\ -Start-Time: & 2023-02-15 07:13:50,738\\ -Finished-Time: & 2023-02-15 07:13:51,949\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Changing valve temperature setpoint to '16.5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '21.5'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ -\bf{\,Info } & Changing valve temperature setpoint to '16.5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '21.5'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:13:51,949\\ -Finished-Time: & 2023-02-15 07:13:53,764\\ -Time-Consumption & 1.815s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:13:53,764\\ -Finished-Time: & 2023-02-15 07:13:55,578\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffe/\allowbreak sleep/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:55,579\\ -Finished-Time: & 2023-02-15 07:13:56,789\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Away mode test: zigbee/\allowbreak ffw/\allowbreak bath/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (101)\\ -Start-Time: & 2023-02-15 07:13:56,790\\ -Finished-Time: & 2023-02-15 07:13:57,697\\ -Time-Consumption & 0.907s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Deactivating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Boost mode test: zigbee/\allowbreak ffw/\allowbreak bath/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (128)\\ -Start-Time: & 2023-02-15 07:13:57,698\\ -Finished-Time: & 2023-02-15 07:13:58,604\\ -Time-Consumption & 0.907s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Activating boost mode\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is greater expectation (Content 900 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Setting postconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Default temperature test for device and virtual device: zigbee/\allowbreak ffw/\allowbreak bath/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (50)\\ -Start-Time: & 2023-02-15 07:13:58,605\\ -Finished-Time: & 2023-02-15 07:13:59,209\\ -Time-Consumption & 0.604s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Valve setpoint to 18.0)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint (is not default temperature) is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Triggering set to default temperature (23.0)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Summer mode test: zigbee/\allowbreak ffw/\allowbreak bath/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (74)\\ -Start-Time: & 2023-02-15 07:13:59,210\\ -Finished-Time: & 2023-02-15 07:14:00,116\\ -Time-Consumption & 0.906s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Deactivating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ User temperature setpoint test for device and virtual device: zigbee/\allowbreak ffw/\allowbreak bath/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (22)\\ -Start-Time: & 2023-02-15 07:14:00,116\\ -Finished-Time: & 2023-02-15 07:14:01,327\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Changing valve temperature setpoint to '18.0'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '23.0'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing valve temperature setpoint to '18.0'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '23.0'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak ffw/\allowbreak julian/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:14:01,327\\ -Finished-Time: & 2023-02-15 07:14:03,140\\ -Time-Consumption & 1.813s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak ffw/\allowbreak julian/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:14:03,141\\ -Finished-Time: & 2023-02-15 07:14:04,956\\ -Time-Consumption & 1.815s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffw/\allowbreak julian/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:04,956\\ -Finished-Time: & 2023-02-15 07:14:06,165\\ -Time-Consumption & 1.209s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak ffw/\allowbreak livingroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:14:06,166\\ -Finished-Time: & 2023-02-15 07:14:07,980\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak ffw/\allowbreak livingroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:14:07,980\\ -Finished-Time: & 2023-02-15 07:14:09,794\\ -Time-Consumption & 1.813s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffw/\allowbreak livingroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:09,794\\ -Finished-Time: & 2023-02-15 07:14:11,003\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak ffw/\allowbreak sleep/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:14:11,004\\ -Finished-Time: & 2023-02-15 07:14:12,817\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffw/\allowbreak sleep/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:12,818\\ -Finished-Time: & 2023-02-15 07:14:14,029\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 1 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:14,030\\ -Finished-Time: & 2023-02-15 07:14:15,240\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 3 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:15,240\\ -Finished-Time: & 2023-02-15 07:14:16,448\\ -Time-Consumption & 1.207s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off synchronisation test: my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 3 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (24)\\ -Start-Time: & 2023-02-15 07:14:16,448\\ -Finished-Time: & 2023-02-15 07:14:17,354\\ -Time-Consumption & 0.906s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'False'\\ -\bf{\,Info } & Changing master device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 1) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing master device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 1) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak desk\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:14:17,354\\ -Finished-Time: & 2023-02-15 07:14:19,168\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak desk\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:14:19,169\\ -Finished-Time: & 2023-02-15 07:14:20,983\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 2 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:20,984\\ -Finished-Time: & 2023-02-15 07:14:22,195\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Away mode test: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (101)\\ -Start-Time: & 2023-02-15 07:14:22,196\\ -Finished-Time: & 2023-02-15 07:14:23,102\\ -Time-Consumption & 0.907s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 20 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Deactivating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Boost mode test: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (128)\\ -Start-Time: & 2023-02-15 07:14:23,103\\ -Finished-Time: & 2023-02-15 07:14:24,009\\ -Time-Consumption & 0.906s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Activating boost mode\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is greater expectation (Content 899 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Setting postconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Default temperature test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (50)\\ -Start-Time: & 2023-02-15 07:14:24,010\\ -Finished-Time: & 2023-02-15 07:14:24,613\\ -Time-Consumption & 0.603s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Valve setpoint to 20.0)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint (is not default temperature) is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Triggering set to default temperature (25.0)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Summer mode test: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (74)\\ -Start-Time: & 2023-02-15 07:14:24,613\\ -Finished-Time: & 2023-02-15 07:14:25,520\\ -Time-Consumption & 0.907s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Deactivating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ User temperature setpoint test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (22)\\ -Start-Time: & 2023-02-15 07:14:25,521\\ -Finished-Time: & 2023-02-15 07:14:26,730\\ -Time-Consumption & 1.209s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Changing valve temperature setpoint to '20.0'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 20 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 20 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '25.0'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 25 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing valve temperature setpoint to '20.0'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 20 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 20 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '25.0'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 25 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:14:26,730\\ -Finished-Time: & 2023-02-15 07:14:28,545\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:14:28,545\\ -Finished-Time: & 2023-02-15 07:14:30,359\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak gfw/\allowbreak dirk/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:30,360\\ -Finished-Time: & 2023-02-15 07:14:31,571\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 4 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:31,571\\ -Finished-Time: & 2023-02-15 07:14:32,782\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:14:32,783\\ -Finished-Time: & 2023-02-15 07:14:34,596\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:14:34,597\\ -Finished-Time: & 2023-02-15 07:14:36,410\\ -Time-Consumption & 1.813s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:36,411\\ -Finished-Time: & 2023-02-15 07:14:37,621\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Brightness synchronisation test: videv/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (42)\\ -Start-Time: & 2023-02-15 07:14:37,622\\ -Finished-Time: & 2023-02-15 07:14:38,830\\ -Time-Consumption & 1.209s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'True' (Power on)\\ -\bf{\,Info } & Changing master device brightness to '35'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing master device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting preconditions for master device 'False' (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Color temperature synchronisation test: videv/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (67)\\ -Start-Time: & 2023-02-15 07:14:38,831\\ -Finished-Time: & 2023-02-15 07:14:40,040\\ -Time-Consumption & 1.209s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'True' (Power on)\\ -\bf{\,Info } & Changing master device color temperature to '2'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing master device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting preconditions for master device 'False' (Power off)\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off synchronisation test: shellies/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (24)\\ -Start-Time: & 2023-02-15 07:14:40,040\\ -Finished-Time: & 2023-02-15 07:14:40,947\\ -Time-Consumption & 0.907s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'False'\\ -\bf{\,Info } & Changing master device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing master device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Away mode test: zigbee/\allowbreak gfw/\allowbreak marion/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (101)\\ -Start-Time: & 2023-02-15 07:14:40,948\\ -Finished-Time: & 2023-02-15 07:14:41,855\\ -Time-Consumption & 0.908s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Deactivating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Boost mode test: zigbee/\allowbreak gfw/\allowbreak marion/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (128)\\ -Start-Time: & 2023-02-15 07:14:41,856\\ -Finished-Time: & 2023-02-15 07:14:42,762\\ -Time-Consumption & 0.906s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Activating boost mode\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is greater expectation (Content 900 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Setting postconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Default temperature test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak marion/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (50)\\ -Start-Time: & 2023-02-15 07:14:42,763\\ -Finished-Time: & 2023-02-15 07:14:43,367\\ -Time-Consumption & 0.604s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Valve setpoint to 18.0)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint (is not default temperature) is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Triggering set to default temperature (23.0)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Summer mode test: zigbee/\allowbreak gfw/\allowbreak marion/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (74)\\ -Start-Time: & 2023-02-15 07:14:43,368\\ -Finished-Time: & 2023-02-15 07:14:44,275\\ -Time-Consumption & 0.907s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Deactivating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ User temperature setpoint test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak marion/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (22)\\ -Start-Time: & 2023-02-15 07:14:44,275\\ -Finished-Time: & 2023-02-15 07:14:45,486\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Changing valve temperature setpoint to '18.0'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '23.0'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing valve temperature setpoint to '18.0'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '23.0'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak gfw/\allowbreak marion/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:45,487\\ -Finished-Time: & 2023-02-15 07:14:46,698\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak stw/\allowbreak stairway/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:46,698\\ -Finished-Time: & 2023-02-15 07:14:47,909\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - - - - - - - - -\end{document} \ No newline at end of file diff --git a/testresults/testrun_full.pdf b/testresults/testrun_full.pdf deleted file mode 100644 index 57382fc1243bd8f3bf7878159860f2c57201b51d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405336 zcma&NW2`V;o2|QS+qP}nw)rgEwr$(CZR1(CZ5#XTKD*EE?EZ4jSD8O%s%BD2r82HD z$9+#y1rae?Mmkm~()p#4H7F(m1_C=HODG;5D0&qSds6~>c_T|@XB#MbIRZuo1}J(l z3r8ns0uBxqD0&%FTQg^K0!C&IR)YV${^O~&v#BEiy_mJ3v#E%wv7L!26dxayle43# zp$(M##)R-C{A45{F^&osb7@qJkteX~?nun~jr3qhia;tEkf`WEs;!!H4cOG+%>IjL zv=!*2LPRz}@Jg+N6qrH6sQ}CiPRbtp@x&*YjRIfzXM#T9B%X;^I5(@1SBXKoJo~VD zfFa~)=w#Dw2sB9yWS|=aB%(yN$Z(VJR^*m&EKiXzZmKxFVS*HYNyh$i5>cf)aV8>* z7;usaz4T<9qtbAbKqmz-*N)i4Bf%nyDaA>|XXgQRDW%@9RH?ruMgXks&16t;$Fz!* zuLWVrQlT~z+#O^V*@$AVDPcrfWM*}=M0dERnDfW3l zwi2RCfTz@#2ILfU@<=qILC(Wz6e&20I6aP17-fTk(7v{?<6tT6p0x) zDWIbgikkV=NFm_ul&IlhM4R#5DkE$Yz#Cd(iBSCJ84&mq;5bVp03D%O)~7?@f4^xu z`*!_0(6{9eww>4VwzuN^lx|1H;&R;3$=r4Jg{0m?#^cA6$D_wXniFsGBEH6VRjb|T zJAMe5$Q&h)a>s$4p4*RL`*8d8D++exhWI1ANgrZ5KA?5Dm*;6LHQvt?Kv$Hiqov`uDAN3&rND2@+4=zb%rZQp?G~wb5cbox(oZ(gm*PxhJXlCs=B`1CroBp zwSmv6!%x<0nxEf zE2!1(awl-nv#K4xgKgYRDACWvJ1!LI9s(Xcb%soAS3~FLNm;N$#7aI{`>+{1CT2EW z;+J&gb&c?#i+FVEm|t!Cx36$tDdSj;UoKs2t*#@^Cw;w?DRNk(TAOEwnrBnCFZA|Z zKzD}vy{4v{y6Le_^sY`XUNyh}e*BzsqLIBfH=JW!Nn)EkK`HJbWig4D7y|dTaG~;BbQ$I-VoOyK&;iC~yH_SI`NR(LdvyZ3H z^mua{?5r}>s+{jj;}F12o~#Fu-Pi!{Topy}kA`Yq&#K$wxsBTZ1n}zN>-cYgQK-9S z?h2)yOjWy#HKkClYBI~e+0dHK!wi{)en5*Ns|aTlWOEHS2zgW9HAHNa@f@iM>t z#%jA-_Z`h%&OWV)3w+~&AE~$CTDs=;eWU4yq!ykpbcDTO(lTL4Nz(w=bje&E0^{9v zMUD0$lWMARp^=k@cEL^)N}EX?D*Wl?Wc?HXV`#ny97w$+qe zGMZl3EdqF0kkiXC|EAlfe{5mow%r2XjCm;uBYntGjDsxIGBvH zQ(bx<_eg5{r_Im*oaxcHmsFMCwe3A8llB+NIq)p2^z1T;C)F=gBZH~n10T7v#vkuU zuVZ^%!)mJXO(vf1_rfXgu+lcN*X|TBv4*F;OWyStXofJX9m>?!^AhqM|=sbK`}X;1g-)jlW>55}*25A}&FAzry~DMmhye+1(jfX$0UK~Q5*iVq*|n1dgl zE-}f=-AQ}Pa?O;|`cqa8h!51qs|+{14=#Cn2mQ%*{H!W8iMtHpEE1B|8r+|jm-@vq z(lZM3x9kF75tPV{p1~xK?zJ8y6+R`eYggsZ!}EjK00^gOo`5Wrc;(Piy_e$TOq75bS9^+5J$0!}Z_WkGHa_q6WC163}<@BWim^%exs8iL6rWQFLR9F5ebubm@{t z8du2+-!{9$*k(QTYx!VyD0}X;VSxbM6TZ}=&Ka~rtLS`tI^Rx-veOVng4N9N(dLC7 z7K+YCp3yO5-lyQZsUPS*a`m}lBmg-1GDXtR{ZPDWs>Mk{NXxIDt=MGD-YXr`;3wVK zBoHYCCk^V?#G?kKQJ*IuOJofnuf1Dk{!EF!r&$<7C)SY!AVpFatiEcEs`JJ<>@yf2 zPT@zHGSSBRWi@<499VPdls+#hf#{_wtFvy-=SeIp+o0}~Q>N+qm z7IsTomSt94!}_g};6{LQD}nUdeYeb1!6{Bg1=F#GY=~Cb$;#!wA<2R%>t?hfMC<8I zeTZm-l32Ym4+cM*YVv`ysIbOG_eRx0Ynw1hB#WZWmswRUf&#QGSU1*kV%@8p2L*8! zlFrK#s(?0=S;*4<@seBg)#FFP&;}Q?s?Dke8LbT{5cb#nN{_K^dZ*Dv2{{3*+1mZ! z@IzMDM>fiBCOGYU%MwzYPtO86rTS^jmpi$w1>hV7H^C){800KBi{%QNu0V-3Ksx|r zXa8ZuZwb7pQJ7`o77#?^B27pZ(oD(%ib7Q&wC?7XnEVuu58`s1wxua^gXQ#r8~@Is z69+8U?&X67ZyKPO5v!6Eu$@7(1daD!&yP!f46G6(zY5>(Uj{u)YvmjGS7L&m@NME@ut^VP$O#r9zsJZry8e&g_z(?(SuGA+U~A z&VE%ybLBMZ++c5miiU2Mg;&=v1WM!e&?@PvZ=qQeT@k`$pJE)20x5JciqQ_4If#<) ziGneTuiO(mJjU7%?1;6=pVgt_ zFP4>m&T8JuY_4@Iq(mr8Vne>f!VYlPK^gx7$SUrxWrA=y&OzGk_&j}YMidk)5;_&| z#7B;}R&zj!kZ2)MPx2kAr+&f-jdLMJ?iiS_xR(yx2fqrM$BMo*W2FuJ&olfr&Pny;-ig?0Lb~V07G1k{rcGonJ`? zT(QM0%NiRbw(5fIN$;GroQ`hB8YP*y1v{B^*os+%HvWy+As^VXjc_wJTt^nE~c}#dbTeP5|vh6fnjI>Ys)o5H<5Hl z*aJA!kuy+8;4YnKqzNhmPO6$V6Et#>1|K&{OC$;eiLEmD-8TsQhMUYM>dr7_oa9+| z$1%`&c~?%ujSHsMVVv#z;A%8I+wWeD-3t+&hdFc$cx4zKg%3KpSg0PCq(;;XyS*8F z-d}zEL%m_27Tse_V-+hW1l6Iap<+D=5myr5i7$8K5jD%JoxvAD!~xmuQV^48W-1>+mp+7Yn`uRfVa6+U!HF8!87?g`okb4zB{ZqT$6Bc+}BckOFH! z>y$`Ve++S)cC^W`v^(JldsvG(xr53(J|Il>u`&;YnJ1Am+A6Vx^N;5{6hc2& z-!ZRUVFQBH1qBa?Wjl1Tx;x_7(S2>a+!B=UF2X+*vB4(#HU|+b3skNraekXAb+5O$ zz0Xq4Z&~(`3n`Ma7HnVTn=z9)19_dQC*F(iYr{2`yMyKgBNsZxt6h4SgaHo)qruZo zHx}>>e!5_C=U=dw{a>+{lbPe+-DhrVPq`k5{li}B=3r1+b#+z##wn7FZ00OUIi9Ks zn)C+ir2Tz>*14lgW!iv-C8p6-FbOs=6UD@fmm2LjF*EgySzq48$V2XT>RasC9!`Gj zURFYADh=bN$Ej%r1vTRn9Ll)$chQ%IS3@?vnup^`eu3eg<8C`0yT8BAKelhFZ-3n| zlL6zSPyzNu0eXm9OGK4IKY{03 zUl+ZJ=5CJHp~b5o&Sm`w@*YRbUAo5E#ihj+_sheQ=pVZ7)4IRL%vZv8MBjgGyEV3B z$>QWc3it^QcK8pg=8SfpAH3hnz^22degHg^c=|Bq*x@xDXaf}WluzcVT-&Ew#6a;Y zYiryC{ZpbSA}F0zJdK!oJ5$YoO%|2E0j;*zr;Pg>kiUSr zT18IV&aMZKU%!Ep7Y1(4hF<^rs5-Y!wTHq%am5uN7E3vwF>)zyV|aOmGa#=PnA z&`F~zaGt2mn=1^Urn)zYv5)(g-NY9ljl;$3oNn6)ivCapBjDHdQTcj;<4puH~!7BPed!mHKVE!8Wzz1^&vh>)tF^>sPA8?X($N{tQ%dX zh7PQHhLWMy;0>RKtX2c+4S=e~*~{l>5EUjQw4pHk=Ip~6(csXu5!fp6 z@e*HEWLZbh)$e40h-o}xlCD;0Q|2=<{fkyAploWYF}DjIqX1u^rckd#j(LF;!#`}( zwunJg_I?ln&`GA5DZVv!8^J#^Dp%{Vj}- zVW3S(qe+X|N-2|2Lq(InziMo7QT-s7>PVz(-n!5d98#?A|qwY4a%eyk;+&^;n?!@u!94Hk*A_3w;mSlD~-eDdHjq+g=KpD8O_*Arj@GO zD#2Jt3A@}m1>MBn$}YtZOtJLd3{c0FTepEj#K~h!y36%ix2AQ{@cvmFOu(q7{Ig zOhzFyve1NdE|Yd0DHUuTOsa_6tn^8?)li1G^b$LM z(Au>l5+PQ|sKlj}bOLY#BD9{Xff0!jpA0eEih@<9!BlG=Nvl>5al}onfgK>pA{M+D zqVn}UP_*i(jz2fG9np;(iCtmpIy#B1obIS%b%Y5eZvB=2m)BoJAAnS^YzdNFAgA${ ziX1&=sEqqat1ynXiIsttlw7Jxqmc?j{}2uzu(lYMIs&Sz7*_fN!(O(J)m~CyK7a|P z0nS#GbRxZFY%nog;=Q~mE9>~~;=$LQQO_HCp={-o*Nu^DU5OmeDb zVq`Rt$()(eKE>tw!(xTfxSc_Cws&#_Z(8tUK{h?Tv(f)9H66)!53uETzy76LL*xZ+S~7|L%x8V46{$lCZ!S*w=3EMj2(#LgRz{{qrjEe zfogQFd<0mfMn~rr`JVL~>s?sVPt3?BGXpU%vlpX|)X}Ao{%p2rxXy`t>!ooD+s^eP^e6<{u zTmY)^^RBIQ5WSnIi1L|_%izRMUz^Q-Nw%mthHsE;sMAp#-@ zb>GB9PysLxuBpMR~(mUfWK%}u86FHd(0b^C!YiMwZ7>G5KEnGLt zb*?mwSVdLdWx3@M1y~4D3rkH^!v;I@OrUZ#)z&0jUESs$MhmYX-{wU#X=EoRm*qvT zn4o^*dl`q#oKeCBA((<%*kFVi!a#IZ8&)>hrGcW>&OBme2q+x00o0sGwH_PdcLY)C zqXxF3Ch>F^WY#OjQGZCAvn8sXw?&XCU6gL4i4Ap@&+{Mx>Y^&~E_b+|?s*{EPiFhUk=KmH*{C`BvoGeWL zZ`91h!p`#VT7YXEZ9AO~Sl>MTg0XG%827(55NP9|7SPS+^^yUta(LM$i5QpeFkabL zFRQPI4b}Icwm1_wYoKFh4E~E$C zqT(bg3JQ`dO1LFDILzFW#ms*MtDX%%t$jGS<-kU@k_Hfga-l>DZHKm;!F#0tVCh|$u(qMSP zg-FLRfkh%MX(3a9iYdEP61ipvO0Wdn$r$7^^JE}4SQg>C3vgKDmO#`hgg>yQLlm~*V+w*}yGLJe_ zBABDZiw|^45G42&T zisy5#TlNQpE&B_DND(X0Al2lfEG3cvmP9usg3AGBsZ47P=c}BB3z(#X0fP^VQjHSU zr?J4T2}G3wVw?XpS{t_f=RNTSO68P$qOFMYL<~b>0_2d64Or!olt5vDmFd)XLZ}pK z4OsOh@ik!9ke7h0dlEy@OK5Q$5NGtMkum=D1AnjqYYJ3sL_lI;3}5^ zO0xJJ`LlC-cyzn9aB1SYJ!kkk^L#VE?{pjo^?mV#-0@g6-uv;UemGjjE*!&Nzc;PC zXz2X3pHrXP`E_sZ^u2J_4r_SzUVes*clf&-#>RGDI^nq+#^}F?y7*lCh;cq}T@>aB zU8(t>^uoSdkbe(pVW`=euN1+bN{u-#&DB<$%nS}3{CL;12Q=-vQo7K0cbqG-b!_#b z&V6xySVMZGY+~o>?ud=wgQ+yA%REo1l2Evpsh4qo^C-i0QI1Y)>}$Kb`9y zE}+#Xu`Vj%^=;)GTC_FYM8(h0?3^1p>)dkEi)0&eZbUq@BzD~*R|31^_xEM3@rZ?c zHACUK+u-X?KWAxuBFu)q(`{AmzCkWS;}?Ef82SuW}esVgVS}cemb0mmAB5`wdU%1R_Qaq zY=dJ_tF$;x|E+JFpN*KfJph z$K)37()j6df*sc7CV~0n^;K{JcTa!g+qhoS`gbGI)oZ%0X$*((u?Ez+OJoo&xI6c3 z%xdF>9rBCBBv)h0%XOHhJ#YK#e&8Zx;$x?0{cGKB44U1q@z<3xi(dz?22H$5d5l$K zZvE?YOhTVmtt69a`i>(rQAMx$hAE*3$p$GxG**};9F z{5>h@xT-8FWpk(+pV#%#EJ|O!7PvbVm*|U<`$}W|cOdrtyQqki;09LwEt-UTz)cVC z3s>$oCv8c}wxn4}8&f+&D??jTYkf~KNE{ZA)qUyzny|ZX?KuRE!Q!#Id++=r&%!fp=X%10RVNZ?Tf*kC8KtM%q2^YBtK z{DCwI2!U;lZue(Dca@qvN|qRL45(Yi=uSRj5y3x%C{ijTCk4lkawzg_0saZ$ReOZ^ zL@O;5WhOB~67mm<7c_cK5Z6G>+*u=9@|PgMnpdg9eU|4#ipe+iw2HEyfk!7ss-}hE zkM3K=5}#-4=`bB8M%+)&bZV8RzKhBfPe;q#*<&L5GJg%P3?Uzq#X7r#*c4jS)?TtgVCM>LmrOtGxiOi!p(*pw*hNI+%k1k73A` zm@F8EWw7=x_=OEBJAa#C3Ru~iSP7xk0GYtMrx541Pq#nU8Y5ZUc8(5HZ=y#-^SE>i z+M1GMcY!uCUx3b$p6Vo}kK#44?nLha{hzYe&#p&o;W1bHe~zORJCkx0d!w!01`sD+Z)t^)gw=of=^F)ubD)fd^wP zBe=?QW9{#8+6<5a;amHJ&C{FOr(yEg2Gj1J==f5iDKqJZS}W_NTLxL9?@W1m;^ZOO z7HrjrgpLg;snf3+DUot_#>lJZMCQ@cCum%Uw5+8W15?j^ybBMUT0W=upw%pprp#jI z(KB|&vc4U5^6xfyB@%EE05l@RADVX-%3D zxR#AhMs$ia_QLXgWlFuFF=>P4l4aSrOsEi+ys(na7yomSrh@fl#ae21eGR1XQ_1G` zFJK7SYV7~ChRhsn|IHfySLKC~h4J6Delr@-{WENaW(i;(u zj!p(NS|`zXw4%~UKOc0El4z6{hKdzFjFjmb0K09wd<1L3kT0JC_PRZP^*wJfyx6f| z_^IZ2Ud1rkJPn|D*@4nq#&PTarf-YtpL%HinPQRyAn?=}o)i=PvU#$2Lww%Rq3uXa zM5{2PHM3Au(}(rNhW)`*ISiBpn{>Rc0%bvOe)_hyf0eCg{C-5fhUzxH{8+>UrW^RX zne2o4h553f0WV+=-Po{tE1EfXsX9Ul!#20Fk6c3gZ2-v;y8#k4-V%XaCi~>eSklDJ zrd@vdUB`4<3XMc|qb&#dZ;5BgW)v>|$Q-zNqASea}4_biP=aOrQ~ z`w@3Wn_?;~IsE0mzR-nek6t}@wvGHoKYGcD9zl~qd#gQ^{z%WGtT(oOzVnuKt! z!C-;_iTz+JJbB=frIqmDxR1OAEB4 zyzWo>EQ6$7Bq_Hq}4F&_oBE+q%eS{*`DY{+Pu+6?*I7ETBkSTBcG| z)>3hBk78$B1DO`5jHbNe$u=o}-B_*ql&p2s188dqeh?utK$pfe%W~OTA~sjZnmjE9 zo#F7A3tjj)kIG+gg&Acb=}hn=lhagk37Hq1$l2G;Q{>c_$&TNt_9uCs`gpk{L)a=* zvN062S3%~=k+H*^-Q8Hbo=o2tk{WK zv6m>fos+0)0D>o=0_EU0hBZ^cmK~>dEBB0zjQr8cxT0XIbAZSkYk7*U^n;Uoy#y#1 zN2z5a&9Q*e*_)}9Fy2%paY;nG3Mgl&zYE#(%v4RVPem0!IHHSd`E2vt0p$qH*GuWt zs-cv7xhxg{SdFxpj8!RNH)w|1b%x;~U6-TM)mB(O2EbzhA?ePXted)WR?SE;bWWI? zLU(>SWN`P;)|Z^hO-jAjQCcra*>BayH&fMJR!MEPD3zmM&Zu7l?MAhM^_UaHCnI~j z(0#;P8oQArX;V=!Ux0nN+*42@seq+)p2^(Zm!CAuc`9e)rRY!(>vZ3ihHVsgU3rpu zEY#yfDH4xh(m_%@6QPaP6G>>5KxbL7oGn)1??XcnQGBEm)^T^+WF4j8cBDs^ z&H_fXNxm#J%oo$z>>wcg!Y9wUM)?;i#>x0ERE(YN-`>FX{D+E(!SsHr+n0tZFz;LL z!poO2+iVm|W);_@=q=z;Sdca(P^1+nw)ge+(@{n-9kVo)qC52f1=uz8gZr~+lCgNW z3Puc~euX^u@3-28I>>+Wy&D8TVyx=%hGErmVrQ|Yc0N2 zynHq{@z3H4xEGN-qD z(0rs>GW@_ZGQ?m==qeXSmwT(>jV5vsQn7lx6^j&f(|W1fN5M~!5F*1whzd^2>Gu6$ z#SD`{qzdPy2{BCL;M$yGR?4*QH5>DOsa*0+lV! zW`{q1=I1O0S~$4cI5^tSMu3H`u^MQIzL03wAc~2&#tGo)4B;i{bhv2H^o7uf({0Pv zsw}=MS5*9yC@D0{j#|MQ0IHf#Zpl6wLDrB)TGC0r%^!3+V4a-E5i6Mxr8m$R?cA3) zf>YH5*$?@V4QPR>fEYRr(375TzFRA@8FqI#v*j%Mf_IzERAI9ZK8ozBjN71fW|6|F zUpmQMaf~*4Xr>Yb8IEEaTc1HxA3N%tJeu-F=lWHKT7|WU(t_Lm=Xu_$AFL2k)Jmcl z#cHJ%txqL&k?S=LbzQ zD)PmDz z=io`$!=P3+eq8q!bYfeTnRwrVaNsHjC0ELhKm?JvXq`i(CDplR+cQVJIY5B`Y#yFD zCI43VL)f%98&v0-Wf2akFDh?~e!m`kSDw{*9Rt4}Bv}p{?KacErdVo5a~bT3?z*58 z-iEt11B1@2zZ$jexh?pfcr=+@V)a%!sJQvi4Y86c72Mt zF=P)jiaA6%oD(uY_?;gVp6d5@W>%1<^ZB~AsVV1jwfNGuMJ{T6_wbe^bNT~6X>ty~ z?N_Oug|b#wux72j(lz69Wx#q7&_pnlnkn? ziw{At{DLOkGRwXSOp|2j5hexn*evYx{ih=KNLKrSZ!-9BO$YVa24ZaO2O%`n^^>da zlCFavg+mf#UlseWOA`Cu&AtMcoDXQ|>n{C$gc+= zo!<^oM{^)%1|jFXPcFF%?;dUT=i~D_U83R(v$Z~Hbl`B5fE~_(anuX`MKI^v$s3Q8 z*IJ(Z$1b42Htce0TQ?kzs9n9P@4KJ@V7I?-jq85nj26AMo9M!b8*NbRjDmJ4VjrkI zw|&u9nAewpzHGx1tB}(x{k@8tMQdIo78YH;Ecw_cTx24zH|*ren{oikf!-g=H{>sO zu`tsDTS!(at6C;78zBy#E>r2fDVu+8^|e6kp#Bv!IsXMTSsB>>UF(0X^Q9MBQfq%(Z!G<1Vb#TgvW|UuZqhR_h`dnjP(VV#7;w<=t#Sve9u6ERziD$ z5`ke%h8U2flKx#IhW2_FXmXqQc`NPRnQeEp(I%vVE1v1H$BUF#o?n{mkL9whnJS~) zwlH!}XCy{`^ii(k2k6MUqJY_Cl-e z9hSYC_=8eghM2ADg=-Tf3Hiz2zmh@DbOUi3+ppJr`vy3I;7SA0&;7&|Z_Vd)pA%>B z5b4k>t&$J|1T4R`!DqNawMBD`qLbk^Z?}y4b8zXpuoc@ThoQYDZ$>rpTf^lR)$WKeB)XXT7Lb17Z^p}@YA0Lgqd_06R zmsQ@H`uZ!YF`8W|Gms%HsOk*)38jV)xTcu(xG=Q1}WXJVIy#>4y zyuAEwLlj+_fVGGzCv;F(o-4IdiG(p7#281FUk0l{z#t{^?s@(bd}Rx9-6$-MQml#o zhdCTIPQDEJA5AcJ-9U3)#D<~K6kDq+t4dYji63(Hl%JueH}AoW5`pqiFujz{77yb5 z+M@mc#P|1`+W?=ZsRq^{5{lvI5AF6EBY1Qy3nJT{Z%m;W zHimUu=2`h8gu0(iiO3Anx6@MCs4%=sGcR4(z_l82zh zsr$_|Kj^b$z5Fmheh}OF#+f8h`%Ij#i>A$)F+miP3*)*pQzxSJtsx~|h@`by>IF{8U-@v1K6yTH#*!w`u9NxcL}l z5dyk9bq_FjYF1SZT`t1Rdfnhp3h%1_*v_n`!!q;t5nCZ+bGVj62i}x?-x1$~XHf>p zZhlFIfK(IJ+>Pb2`iT%#m~Va!l%@lQ*4&ZjGW)4G4Qp;f;|IyouXN-795tQDOOY7R zug?CYQ(q7-ASkRe{(*i~VU5^x(%BJ48^*ymzNpyQhl81Ez{jASgVZmyQq= zi7XPn4I;yx*=PURFQjis!}SakdYjCDDWD+H0t&7)t@~YZNt<%GqN~NA^i^Y~^F3Mc zaUsswX6By}GN}8f2PNyH_EfHrS`b9=0GepBE#%WJabHoYo$vJg;_kQukpLzl-S%8*kYV_8d&;dh***T!V(~;2 z-6x+L((7SnjTpyQDl#2~R+e^L{_3zDIzmzKEvY>Y!Th!PpFom0Ua7leD*T0@``fHf z)@Ahsq|6`R{lgz30$Odr#{vRA3FS>Lo5Fk7cn#Z z+i}tVVMczhMrH*84_cjErZBTZSqH0{mn1W;R-wtPM6r~T+=AS%7di>)Vk^y5V}XVZ zJepv-yU*^85r2HN3?wnXD~4)saG%DG!s}2yGY4`k$3^qJ2?rq%&aw=WvA>pNsPRL= zr*vkrsZMfFZ*n8|gy*31_4<{|&?esyuvk@E9dw!~z~$U=0sn{Vx@r!fyDCTrqu`lToysRb+5 zW~iW34-i8gbhyri!CEOZC;sRH<%q>}9A1>^6Or9)6bot0p4dh85Cyd!r?5m--Cx^*gp@ ze+?eSOkrX9CwEV|=iJ5a`g!P%Ao1^INuO`IlMYUq+jWhhDz|9JVw|yysepO#Ox|g` zOO(tm?gW8pE0eW;-vw%oR3Mp$4B2(>ZO0C)YnX2Z?n`Xz4VJMVKKc}ocF6K2Vx z%W#L(gCpilYiJ%*Rh8VF_glmtQE$&aZO5pma^Ut7M*+}ufj_0$B~tffQe)@tHu6p| zcYm835LsHLI#vEenW&)GA%QqDWDEmahg?6y~N&@st7@MhGO z^RqMbq|byPM2zOza{7$1S@H;RJM5FAVv@_Ww@;KMBlr9CW04z%EQL#z?#t!VYBjN9 z|7i69(TcMNvCpCNdE|I`F;gU%hZ9f0ucH1}JX`i`VzR56Vz@fChOn&ZFy_wcOAT`~f1P z1V@Ep2+cxkH~6?*57+`pXijA!2LdHMC+$h~0xQvXQ!tS{d@lMpqcf2Jk_)&uhLBX! zZk`sFkcVuimBt<)A}QT~89s?`ZjB{|l29^#g2sfRo1irNBQ3Cj*;I!X%TXqFZ^j9a z^s^@v?lTt@=_&3wl2{-iXr&DiaGly3bn)~m8(r9GrbF|I%^bEesTMt+h>f4WUPrlQP<2SpPhTql>6 z%e%}ooFyKcQL27xD1=y=TQ&XoOHT-g7KtN%HzLRvoIf4nSr_Ng@~d*T`-lmW$qtX& zf~qiY&$25}kK3oWsp2+8U-_s-DX9+y^8^dhxq781B-B45TbNv)*sR-j z=69PF(nz7)+C46(fKLNE*3|vp+Xfd>WD#8C=7j;d87Ob=_VmrLg^i<#jA=rW^4A_o z(KddVMk$hbrf{F*1Lc=%?t-i4LNAXIO+FG&)nWaU$(x_!z{s?gARGxOt6g)MhSG}L z@^);0C(o-DU!26~pMJk9Fd)M{=w=gM$|UO>*AaF@gkJ5$|L~IuL^znUE1=3^w4jG#L^SJ}=GLMt6Y--wO6dd| zb5SpgIQdTHEeK{Xj2r$hFDx1IP47#>KDjB+nu(ub4xYI&N}DGRs^l&gU6+GyxH!+{ zu}R%h@U=mBv1BmW{bP(3ftl2{uqkUFeQro=3#AzbLruJ zFSxj$VZO7zj2TzIR=qA4v^S=R+KcYuP~7XEq3OtxgrrZg8OWhTvCpxzcfXcCLJ+S#SsWxJp(r6+aa}e* ze`N*79gc_;hbC&k&qcz8f%1p99f7(+N&8v(dN;EHAhWJnwOqW}umEXj6;~4p0WE-a zEB`VAuyg5_3S%?nS3l?$4gL`@&4?8${lJ9&YE54~=W)hapI#oZeLb^pi7}LKdP9l^ zInk%RP<4M+P+=G@u^jf=PMD!AZnp)CekiW|@&qTheIE2X0mrR!f}9-A?66~_vCRau z=L%#i^$bK3DfbOjnWGyzucd(rnoed%Q_DFfOsLza3v-}#1Hn*BXpR}T8s|sbkCwY2;DTl5k){UBb)T9Xme>I%*K=hl!zPvzv=5ww8Tc8# zr=ycqV9yh>11KaP=>h&^#YomC%WQFxYiXxywrH*-l!LB_FGLQJ=Fb{43m8jf(>hIq ze@YszEofWN?;Q)YTovU9XTD9;)O-)X?4rY47_^P;orQglTnrrW=VgMCtTmCrp{ZKE zsJ}tHf`A|{ne~gGjJBEhtm{l_j(M zACdD`Oq^A~kspRE&N72CB^gcpMLrW9x%CDvlB@U!^=yeY4P%)B7u8zpM;TmfMAo&e_C!8 zaBY(T;G$sE+!73`wv-4U<$^4;HZN;*!&>P)&aHem4{U4hgNXf(JEo?Q2J!l6>sY#` zsh?ZA9eD>C%2h}SZI-v}E7nIleX2BT{yckwdaZcWK_Wb~^FXg=wuvSCu65c>%~j#b zLGMA(9`7}9ud_`WCP5bFsq%77#%@*^jOxwv$47Rd1PFk=jlQi2-4z4_fC%|rzf3ZQ zc#Ah5{^h-TCbT2W9oKOyAdYj=B%-V zq;{YmMP0|Mbl-AUJ{iNf1XYkPj>3PiP2nH51^zI+ZT;{{S5i?`$)z!_#6H5QUKc)= z{8qRPjBIrU5=cS7DD|nv4iz@mXyJd>^l82D!AbO&3k|LTf($Y|8Ek!gfr1OWzd`;P ziH5_wC_VK5hi%CVd!5f&S(k(V89HgEU&Lvm{l?3d7GKsa5`h0mI!B*BwJyb8E zsx%Lg z@yK64_gtGIPQtFX03cGE_0s5@F3I#N&!dq}pX|lMSWE+l0IIF`-&=uUX;AM59{iJU zrDXw_;Q-`soj6?t^EN6o6Iv}tCsKw;LpYHqq_ zwsIkrvpGk2)*| zryr~m&5iRiuJ5a}VCt;#6ip6|&NRjU8KR&k7ME}Q~Tf?bhr z1HCgPAQcQ$0zXn^2~YeqcV{619Pl?XF#y^YW6q{;R?9Yf>0`t|vNvHdbiL3mL>yvH zdT+28Jk3Ptw>+8iTa#7#l#T{S9c=42xLi}#`TggBD1{c<3W;BMq@*YN2UeMfUh%&B z0(Frke#Ezznpa8FXh7ca`nn%EnQ#H1UL`NIA_i=0Pu}N-RwTESea@Ynq<#IN(g4pj zyO59!!I7`4TVDU@cXXU}>%)wftc?z;^_8;mLj-YfSSaEy7y&``@^BOW<_ge~+sTlD z;vW}cu4GCC;LtyC=1@+bv-`A$v;r9O$lPKBt?*HPy6v4?IFC*>@x{ugzU&wPRM5)0 zk-s&R^BHI}3&hy#{Geane0%azZn*8it^Ooa+x3!v!+5F+t2+QO0h=%bs+Q9?dM`xw z5wC(SUX=6Xd`{IxG6V^3&$o7JCiGC0yjSuk#;pBL*)b&DC>zg|u^+E_6kH+prr~hGFxiis| zu@Y&~xQ#wpI&|JbOu{m}f~6NFB=C;?+5&7=ca)Iv7uz4I&xCxi{YER8kN)hg zzZqK?%9@Zj2T!>CUzEL5c&A<0?HSuf#kOtRwr$%s{!zuYZQH0M729?tsU$nk*Sq`M zeeLJ!{q}vh4)238*PQb=#$p;*5bp;V8yr%E__J;&@cpL7^b7y0pmCBLdT&v!gd<+( z_>h8+9qnGq>k;C|pQ~>UlcSxsZUv0pMIGg-DvLJU7k{Wqk4xzTUK31qI_Gu^o@Yom zKvf2YbqYRDq%xM4yg>3{CVan(h5|GX`kO$!LOc%%5~1>S)+ebpvEBH_@mI~Gyp;1Z z3Bp;-6RB{ZU)CxwPArUsOFy|8MM1~16( z8H^R8;w$KCifuV)QZ6r&=8Z5u62~36nLB%Uyf*ZkQ6xw;?;ww*o&K%{&^!A@Lg_Q5 zSsyE8XWR5R|O1ss%5< zKyC4^r~XZ^|BVo0VgHZy`bb;uA3~_-;=397XXImunV0iF_XO47djjTW*~#nz$<)G} z(wxs1dP(UtyNNXPp@vdOR6;P2-QF$8%OWq>V7 z9LFMu)A{WUD^1k1(dO#@dGPk>vBzhhl~&FE@1G}G7aHMOjL0)n&8Ysby?Wd;?W2;C z;mQ(fC?(B@HA`+sTN=)$epi;RBiSlfG(8_Sxw7Z&vy;Y*s`+mLjw1>J7Eg!7G^KV+ zUe2j<$*sNlz0gm{0?jXKjqTGHt)C`3*~72I9r%~aqzRZYM?H!bWOq1tftLq-q3}~Ez z0!th|bJd>AvfB`Pn(+#4?N-?>Vp_ACKlPCz>_XapXEl}s3T-&=@U&yzHrhEIXbyr# zKGRmAt(=!L5(&u`& zncH>TZxfrkj5drap&3thoieUbOgt=@`}-#aflK4eC)b}-cj~|+Aw7=p5XDvi5euKb z#i_>S!dfy)6^DGT%}o=%=-5^h*oo=w5@$(? zuB-Zo*k{w@kapU?EistLQpeSTeUAn8aIe(Hy*HiXE%d>*E$gIxK0lP-NyJZho9S7N zU3vFhRo7t~`kKzPk~c?f^!?>4z5Ka8QjX2Ej_z#vwMn1&^FLgE-7YFg>`9n8J>CQj zP)^JX3tD1<h zmDc!S%Mx8t(z)n@BLG!Ub!bpCCVUuh!JQq+md8pK8XI1sh7YdyK0GGXF9-^=okk%4 zAcc%Z_eG8tDWXm6u!llu+$o0Xf{c)+vA{<>YNa=U5+$$bc6WgUT#e*Z9k;w@QFdNV1lg z1TQU)_BmM@LP#Q%&>~Ne5!=6D567+O37iVU;j%!&Puu;2y)Xne#L&Q`A4CPXZsHH&E9jI7#^_mR- zG9`MOtF?c^6TSkp{?R-Wla}EE3xr6k)6c+ zNGC2_82g8k&tHsDTV1rEM*@X?-|T-;X_kMxRdcfc=Pq9DDdz)Gw5=1GVO#N9oVNEG zbr?-XG0NXSs7)Zz%C=nUL^9&aA>*4 zTm_`qPRYRYWxzb00f00Q#10`QuIo}#L@9EzdF7i;H-Ck9rG zV+lJ#)W})8>+pKu!Hh=plOYcP0v#=%cW5CgQcZ=G80ra_Hkuv<$gUl*_dk8-%)kBr z-pU#HqazO$5gH>eC~M!@^~JIkXoGDc;XUL_hk%Q2cWuqSY!!{v2gip@7CwP@Tiq*V0n{E}NNc97rTa+n<1 zpAmSDSYhCVC5?hdeP%Q@yJwSOK+b z-*Hz(nJg?@yEb805V+2?H>r3VE*iCKC2-e|cv=#j0Z*@R<5kfU#B!p%(FEtF{Zc~w{g z>p&1qBUBvEeaHVI(u#c}mA z9qeGC4u5HO?_|zLI(dCf3VfzYKs5~154L?qQr$b5wentL*S0z2?sjdoG0RsS&g+@e zqJCrUe@(Z<&*G+(*75PVDDU-yl@C9;osf8cY!TDBE}l0w;Nt{mAdyu|i&x5KIc>0y zGnp9Ao>APmq}s3UK4m{BQj^Kq6s6@uHk4I|=iQ|sZ6a7JeH8(j;E~2z$sC?E#6R zs!qLX*t)nA8wlZisY~O;^{1ESIcHudH?VBfjs8&i+2+@7ayoAJF-!(Uk*9GI7p zGidDFhaaHIfk0+Jj<3+~$ns8vBBuBujvgKL3Mw$-NsG9EpyfJ`9!?EgfeECj|#)>*kmzTN;iI@Ob8VNyEA&{!;8yA`$gq;7HKry01@ z%+Qka&TO|FD#z=TJ|8_o`s*meAhbIB;|K9-4_>fwpVyot zk5@X*O1P>j_1p*}55-~7`8I~yCE=eZ@@A_Trq%7rVz^Fr8{ru>qB@`1_GZh2B`RGI zmC6c%8>x)*so&eF0{Gxfuw-TsS3i9F-{&OGGD@>N+taFEG%;1JKX}`lJeN00XOfhE z`s*#^c&KRnM$i!GXQvx<43EyO;%DdWTmkA>CH61>6)9j>(Qsi3#9^HB#2imc$uC9t zNb(>M4~A4LN1Fe!m=xG-;lddj{qz6=%t{!)rL0s<00;J?1Qv`{j}WRA73#CSEhsR4 z17t%2A+^2I?@T|pF5b$a!x=WUlxj<$kyUArEfEeG%U1Y32bd>onNH-8h1!>@oc-=_Z2Q zZM}OOPwDQwHWDjjHjb+m8+--zSPII$TBn!jpoe@Y=u#0KkLrlAGHU)3{N}mU@V_qBuKQp~F3*vH!~EO?ZX1Pn;nxn$JWt^a!zk>gk2Fx=A>qia+# z;bjaw(Lj1P1ePcKk`kwt7iUbNP=jG{05FHWW6-}9=YJ!uIKM-${_Fcc2Z9~_Ptxjp zpVN`?ON3}%8tli>P_S4D{aM+~-6}&XXMZxo?D8O-udS`{FWj)e?PlY3i>V)0D`&1@&3p$nuC~Y|*{%J&ReQ z0)32GLw6<3jt(6;jqT|#+=msp^wp~SW9#$*Fr`ed3A&I7xX~y!cgy;LG0qJdwqL+7 z6h*S~(Vf#6G=G6G_)Dys*!|TOLN91{>+l=U^6FhzwgaAGtk;gGely`=C#`VYJ=uD7 zT!%l}qo*|Gt{44$foDI4g9?-!g@Qt&j(oTJvGzqP*Ib_yWp1{@I-nxYu{@;u`>R6Gc!QmH5p3gJ1kh!w+wCJx=NYVTs zr@%f*3}iTzAYW>|-H&h1p4x_obG5|3?PH#~o7b(?rip{=9vW%y%~7AfrNW;srs~37 z`NYhfqrj*e(W$m!@_LdwhGW_HlatzuHB8dn4~&;SOj2;Cu{8#=soOKhpqE4Kx+oDg zuW$O~`X0HVmoXD+Cc%z5`V8LsvPRaO@kk-F+Yh(u<7rxDsR`>YuK+#o{{eVQSeaV{ua3qLYdze%hj}$9uwmtixkBQYsU^t1j@DlOkM&AW< zhsT4vl(?d)n5z}mkq~A&sp9fW+9YrPZPnF`%07%i zX0M&w*%|D5CD0x_=Rt8wJ zJNl(Q6*PJYzlRaLeFr()FMsk^N5p(@;;jL-oRe8({r>pMA(l@Dl0qLVI^372jS7D) zWB4#>hk=|V9CDzBeBek;2qB1-JY|kQ4@fvzs6ZP@{vH}=SD%)AuancjRt0M=m(kZI zVqD0|2$^j}C4ao1-mfb;^=FCvJ}8r$wojs6QR6W&nl|Sv)D63H6mjHQxxpY5vp+*) zsu)f!TKX4f!kW^Y=Yun3oy6q|B?m<7f!pBuqt(K>WAfNeTzFc!h1{80Bg7BRJ6F4= z+{5#aosqFSIonZ4s!hLpgn>F_#|3UD5(s>^>Na!4uxyV}aE)1_VCx!O1Yv-oc*r|3 zpCJ)Tv6<2YItRHlX-m1_NV=65fEXGZr)|KZl4Xkl7uI_}+CS|Y+cz-6T{abh9$BzP zzT`Rwm|T*4MKZV(q7+n`iIN;6?dDf%x4ifM=E!^CR~ieOXZU082f21Ci`>z7WAWgD zv*Iic@@Q$>{1}Lk;W?GxRA9NI7g3i_>jKgq3(@rmO^*fMn`_4I9H?TqcH*VO$VK0* z%67(5;UCT349PiXfw0i!O9%3Agty?9u$Q3jxFp|`%zP(bm}~jX73Jd*D@D|KM?H)+ zN+q||!DaW{1=IpoyslbvTJgL~+~?L@8eWWIEa%dy0d&Y9J!7&WV0lC2Br$_h!}#_y z#A`^CcqY@*Uw4UL@aC7$qXHf`$|XX)U-&h5IK?RA`23a~6g`lR#Hi8YRrOC;@s*Tk zQRe%ZTaYx=k>5z^KJq@{o%r}KtXPcZt9Q>c6#QF8f6t8eOn;=~bKggZMMwz!2?+La zjBNMg0s7Gnn>_8S==u8!9+&UdAk6)V45opUu9TWj-6-RbS$2?I$i4JwRuskSn7|aO zX6;`JFYCX~E;;|>uK2%kwR#E}7WB}UBEa#yY_^qs+_L_nY(yI6PZqSZFR-0vTpa$3MF!s0wrR7)FMx^6hu0o1NUN zF<@vcHAyTQK|;7fikR&a2F{E@0fE8VjD>+!>r-OGNJjV?()RNYr5iUfd=o4xarI~K zoCqgvsgW#3P5!IadoM)}e!qHRO_||D=^#l)Qyge=8)OX+fRrj4jc{&$IXsGY)bR3Z zd-mq=SvQ0u&ej-Uyw$6Za)`OI>!8qI9ztXhGS*FCt|$uh!-4j;i1k=F{k?T(kQsrn?NCv#q3ilT(Kr|?S&w_VR4{W4p54;_Ss;nx+}wjp+H@}_p?lvu)SQg_Spm?Ln#O7L>=wd>CpNLsbmsVJ#}E(v19sIE}tX7-C&`{W-e z1>o7!L(-O}h=VO}({K<};5SZJs)Ri%b$1C7nmnH9cUXsN<0tXWIC~N9Qn79Q)COsU zmY(C3?>EJ*c#NtGmd_ak1dl!|TLXR#0B`20IbG0Ddh4MSNkUnXt$muSohaQ?X0)vO zA9v&i;*6)31TB*-&NBH$M|Xj#Qk9pxc9BM0S&kcRpmWjk_x;*ou*uvrbj@dewR&Ue5glGD;t`lRHm5FNUXk^VJ2e0yV`cgV;~&5cE++fyDznxC>Ow zHH*u=Gt>g2$)Vp9TQDYi22OHRTjUfc#PbNoJ`pCG0;NEEfTAiI>vE>VUBlSOsu}2l zcoI(nv?I4g-L&DkZ|ROoCiMfoXpI(UCYg3hB8E}^OKSgBj%%`r)E8^d+wv&a?ttA_ zvT@#TLU|5jl4!eZ9n&>it)c3{0zlcDP)ad$y`E{2wyv;4sI0wr1T99LgccFxNf1Kh zL2_E{4eL+#`_C+tyK%^#HT$$m_Xu1>#b4U}8qA6AnU3Z0PS?rZ(j>MWzAkriD&}d= zMq2WqtZY1Nhd7#?Jdt+r3_>{dJ!m>c{P31C$BPoB%i#ziN#b$_1JV9aN}hSlD;4$K zR1R*TH7Q@r?MS5E63!rwLTzHB6pHskh~Ln!?qwX-3kUCa5~}L}CIe3@2tDf%fpySk zjeAK|N79Ly;(%7&q0Ggl&(|HM)YVx46N0gVQgQ(p$$1T_h!GwU;^b#5_)ZZqH3#@^ zQzgjWs%Vt*czFv@j5R6z7J7FLA&RED@&Oa_54pw>W9S2%Tp(k?3-4j+r@mQaizf0B zU>_o2Bn?#c9wtJZ+O(39zn9^+D@Y)obT-8TS7kLrE#yptn;M$3q}3#+G-|x&EITPD zaLD^K(&V~C@{d(3y!fw|sNyg}*>#i1L6SKH+Fab7r%GJgMV0tq#>&E}WwJwoNJVp` z3!Xnc($9T7XH20I@4=AcQY5JijGBURWh#oAVp+VWhT#{d(lI1o6X$%UOV3t+M6VoK>?QUXyp z@g`P%kG?Z|Ac=J3c>k+^#M{51r|2f#h=Hq!ocS9RDB5E!{71Ztzr|Z@Na~U7vuQk& zye8{2@Ed}g;#YH8{^I_dk?qvLu7M;99VE9|?ag0_!&CWU^!vTd;@wG3_SXuMPV_mg%TG1wrak9SI!LL>?U5+C1r!B3kI+MCGYCOo1k2r9D0}MIs z(0CRe!<1E{{ql@IqxE%KzCEXiQ)|vSfHS_fsxXEBj&|6d6CW{C*Yz%|>9d&e z#IS$G`KovOw37b1LCr_T*O+=V?bASkKS!S1O&xR;?KmHw4qcFhLXqU7BS#>yfpp1# zSukTn33NEtk?R;A9hfz@%C)e{ku9@go|$TtK6VWK09d3qkykAGy5<-P{6cQFqZMEE z;)3~h1vkXNlpv8*(_FF&C6}iyj9R&;%ICs&!(QZ@83lBSD+xOmxoS{K#}}6(iri6y zYHY(B-ClqKvF{$egga7j{)mj4j5nqqpd1wMiO!fBQ3qNTA0IIpOMQXv$Pfz75FtwU z5*-)IqdWw;5LEtoLg*2jq*P3^I*7zgeK($HbL#quLrh=GHCSC$lxPEgkr+>0TPE&A z!H*J*GQ+b^Ob@0k%$pc9yGl|IYCDXFdnUgI_1D1ij-(#>1cJ%o39kvc%n{84oz4kn zbmEUavvyNFL1cWr@S?@B-mVxF^XR6Kghb%8aOg0c*nNBOFa0;8Ny6>4y!bhwx@%WtW_S6}c0jBj}qB}xkg^+2K>!c5gmtRU@Psh_Tqcv~rw8 zpDhZUQ-yzMx?IXSF}zQBdAKn`C5E0CCd9??@xsI?jrW!)t1b@>I&$PMDIMx_!VOPn zLOiG6Xi`w;#MttQ$4DQJ@q|ndh=WPr-Yrzl&z?EPc4U$}j}2*>TguZm^@^#IP3wm3C@Cl-+0+@bX+Wg3@{MZ=!Vcto zh+09G^J@iII82?hMI4l1kS(C7^_CPk2PDj?S7P6ndUFnfB^D^s@d zT!*=D8zW3P7z{Nj*$%C34vi3W`4~Zp5*#u=t5CHhWml2iwE`g zD?HqfmdtVrqN=01Abov2*Hx8iHS{P)JFv>rg%YE>ft(W z6&Y=%ws|xJ+;lEwkJaaioS-A)^l>hXA@xWKJR_c9{!#3YDwRR`3hyFLkC?p~*DG2Y z=G_FTE~rBx(;ecsIONOQ7h%XZU9EIsQb^J8a%hS`Gf`r->_2z|6z<>oj;8^x@DtMi zQr6i2<#hli7OwvvaJP)hx+Ky!|JF<)vdldFo-}z}U%}bZVK;r8T&&!f*kBztEIp|8 z^?tPg3X6ngJ389Jj}9uYuYb`*MH5fQ3?wqG^hraiJ~a)z+?6eGVb*wn3#A}s6#LTTy=ocx zJn_f+d_7*eTp}m@;f-ww-82no%A8L!!y?55L^~h^@Y;6*Cq}w9^hf z#z__|8jKZ|aFA0*^wZPb%G-a{zE2S-nbsybG5iRf-YMWNs!Y;O?)@Ar4eGNL0*FaKX{#QXQzylZ&ai4-dJiO`JNnF zXzR?o*B++P6X#@=jUqHXY>0NyPJMsB1Ty(kh|9)6!o!=Gz)#hn^&Gi&D_)xcv3D z^&zvoSF!US72TBD%4N zxvf5S*CV(vUs2IeuLLMcRDfs>Mss@h>8|nb8yey+%uypY5hd`I8;*vLsSW&)9TC%^ ze*pkDAg6tYMf~FceXMw=8AGEY!N02G@cA>is53|R$d1H6uBRYHl7Mg)OhkVa6=jMj z&UtLM;{SuJ?)B*_(cs9&pD*=qrT#;ej&SEgmG4Yl-D}HHi{6Rh0G4rdZC*&K5@h!9 zMFVHHH&;;=#hsMqAEoXdwEnojN00tTAH1QeMW9tQWU*)Uw0=oN@4*c)+3Teg|9#nc zsR|THXm_j%IX)N+#V@UBoi@S8V_7pbxs9Kf59YtP^GyppmhpY2+?w3Y;gT2oPYZvE zbR5o^iCHnCsiqv#FB=iCp4VR~<6-1;EPr^3c|UA#WM-V_MozKDeP0ax%v#tzcHAh` zbA}n?+Y@Vdjd3ctV*~zpAk^+^pbvx)O=)X>9Yc-C`$83CkP%?QW&I90+M2bHId5r5 z=l)IQQ4%0_`-yV|6lJ z)SXO`j58;+%$Tnde23^1$=mPggk%CI)*gDC8yxU6+t%VK_Ex23MJ;#V0(}S_<04%< zIy>wjYwzyMmWdUN8)}Ee;X8Q%h`e?Of-)MrB1rK*weHA)B_~KLs&Nl zo-%xi#tkRO{mhRJtRqy(WH{6jjAY@5lv8u_CWuq|uNy+!i#H((T4E!eg3uywL}auD zQ0gf93qA>|zqsjSqTa>Mhz+-4nXC%-!idR;b{ZhX3q|~wcFkzLgLk@zWg^93NMc6-->E(c9n{4* z#b`J2B6L=~2BhmB0Zn>yD_AXI>g16e#ew7%>C%4;C5z7!sLzl}xMx7tzd(%&)HMH1 z#Q$}$#KiTV_9jQ#IxhR{X#OV}ovuq!3 zd`xjcz%=tIp_d{=)5jMVJm|UK(1OV$^Q#aB7FTyUesMg0Fkiya{}jW}89~E|M@Ge< z8BAIM!Ho|mdF*)iNmEUwsnXAL*~UBJEA0}ynYvxtRUR*KARCEQ)-3+4%oZ0rl5pck z;0f^X6%aymDs5=?2abZK#Z%zP>qBA<7VrnDXlFas;d71VEZr2O6XVF)!O_xKImkAg zIg74t6H76Dsx+mBr)8~bRNc$O!7o9rj7%ys^xj~q8x?XEg18hY?#*L~ zZg=YH@b4spKc%9G$>xro<{|1;>(`DViNRu~xWh(#BPms&4j`NW=*qoEa zx-o`-{%VHRm|d)__}WApGCs~d_Qotz(wf~+-9Gj@pL+36R-^q!;gAb)P(@bJt84Tr zJ>%CaqhC?*qfJD>7Qv(^aCrS^`oU~2bQ*MLnJiom-W@T`062IKjfhf8Glk7o(*^sw ztcq+~YTK@Qy3ZMB;#Oz$xwsBpY-Vg2x<49QK4`CAr56P!R%T+c8Tni5e)_F$ri6c- zVr=84$6>g$xtU?hY3l$3x@@e~{PTw8o``@2ArBgG{~pmTnuTyu?Q3aoT&%vYJ^Cva z@lxv9geb9FQ@<>jWJ-`AvKWKu{I=+G%hyhBSQW0aiUw;9cV=+Q!0nqK3*Bp^=fSZntlBzcNneZC~hJr@qn6B(L49sUIv^I0%H>_vO~J zoYH8uvaX%*-mOW%d-c4GVOh*=Mp41uTrN+r9P3yYn&g>Z6*M?0rs2foguk*{R6OM_ zDU&1Odd(yUbe#vBn;><;u>>`eQ$d@?Qask2oUiYzxfQt;B;E?$)+h2nvir=|qx=O& z$N)9@^%JK@13=20vVf|YnUODKoxWU0Lq?hyZYZopNEjC6RnCnt&eyn0{j+nwOENjV zUkOXr?Q}_nQmqaHX72gg-4m>$4*di}gmYjrl$&#p9`*!=C$%ySWSpLi5BnopJf0XA z3|z38>r(vsMG73`2GnJ(5cs&Z{WfYfXW{UkSl z5(cx)H_O73|4{3wvGri_!QpAS-F~J0ZL;3N^X0C0HR2|Z+z!suOGVb1maxWd#HTGt zW#J@LY!~41WHAmkzLyvNN;LqQU7aj7p2jE=eL7gZJ1a8#qUZ90RwjtFp z?&6McKS~~tdJ6t)LF$`ErT4SQt^*R3bQGEy5n%EHnJPoD(}|!>sH9s9a9Fey-XwcY z0cOgN21v5ZW_<#V*nsgwFiB|PIbu>Kq|`}FD5+^{*)aGcBd}+p*KZSLeLM?{B%D2@ z^tqrTQ#+pK_ z12dd&w$3|>z7(M*7{x30LsWvl537^Acsh9{S?d6{pS9SB@u&Og_x3m4%)))CMA%ST z&a#9myoI?=`1$fzI`QEqnmD#OIV+VM7vbouP2b3AjRVuku?12~GkQ=X8D%6}-7^vZ zT%L`{Q_~7mr@O$h`gfZ|o_b87&+y{MAFyTtS?4OCS0V{H1XvL< zF%@P=!vAv-+7B29kDvekcex&HNO(7*z8-OwLAMB5wej)lOI3XWwM&nWe|=qAGWGTQ zIxn^S-WIJai{>-F_Wm&tP}mvx#Ai-f9%TO=XT z$l_geS|yucicfE;M%2Z$9XPA~6guG*a3$0qa?M>Fs8TD+%d{8x=$k zKn#jq>{q(Z^5LkbZZ0HOSc((jDu!WdfDh@Kw}sU@k>f|9Yw4m|aRnk~T3v_6Yce-l z2?D@rYMHm=eg(k*hp3XZVQA$5`{1h{9b5>kGVbP_KNIIPM(i3aJ#O3t^bem#-ZFOH zy*@=CTD19&Wj$1B?J}uj+4*ie#oFU=5|JBb%hR(v7}OT%X3FdTC_7tzTT9Fe8b=`LHVQy>2v*=#Ead-UJVoIE&NT4MU z75oX?B}l?7pZ?;$XGvy``+$FL2DG^VVE|N((IL#r4y^SWpFq}G#c6}M@vgt^Nf*!1#n^^<~jd+uImzV$wQ>WLB z8b>{9gSdq&v}QWaMlk)zrwqpz4HKh|>)K+SI23Y!B+Vh0`c{b*>JP+PaWn?IvYzeh zbp<+o^f@z$!ZbD!?>`5)F^>qA=xuV4<-;vMZ+(k9f8VQVI0CX37`cB;!YGR4iVPh` zMABq_#?YX7w!XEEV&u3ti0z>2G`E`G7|gEs{N;%5nk(b?87X3|hrgp1uj3x3SwQfN zZ37W`;V*TlN!0O;OivU+_{%;VlPRf9fSZ%y2=l%rOHHo#60^~Z+P3u)yOBi!iPdIT zEq!@wf3Q#}_Ug<(MA{4dYeUM{>&UO0YUIX;g@2EKFiZK3&tX(!Pvp_uw^e_a{*|sr zr27D`kgrGNh_Oe+jdS(--u{Bi+EsKLiGeY<3*nBLkY@sm0ex2adG>_?Yyo9ihx$rf zb%&!60o85TLBfD&r?1k(y_aKzLG#_K>^{ibf(h)Cj)wW>SYeAJ;5_IUF`?j@$9F>- zi+~+MYx&2E8qUGU8cf0+vzzYbmju(Nb2tNB$w5T+`@nFo1!DuAC1ae(Sy%UlP3q$h zI*-Wo{3DU84`6+3DAfiLdalL|v_mI3A@@R2gl4M9_|)vVS9=@KKy5q7EnZj5S(>Xe zDLzHcx`e=oH=vZ(Kdj8-Q*3~^28_wuLEy2-)GaKl_t8iK%h<;T+pp{!_KgFT_O_7c zL;I~(zl&Bp&8<(!>gc}?|9dH8{nvMw*#Gn7-L3zQ-=a`qL58B;&i%($BkLlCTh&AQ zGnQ5fgW^{asoCmRFD!~GsZ1k2a%wwd3?UpyjDts?9<5Z!Mj(WPPKxB}pn3hva zbZtLGnkG2)DFP@`8s#Kt4LB3;DME0i> zkV&`Lmzv2_rJ}`uQu@juMpxrfK^X<=12++SLJSovSsGI2`W55)# zxV9w&ZWnXXE2&SMWuh*v#20caGUP{Cv@X(d?A7Q>69rnwzpYRv0=5{uH z3uQ6Zc->dk2-|cy28Ym;eC4{<&%@kp#;rd(%dDdO*ZwFD4W;iYWn)o;$Z;W83!ivz z-;j{fB=a{~MNLAMU)|r3(j50RGn=0_Wk*qwx4q`a&7D^h(t{IzL8EdATSweZ?sfXm$)VT{1J1RL= zw#YQ}njy{?!xRkd>K;y)luq3Em#@gR*aBzR_OzJH%AN0TNoyI(7Wh3fc#7-+R99CZ zOM%ElQss!$bEJ(eX#td1(U7*h9g2+1Iv;e2aSZzx?_XJ)^iU`E39988>Ux+O@qXS` z_y)F5(o~8wzjBA@Do6=e3-PgJCyfkPHtg&JD+~GI`{F4=!u0R}VK0Dc0R;2?33?K`auW%tk-!yX;bVvv-?H z>SU+vt4APjhzm$lAM#B84B+FpH`f~p_PptMroZUPTvcZds^P4m_}Yy-UC+>->m1Qv zq%CtaFQuitSPYl~esZpL`xF$yXL=(F4|pRA{)PJ#y92_JE~)}SPK9176oP^g`5?Vr zZ(eE@9~P7W%%bD-rL(?**hZ=x>Yuz^iDXWU;?=H@e#L?VkwS4EiQJ++$U>^PKUL3e z6WA?I#s9eM9J9I-#hJXkOFiPR9$m|aeae7c5~PWIYerP-hdR$QUG`*m%8zro<5`NcNEY(^-KLxIR0==Vg^ zZoeTM33TYfE5se!7y+*`Aprq(9ayjUJp%{4PCJ0 zjxQ2Q_KO=uyhsLOB<_HVB~=x$f(%67;wOR%?AL53mcr0rvd*LsL%+;+J1#d{rI((V zQw(53_(~-wZ-4i;UO^BFU zz#R^vr=m2!XL&E1rMA>Z&+DHB2jy4wN4G~=BZ0X-B z*T3P+tly6e{nz(@#+m=$RMj#}|Nc)Y7fbS4*0xb=2CGsLnUt9d(GKFP;qS`D|3kXe zP71-+>^wvaY0%{Es;%pHs+KE8!>M0F&^_H-vAe`h-NE*$X8U;1lCZ>q7HKi)3?s96 z@Q5XE9RJhT_+p{ty)mQc@TV;oQfVKKFMa?Pp3HJ)6(`iJ6~I}&H&P>vVA+S``eWna zgLWSo26XZj9*uF`yYbZTZMu-k?=`4c*rJHxXkIL|e?i#>Kj+cE&Qxy$F)2u>m;B<4 zTE59y!<_))$>rcyq=1dnsE|lovAl|G?2H(@SI_+QXunW0ea&zj+{7#ToRcbyiOE4HA;f#Qa`&rc$5 z;LK{9aWcc9upQ>c(G8kflaFWK+1bU*Y80-oWDLN=n_6rA82j@`51!9J{rB8-xnC;!%qi<&f%dz5pS@06?$l$_98qd34LIYOu6qIBN8z)IV zRsO-5+C9AbCE~lxaQCFRU*#25XN10pXYeHB>lal=S9LWRf=--|oaI&TWF8^gtuLdz zLNhH+&Mz0unX{t@lPDjQXpITnDm`4aAJ`0nwUet89fYzU$N&>7FiibE+>ozQAs*yx z&QZdSPQ@+waiX^AO(wRp9mRSq`OplwaZs<(o1~61ziPSh+^)^#g4E{G-U2is7!XWl zE*h4HQm6V1A?z&F54Fj-dj{&O-HfF!W_i`wjHuq|=Fq3ReEA-fRcoB!dvC|6l^H9d z@DroyS^~S-+1>Q&C(;e8DLGn9tJBp7K!cf32yU_gUELt!o(!RBro4z7-1v(HPC2ix zCH^Aq@CK<8B^j{9k2JUJj#s_<1+djNKJ=<5e8JCKCMEhaTczI6ElI&PHw$>>mAhZC zO^f}!1EN^7L@ry~d3e0+#;Qs7^5rvL-dz-X9~JZEGZ=lEVurOXKFwoC^V9}vYjm;# zkoHKIDnxEqv@Mt&3y2I+Qn7Mk!bnsAVP8ias7bH*Vn((&2>=-hmG-hl=G;Op_oMFa zhh;M(xgfpN-XsTiC8m4b<<#npv*x2H?Cypg_!Rw)N^phe2i8pzgr8jJ^IM>Q0@v~`q9_-rAQ-@fHto+NhD39nQ%^aB zWM&XQ>>k2w8NWO5B(bNnR1MnQmk$*2N#IxqZnn6W*fb28F9HbGVoR33$bk^31YPlF z3OlMfBmbuEa1>MyE5!CjU+Z!1k8s#2;-$Lo3Ywc#7S&{NgZNVer=57l-9YD!STv5# z3cexOv1{3=OKY$A2p=4mP0bnIU{mrH&+5c(qx_>03ty^`e(b&t)Sl|Sv*Bmn1yLhg zD5@dH$YP$m%F4Dh3j$bprMNa&*zwvVev_8rsEyE?OnG6_N`9*MapM>Ve?;{ibz*@t zd}lc>NnXvV(%TjvVfPn-U)LKuaWey~k39mo(X{j6#~rNEGw0*oFcO*zh$rk z{s+ozD$N+TaqCQoSaN^F!9&0oHd#C-Qd}UOGO0H7OLN=#>dKXs%ZR;kn7Xv^jMsP& zMa-+Xg)m%Vsp(YZuT9djoA&a7$*dQzLBh}Ysk@W2IRGjVq#YR&L}17t^<`=*8x5OB zf9^M%!`dY%;#t(oPA2@5 z6iWnL7d|>b^=;8&7o%kYF3YzurIZ9dnsKUDK~`r=K~__&eE;K@t_@CVOgWXWWe~bA zqt-}N0r6tWd#QgT0fTu{b0vGJ&kQ~a#jIw;*%*TspN{!RA=8MK_sRDjD(c33an$-x1n2W!w9p{Na%QD!r%pZ*zIgCc3e^KE&+F(Io4>Q zugey^`vSCh5C3ESih^nw^NY#czDN2U$QOz2HNr8mJUiRkArN(c{uh$et`-2sU4^#7CS zf9~e;4y7eJd?e=WYNIF}H5JAysw!;`C7rBjKgtvK6T{+Ty;ay;0pr`7;5t>RS~u6E zbzw5aI@i>kIel_=r~qlNEvsJsKPY>r_RP9=-8!~y+qP}nww+X1u~RWBwkx*nR9vxb zJL|4z&bhwtIM%cA&Ob0VuipDP&a1VuuhE8~`kZ9z96fm})jtglv_B~|UwEt)m&A{O zz$alverJHmgGIyv+Fl+RIrvCjs+hTF{U4BF%32FQ=&)v#dzH^WoH{3&5*U&p8{6}k(?AR0PUJFD5iA?U1be40a+759)qg0)q*R+>)Lp*lKD*>*IYRyUlDNUh$ z5{bwm_s3RuD8V55@?GD}Vs0!pBxnh=*^*TYgzxmyVpq z5eO8q8?e+ck7FEyhj+6M@n%p{w)05W&hlcEskwGIc&|-cXH>JXqg73e4+vqv0NEx_{$d^FKpO6 zr)s)IjIacKAswoW;@;xf-v8b#wDSiid|(0`IRXlZl6Z_gtD}|R2oB0fofAq%#qmm{ z$*Rrh$x1y|Upa%4+bgx9eLh+{HDBq3gJ9bmg502?FUO*RfTV5dg@t?rfH6L?v(~Cv zy-{0>vRnd>0(ohELJ$oqDGpm;E94RI-n6GP$W{=`yr(yv$zjo(SDGInmq`gy-O|pS z`C<4?g4=b(WLoiztQE7xyX^Orv}xK?GCVGJ80d}4txAplM(ivrfz zm>Q{4AOkot3cfbA0jd=g@`=b3Eo&sPPI^zv8E)2w1~!BeUu&$y zQwAqH9yCzV>Q!z|C|}Lwbi{+AFjXWlIRFJQ!SUxjY<7?Ife~~=R08%YM(R)K{_a&+ zN;@sREv~I%#WTmCk;3cFG*IQF74GU|sf~o0ixA7J=cS9u{B|EmR+b(3TTfbIs|GIo zTgRmuPuNbeW-K79`(qtI1irI#&653Rhiv*2YubUsxFDIRPwY?dcLI-Iu^+!J!s(M; z$c{6aGxYBv)xxa_Fontx8deTPx2yOVW%kBt^V(y@gMLt)5>J};8UOg2Gj!HRes_XU~OSQW8?!+}8`iT292G3L3-2o)2eA&iW8G!k=WklGy&E2hRbgl{S<3*AGzt|ayUuE9tBWj zcV6`Qc_5ThDsa45l@P&|**eV`ojY4&4(E$`#*ykkT9YClmhJOItLS%lQg@$KlZkUv zS&F!P&Ci8}E441C`etlZyn!IRhJb8Mg_cF^ECUB#&z4##53&Mr&0c06r_SCY{7*7K z1S>2(3SbE95OvYtp3SqAawP25$NB{7lsATgK6kZM`IVO3xLL#87r$t{FX1*INfR8$ z?sRY8Q~7!<)H~~5bl9u%a6D3+&NBGntT@Vrp5G_2Ox)J|gVzk`S@XACu7#4W4RjIg zlgz^MrsPxfT{}0#LhV#OJPo>Bpu4-c6O1AzT*y3oE>i$24Dc+tdR32pBhIdS%UEQ^ z(CGycNcyHwLfmlR=sR%h0+~7iH_QwSAKE_{^g=HczT!%cmJk>j&Y2=>cZTTXEeE2> z?Fss$zgI&5$?9tkv}2U6V1DjpN5ZDgk&mD*N^&WgbDEo7nj2v>#9gRF23M zNHv7<^JG&3XdcaFgsj5IpDifx&|EB;zvf~iCEys%T~*k3Xyu`Ry6!iwGI4j_2s~Xj zDrjNaO*(Dcxh3@Oc<5s7eeEgZ`=7W6nQo|xI)V@)y(WJE)htES3jIlXz6dcLgx+CeRXD7$+mm*HU7U6j$g!ye4DA68x=WE`y7c( zqy|MseIfOv)=N*rOMJ?4y-w|4*K(^%ynAWO)U{<|+GVxUK3K5e*Jk=H4IX6RG>+go zZe{=z!KWe5@nFs`CUqAXBW{ptL7gW*J$bc!BD1pS+Qw6ifqchdA(2Yom>M!%Ii(7J z{vm6IhU1+bStx>+&+z4WSsjZ6#~1D_?wUl02$(=`_u;k{97^z(e5*7lwOZ)Y50a~y zgv^|JKAh?d3XNSP^JAi2;gL_*atxg$emCbAiRz?Vr;;r)#4=4fkS5QFBI{tT|90T~TiV3J@*itT4gh2u97(i|J9K<|F!hp?%e9&0 zJ#jq`ni@M3V@JF++dyD>^vML{kc-y$t2TZ_FchipWp!xuMb@w0M>(#FJz+nfjrUtH z3dc*Y1xs4?KUN(d3}7Yk+;yzx2vLdg7Xd#A6Lp9_kY8r~(RmObxZvb!j0P%3-|D4G|Ff&q8Osnm%^w=l4 z8d&6b3g%SgE6n zos`Mk^J1(T9%VC-=*K6}(F_i~%0h>%JI|*-b=K5>f`s9mWWo$sFKBsY77d-GGV~Eg zn$2$y#Sz%60&j)RpV3v;Ehs4O-1}>BH1;u{3dWzWDh@uqN$HBvjQI4aNgM&eLc#krMo@$U1t-m#Jo zS+pU8f(Fm0SRFc;$rX(y0WejlNR{Jz&>+8i+yS zUU zru296#m`A6DpWA(Up8D)*H@gY)y-!!mlp}SZDTQy1=9GXn1Kv!M0O;ed(=aRRCruz z|BREF@n)HvrT<-Iv2;|#RjVS-p%|v_l94C+ZO?fv1q_-=&;tNkuHutEgO2nT$DV(O?xF4ynTHqoCFNgY(-y&6)2m6fASGdkSD)<=>YgmWiqmEt>441@tycedWHuZk=J z=3@urH#wx;&MB>9qa?0Ojn_P@4)i|!;}pT}Y&s`|NaQ?yqa3r7v4)CU4Ka9g`5UGz zi<;Vjx@-LL;?q21zlTENN4q;E1{M@U{e?LarBx2aC}- z^TjdQGKt*syzeL$tLs*&yAC&tp6Y;S@R}GJ-$5S3*TR{4CnyOzKw5frLQ)NbHegVt z{1;Wjm3D8%DrS*(B{sRyAw)hFi1z~rR%emE_xRL@3ws@@eit=TI}ZnHhKISNGuMOU zaX->fF`W|Sao0Q#@Hw4^caiKM{dw&ikQPb?=NdQpp`WVp^|7!)`T?Y{!Tl`%t&A6j z;pITsHA402+rzHL7nDNNk9@QUZJJ^qtu4a!JmL7aH_&M(T}@~HUl1>qbjVaC@8YQm zPd7Jxpg)MFsI<^e*FdG4+=&JGq4tNe1ku-0J;|BKJkii7^{K~A|IC4d#2&0Rep6p@ zHf_!fW%_`vK>=?0e`n+0oaXAZX7Cq?aifhbO#PEFzRVl-|& z-q=Z+sfQ{rYm-3|CcSP(zp6+rqFK-!)S9do1<{zssmvokXAS;9m$A7}rntLikn5R5 za24lASraD7Z`{$An>svU&aPqBt-j$3e`L68c%`z3!4~Z2@xquVCG(M{IQDvQAU+{u zRKB=gyFZfE0wddmN)|u%@Y?ZJ_@M%gcUtKohO0)a){Qb$$(5Z<^gZwrFDSCa+5Lu^ z+M&YW2YsUR;s2r{I#1Z!#lD5^pfNi420WTqG3r4!Y(U-5U>XQ5;LO+zMb-bI)mjuSj^5qvCW! z8&|7o!DVA1Ke=3f;^&;yyL#90mjw+Im)T#P?s=U9>tenr1cJtNnKXTDC3ZezO=&38 zV~?n}+Q6ER)wgp_k7s%F)eP+LLY$kYVmRxlv9hUg%1rxOt~3Dj^1sha>s4wK=xmRd zImwx9o!8lR`5hx?!*C8Vq4%^Gq&#zqhP)?eiwF3m*bzHdZY9>_db^z3*_A*G5L5_> zm4Z#o``t$ZZN;~K2e#la_}Eq?Tfuq0IBTd4AC&7+hZ0&P7u+|~hF()GUjBC7;Ctyj zENnjvOnyEL&F#+JTie=!4y6u<3&rG7i1yLmeK?H=ukcqR)ApgVdcoNj1naFsCytA< z0cj&XVA@lC7vj9Xld!?xg#JTe>gXu~a|b*Te-*OspdiJq(3T+SBqCF&1pYrR%MJ9*b4Y@R_4yfz`Ktm|11t^mZIMjzr@!R1bZ>Ff9ZHzhMwuXJb6Wdg>@r~e z&dK47nrjA>sGjm?`9xqs8C*Mh(P%=4obrB^=d_}`gr9g{$IE>;WuEmldtF8AS1nbd z9oIkB8m-RL0FMfNEmw^|{{{649RXUpbe#0@*dmMY&1R5Q7(65{Z#{VG9Q6GW^1RRY zZ6FGS3yjBggicNCBOz`*h<}dM^CE!VG~Rg^K`lecauh+;;NdHNjei0-Ztd#JS#NCx zUjW@x4TRF~s}R$`QOyW$2VmGpX?8Nz84{WM0=`5PtN6FU`EQp>4uD4XfB6gZuVEu3 zvyP}!*lP~&RGMXKfA;S`ObSuigh6WY3bKoZllvY|;DkhgW8*z$^k}-1Q+_u-1X05I4KWqq{_8c_lMDFru7C4StsQrb2AvUd^kL%{@9wn** z8lW~Q8(lH?9!xt_!xmQ<(>?209T- z*wj zHx~tDtu{`f@b$l;sH8l}*HVg-WJr+32?k6-t+c`DX%Bl#y>wL1WmTqpE5|X%Mmc*Z z=21-{k|ME-#;`lJ_FsINr0+VV_Fi^bZw7Yl&T*rk`KI<>4|6|Ij_n^2=@)>9q*QV4 zZ8cq1&ySMEK7$CmdUl`v<()v7!8zk4y)!X$X;}@~;xqD~zH}SH!0=8Ym^!WnB9R7U zH}MukpI4DUq!>k45qaANE`p2P_NQe??dGEB5Nxqiej0&?kAt*ew$2zeLfA_v6wxOs@ zVb9GEEFoI7`#JMoii`hdJ}XEbi&jt1Q6L=oF{tdy)|gCg2bgH-hi2ZR3Jubn>(1P` zRInc>>Jg5L2vbpnldH7Oh?~l?-5GWBOp_3@*oVO4qrITZ$~+rb-uV0rpGQKDCz<}b z$MOyxwI7Iml(@s44cf5#6UaE+1m{z)@+5o?_LdVIPgSHba~;DT4&kPQ287tk%A(iN z&50G*yS=kbgAmXNMW;8gz5FSNtrN2MMSC%MRgErQBfNb4E*m@etRzhTKp$OhRv#Dj zC*I@?BaJAvFu)iV*`KBoB+@&Vb}T|I`Q3p^73&&K_bpla;53(n`2dKjUW74cn4B-UPY9ZZe#If?`QJ%bb`}t|EbHR zw5{!M1e>@qki!(Rvho^yTqO>`Uy;$_Wo%fSUN2DM7vURsu7!`{F*+Kgu`1uZBj=b% z2XG{<%ZU)v+h>K~Q^|Kw)LlKs-@>hX0j#+q%m~C0C>jp#z|;8%>tLz1z#XnT2(*$v z6FuZ^I)2j zSmc1lQp>1{J7#~-i))NEW;EIH=09*@iNAfNDW8j=gRM!!_Xr#hKeG_(qHLP)3WPt2 zj>FE7a6_Ln)MqbbhdP}MTyS92UUT=@9sf-?T_RgwwvHuvbW{3tdm3O@8 zuo@nyK=r^Du* zhsyVs5ewztAv*5EfFfN~ZWC~Zl|`d4caf_DMTBPUOj%kahD=tx{*iwFOftxy#``gX z5YGl(`%qWt`a^|iybzL$vWZfJW$ww>L84VG=48ZMA=6KCr0DT|BLJjZ(H1o*L@E9y zneA;FL7FtCwY`>AC1Oyg-f8)|mMV*ps0u z^k2?8=6`keG5;^RwKRUPSUqe(|C6AwV4>#! zKFxIoGe6dm3vu;!g;wPY`x9o`Iq|k~h;AHqtMb8P z_O;_+4SPonMzrq*I*{e350|aq``{>)VfTo-wB=Y@{aMUkXWweFuhoY^wY$B*UuR!! z^#facV&l)04YJ@$@*(fj9$yg+LdCe{WyCNYW2kA_roF%Xc5eBM)DXa(`fn1^x^G)r zIWa}go!srg#iMkTw>l@?$(37hEi81z2ys3`#yDMQy~q^Bm}soG82*QCqS6L==Fph{ z{m45e_c~3TRuAFUhAS2$`Y=N@5u@Ad;#+O>RkMrd@B9S1QKf>tI2Wdr<4ynUkpU8# zM7l1-mjha+cqveJUFx8|1=!htFBn`eV}OL&N~ z?0k=MHc6!qUf*vDQ8wO|7?>6FJx|rKsYtZj)U{bjKo6&B@)&O9^+ zr|#w$j2OR*miic_oi!?r{$>#mxn?dnBOfO1^fHp_ z<^+CO7Rn#jj^BbXkXj6Vq*43IP`}^X*wSjwPtQF@SGc~hJyDgm7I{?P<3VS!*UF;4 zoL3imSGN|O_vj>XDKBUL^;CLeS(Ks;`4U#{tkY&1)e>eJ}9)&xqk(dDn_kN1_m25njD2i~Tm9XKQ|>%fIjPOQuwlGqM6uns2IY ze%3GpJIF+E|E1(39D^3u97BaaJYVs${a{b}$`x#IrT{$qg6jtq0HdRiHrjZNfQE1&I1<P0d{=QE|@> zz?P0u{xph|HvU=5%mbw;2Sc53qZC;>7bD})jH+6Vs5y1Ya_!@!R)l2cAX3+=l1Q`X zkXN8j_6RyE2_4F@eM!!!iMQw4;;7^A{M0&Hy7$duFNzvQ0BcnzJDV|%NpcuI+eBBm}%KSo`U-xU4xP!=3Q$tnO92}0;)@(%_n z_jqrpgi?X7MG%qN%sNEd;zH&&5=$?eAX3QnIx$$NQD|5K?qsnV5!3@Kr3wQWxPz!@ z8P~y-_+wIsUghrc2n3(#S`&@Z(sahq#UDbyHi#|vHVb_Aeh8i#j`V0wODV*?Mx2~| z>n7u5ZU2M;n+g$qFzN-d!tSpkp2@2*htILy=4M(anwUd!r#aD_rq0dMgbjk_lKI-? zP}~N0?TD8zVwKA8|1xk{SpFrIVP*c09~b|Fdp*<4`$wz|6m3Z{m7hU2FUR1%0N~Dr zrCMdMq8z9+&Nt3~ZGsDrCzAiEA69zj(gN!vCwRN??|{wx!EC(m7p;7t`y71%@7DvT z^WoW#ESZgw38xU55N881h$T&*&==u*`JMxiNlZ^TAOi7}Hq7rdEY=YJ_w6nmnV zes}#@xe2@Uut({gw>vihN#aiyH;j{a6BXDmJcd)7BFzD5mR!y!J#+69#@Y{{%BXdh zjWU87WE^*V{k=(m4agk6`_o>-y2l2O^E8P3!749R+5}5!$W3XcG~M&Q5jY}s?*nX5{kyU#R|da5?(^p@vbtF zaJk9->AZezM&`eD+iEwL>D=&;5tBEUE+tR`pILTbJTW56up6YeGU^U_ z$DtBZ(h|SQmiqHTfZsO2XHG^Lo+0%V%|p61DCco`3z3MH9(xf>=+fx7Zn?CnSCS0G z;(Mm)FFj8VAQ;#$f7jIgJvu^2#2hf4+Kh6*kx>OWGPcU7O=FAR8=}f4S(L{VxGSZF z@$H|?`=~+vfDAP>lq{CuRJ39WOf-W#H<+*)2;A{OL^I=QhI~vjOd_O)n~?n{#v4{4 zERX&$v3-pVQ(CVI^2@&^oue4iSu|LGxv^xSCz<(tra;z3P5bTfy$EEGKTP#paJLJs z`k$!F148RP`C5+_8}bDbz&IZmeDml{XX!w@7)Ll9FP{jFj7JR_*fI9PE$3uD` zj^k&ciPPlS|A7TO^&>CbO$ufWL8XSPK|V2Q;)}As-|yjs-}_U zbql*dJ8C92cIs8Ps7VgvDeYGaD*_PXhg&Y;})DlOgP20j+}}-rf6<+vL5*G12OtGQ-R+{T2r86Ok(eMkGxB z;dN4YRYf9_e4;T^{CVi+avQSR2*>!t$9@yH6B~CVhH+QgvB7F+3&aXbK+))=rrA|N zLfdFtl`vb}(pNL{weP79Aw^!+yO2PGmwpo`V`Y1jK`pX|&r;LayMZZx!y_Rs%jJ$YF^1Jz z85W;)In9j!qj>qIBV|O0eU5_9sj zNt-sMu|Ziy)<^uUq<8=-DP4{ja|Lqr273hpS_IRthh10ptiizzK#+o$fG04tfBw4i z(}0tslbn0rk5n~?0coK&36usQ>NpY%xRJi2>ojj2b!qK~*O)q|#HTWt=*={MlbRV* z*7Pq?M{6*S#?o0i!{D1^__u)b3?ICNKmbvP0~SEkIr(jOb%%);lYfH`m{DkYt2GS( zr5p*BdEeOPOx)6vPmFO9mi2ERoxzj!nkdej-Y-XG3bd#)7_=QJ*JhdYxeDSK+sI#L z@YWV=2vH5a=mOru{bb97GXKOY(BIMV>L`y2l~q#dT{QQJ1D#}SbGj90N(|rt7b|@7 zlF5O2g4q84#;GZ{W`278HL8|aah6-qfB}%6u_JYsT0O*_)4i7!^sugoP)&f2dKmC7 z&{$7y%KNTNdZF1pz;Xcq#hoD(($z@wN*yfD zQV!!V2l9MbhP2;97j(5Hf?$hdjFoifpc@Ug!bOp#)6H}pe#rycd}8Is9zZRR$Dhf` zN7xbaO2!ArH%0=seCfB=!Qcahq?*(<;a#`=PFrGue3L!PC7!yT%^zE%E_^#doZwC9t+fNy-9*rE!r>FV9wTQBAaIC5kGoC3ufBK7Qo`VUXG1$dI9= z`GPE9z=hGQwBPb>#KS$1zVv(Z6J7 z6q3xCGRT7Ix&nj5b7mlt=w_nna_GBJmZw%NRJ8^*wF%zhd!A$iJ?jI^wD6T;*u0{; zHOXbC`~@=33EMZ{ma(>;fGD@4oj3T#8#{&_YMriV zbuLoIdOHON!x&rP)ROx%tx6cHJBsH`R%JmzYlaF8%X!)=+TRC+xh(wr`kX0xTin#` zUNomODM|BF$mq)Wg<`tC2&fgnFXKu-Y%pU|h~9#1sLX0ql1VV?R{(-_3=_;51GJmYMp{ zY(5*f0I8+b2ZwA=Z^y*TBuIYD(2CK>l&r_yn0cH~!SfC)RLV_4W3%^Fbc=V6IG@o3 zXF)ZT{J?yHnj3H8F1CVf8ZN`i`zHzmzx1y0C&iu*3JikP2H7r>=_Y$5_FA|d*1hMB zi5?(Tx)7FV!+4XEh?u~Y1oMq-;FUa)6G|qiPDf4iPL@2Q-o`;DaS-iO2uA~v{)G|K zr=(P=Zy&~-t!!%MZ(sEVaFcqvFPEZD<|vfGm!i_~ap1>1b=*;d3%@IrqLnJVY&b5t z8}*Ts#Mtxxig3Wws%pn5p-v2G%x|MGwY__tV#~>8$JT|OHeq|n^^JV8%Xm`1%tQDLy~|(@l*A3`)O&92|j;#e3w(er5!fm zVH{`=*Mdi}X-L!yg3RyfcaScUM|xRZi^+Q|Qdm90Ap$1)Ty*-1h1J#~9qtq%`!Xq1 zA1uaoC?$gT@RRQNYo@0H^Xqlj(D40?6-BBgAcgVsVW`KU?SMQgFJk?wy(%Xv!}e#2 znD0+D=gewBXrct_thbjDZ#p3=(Z=q#t_RZ~ODxLm>MQU9N)PaC5popqQ)&h(cFCW! zlI=~i$SPtUf_PTH>U@wL>gwDe{m;d^FX!F>t>aQ3o;)^{WImJzk~k)GTmppi$+|dA zP{irMXKeD!ofgs43MBZ8)w1V5X)7F=dH3!FCu-`y&fhc9pxFsNX zb!t1k7ok*()Eq05JqEez;Qw-Lvi=*xh=u!q!7$oz#oII30hW}XDgUu@yACdiCr zozk^mO(RR<-tOfD#p9n=m{a(As<{j{f#blMU>*qmp->vX_~{W)s-N-CBPCe*!1g)% z0p7mn5og2oGNMqyRo;iRzql|H+9ak(BVjYa*Y1N^_Lk3J{~`{lfL&&7y|MoBXfyn> zO^wzRT?rvD8m$mxo@&CccDTb}uQtrl5-egHP^`fO6l>;!t@rjUCBmL>L1oB)k{d?X zsFF}YMK?jW*}WT#``GdmW3hucjIGWTm}yjvU(WaWNIPerGU6sJjzmAT9B78=I79%8 zHYFSQZZTw+$iep0FUBR&QIMi}pSjo`Y*cfL3GaM;~x*xvXW6yk?H_Rlv3F(}MsZ9?!ZPR0+~f@$Rt!gq}aeW$=4=G48p z#LyCm@Xpa6VJAbpG%fs&q)va&6OU_|%4a}ZZQ&xAiT=t+gW2?bFzS0F;2}kamolja z=EaYdr{NIU{`jIYdgp5`9zdb(4=}1-VbIWG4|X%?ra1Vz)>BOgzi3bF3O{7O4WfO^ zn!feYV8370XjIZaP|a5r#N?P*dh+fVus{3amc7&8Kpv^4a%!@xtz@X2!?oG3A233p zr};DeI&^OR!pptJ)Uohfr|0lKC7QH%7`XYtwVVzUXK?g5;D(9V(Sah`vdokG4S2Pr zyvx>^e@u4bX_mo$fODaF=PcCT>qD(^k(Q`7ysO5DI#>8%-fee+(|^$aXCo&jHKdhr zeybF>IK7(Q{pA`SKJj>x+apwpIc@tVc?<^U>4;TD5ww^%j4bfu4>h+)G=Wx{I7h_9 zA9SOm5agt80p^R$2|rXa1t8I>$@m>alz;RCXysYuRzni9Y7M$rLY;B1D-0}n>^rnaOP#ptzXK>3Akufk6 z?FXxQI(F90YsZ*LCAQ|lVUMT(MDsdqpwcvY?{!5F$nd5RyKqC17kPQFgpFxoN_9Et zf2I|*4iNvAoF}?R`O(M&=f9hLvxf!l3TFYb2kBK)In$yTo6BeYemyuTGB84~WIvEs zs(`~E#25+>p9@eL3O%2w4kO}`kgHq00~H#V8r-t~*|A(Q1yDf10^!lhgVoWnzJi|2 z#H;*g#j&jpzGR8zTyWm$_557l2a@KGK543@9I7lzD~lc!{#Xkab0C_RUI72Gz7hLl zecf;YdsgUT+#5u5AmWWBdA6{-4ffy-{U$rA1e&z)%Lv9ajs+^Mz~4pOLFI?L)kzT5 znBg#RXGGRp@QV~k3S3-JJY3;qq^0zfDmEQ+yoL3C(9ZW5D9Bu2 zQeLP{sa^|jo_wXQ4gyw#GM(6m;90^X*1ybH0M6n6E$FZUWPShPf9AiOxK)Y2oH#qc zj14irO8XnV@5z`NOx=WOF{+HT-FB+vJuE2lR`XuJ{dC z;xvC+YK!E4lEqq!q%x|Fvf;PCGxm%!0oy2LLA zjnwvw4u4~GiYQVVCQKM~W}Lp%76whjD}u4_|ILbfCGGm+h=nv)qwrq3l%miLK#~5G zin`^I@f%_4mWHTvoG~(kBR#eSD2E%)8t*T1KMwe0EN?E<93iaPvZk)e&yT!MYaBP| zDhmKv5EW4cbCV6eq5T8MR@qFTXe2p&sEDD1?qYumYyjs0$KHW1N{Up%^z$RmojrE zBtz|)%%I~VkLnHCrzMTUIQx2Imn_p^DOEoO(auCgXoI3@p^{;#mea$ zEdGO)`)=U$NAX)m-+;DwpEp-p{tiYjLy1LNv=E{b%j|~8478U@ zKH6wDReE?iDR7T;AXCfkMm4q@30`91dSoLCY%yY?9%pz`z+&t3uZ=#b0j9mC z;I>WzI3XHZU42&$lz!;u*@93;4~PAwjtKLs#L0K}?ZQ$JzV<68f@l4l6lV?3z_*?0 zkLM1V5{H^`TEE<8-pNLXqx;hiUy@<^)P?D%M~mP}uzJjB;HEpzyX=R`KdxVb{D8r) zgp@>&@aeI<&+xrhccUx>Y4(@obpeXUjyq+bvoy3_#n5`ILt%Arf1^R@^NC3PUb&RW z`52K9A{l*Yjs|3uog)2E?5(kaq&yV`36jn!Y2>jB_w0tSctHUPYI0QXIoTlgOi&cm zklLK&HVJSY2XQ`M7ZchpZc|1~>cZa3><=X{S_;uIS>bI+nTG5*1f*3&5;A4&erXi@ zKJ4ZYf-I}8b7Uy`xpUVMff|%L{uvB8W8-I2Epp=ouSg{w2{eu9>)T)NKDpN&ywMYH zBG=05*U+}5dcoOqv*om$kI!-zmZv`PcrC>hw%FB*GIzhrUe;NZrr|j_xcukTr}yWp z*nn*qOBV)-XNz<~hqKzy6hrGYJtDd)zB0O4q;f(Rf^JMTjAY!f-k+m~6`iWupks5t zw+^Q>Jx5~35`y=aax$feD|(q=kcnBT&q|cMsi7 z$!k3Nx}I=^#%cmWewr*xNBtJWI9{RlA?!F#rLLt)P$nP`J<=aRsgft)$vFSMOec$e z+V0e)8Jel-2&n6nO@Y!Zyo;gRz&2MckS6!D4Ww2m5pn<*)61Swy_Z2@QcfJ|MiuzyBg50Ob)4slm|O^R^GP1a>&)q$8C_9hTkiFg;EUR1mL&A99y;8{*eiYpLUFE>!|_k zsPO|yJpeoEW5h_Ah{zf^SpTnkE05b9)W>0`8+xrFxBZPJ(ZA4T@mZO!C(0gfUEVY1 zupcHxrf25Jl-gZ1n_f2=#aq1~nm`y5K&h`2E9+#Wd#lbI9;S|o1?_S3i^!P4fs(6Vycv2ToR6{4f+qcP z=@gvO9MmqyO{CHNUphO1`b{L38yhGU?Eqlf*pj60v@T~*ZDm)`L`Y~@Upg1qi z^ZfA>b1_-4((LvSim|rI>UzL&an7)E%r|;_`U6)k)+9zdp~2lf1hI5KDyQo$X!oR0 zH#Y-)umH`b@gx~y^xy6v$r`XAt*L-Tt>V0fbTcZD<)lPXVjK{I5o;S5Csb;vrvYmL z)*V1)1kTd)DK`J_o)&*FitYw*C*Pc|T|Qb&p6xK2g#c7wMyFiGx{4ZE37qhedq+iV zWsk7ev1)fO70D^mA+vE^qW&F&Evru`2tq6yShgq~yqaxZdqbo9#;kv`F+Db0OY=H+ z=|_aHE|x$fJDdn?tDv$nDd-}X>0%xhT#`0E=6N-mDuxjb(#}u(O4xpebgmJtg{11p z6Zu5)gN2wi>9V-d66t;Jgx{QzU7TLomPC8rDf`$V0#S8}fqXg+sX)jP{b;tcx9C>i z$Y+tQXo2OBe^lVA!>AgRs(aV{2FVAHGHPRN5F&ym77;^huFM7(v_x9Jf~=P!MW!!| zET@6`BR^Tu76K*yu8eS#`y44=ug5c3>mf#8pj(Nl+KPKu^^g=^s6C4{OY9h)x773& zFRtT6B)L*>qX@$=FP^p4~D8RhQS zmDZGCeUn0;h~VRZnao=ufF^YkY+8LpA?I|>C4oNwZH#MF_SRQAhjHwV``Zw&Y7IX; ztrt$SVt*tpRU?*z4@|T8tT0hij~CA6x9t`P8@b1tcK7B#)8tqxavrh>rm92I?QMsB zK-{4(Y1p$1eCgF(v~}p_!$^f$FbK^QhNU8!u1->@0kxT;R}|RdT4jD5ZFF6t0@j~Z zHJaVu+plUv&`tUo%sSSjaj$4&JeznP!oHriP^@B$76?ee#+nVDHi3jNc!fg+LAyp! z_qtnQ8tm0y04rE)7ToOCHn!QCniF%rswrQ3xw8HJMK}5p8_zs2E5m%~CE6&#n8$<6bssZXu*R%yza2F)JmfBc3&ooh zQC|#~%=7W`dj=~qV&>yHlyyLY z!&Hrwwj)8%anBltl0)$y`t+H$^rkj z+KMNc$`?jqYgx5nls1}0D@IC?N-M}N694>W`I2C+?LywSwiJoLk@hw_JwBRu=2@f;jQrKj@nqv3BcGvKvO#B$#~lI%QK4! zbyTL=p?gu&%ti&4(~_GS^}bq`SmOPF7Vd-ckX)KznZ9k;d`&=D$_@Nz3^+)x>dxtE zqwQfaY9kKAo>lR=@#}WODZ>cSosCOkAxA~?w)M1~c@uS&`kT!_T$-^q-mwu{zBCFd z>51RD)kTzA-`!FJjJo9&t>cLlFP0o#a`QW8i3pZ|;5q1`O$2^UMiu-Vx~qi!trmUf zoYWcxXu!4ly_}gT52^dy7HX33py3^v^^!rA<60|3z3*$QzU`NP-%72eu@#P-&DT%`oy;WKtccrehja*4#luf; z?#C`LHTG2x7}-)E0*4_InNPxNL=yH@C-ieiTt|DM>5l7AAB}5mF|}xYSAAt->>3+B znc_L*t^sGX$QcJLv>=_Wl2_jHT<9_75fmdE$sOlW;zN#sp4=_1AZCxhxL?2uF|d`w9=Mc8q)PNS{G_VGH|+D}QZ=s^pq9Nyi{chunqR=i#SMY7<3@;d+lc;*KReAoPVF?cZuzRk%M*1JRz7gOc_ zYk9k~g?GiK@#XZQpRJCrTsGI4QWSbJ*GZjP!6TLxK-+nDMs_ptrT$}?0hJ0SiZT4_ zn}){nO;wwC;108_N^a_J^V~HnbHTne%jgn1>eGG}`PDPXtMUTI=uVltit>CbRi(8+ z#h6zOF+->63HgP`1bUstT7)QCh`0=e&LjJjMPMwZRy;>qvWC{AOF(UG9$t{zsczJ4 zd3z|;uu&fz4>tHslT0TSZW*G}d1gcV5(W11$?W|hf+<(|kkNA1eBDrQW_8L1(Zw1? zppZ3k)jjQS+kN3RlX9cUcXQ5aGed;v^QK=D@x9ATCUA}?x!ae~zR~yL1?EDark+Gl z&GH~>H~=PZI2Hy4>n3Am#Hl3=Z}>N~ovlF6ev(PBBD7v2ec|Lpyt6X3A9;j-y0!KNh&ewX+=0O}YmExF4BvUdx<>jd(dnej;yV^;IeL*Gnd54}p|*BOL;XCuNF!r30_TPGk^Yza zRk51u6HOi-5M}vgraZ*_T)a)!am%N}%UKK%^19N&J6IIUPo9j%%}!IZi0oQt^?vQ! zd>kI)@85r|;3VBG5gJ!N9ijq$vu4p!xK-Y_pC8 z8fHWNar@zZ!e*|6Vf`g1AH(R=_G5MR8HAC$86$z zpsYOy;1HBjEIv=KzQ*%+CJgWk{M_{<57w*QCwA*Og1t|s4Kt}I%E!#o7E@iu5kKkg z07YC30u?jz`bXFwF{qcZ%h_}e4LO9Fi}|^}lrbdEdKrg5t3oGw{PIQGP57Abm@Bv@ z@9vyNiGu~##*acwsdLOSfuHI4@XrLIi<-0Adn+dEHi8BbOchcb^wBW2$X`QXbw;(S z7|BVQC$cxA#`)+F4z(4YVWbtFAJHXVDL!!MJSsD}a+lnK9Oa-5Jk{pmoM#SWok0;}V50^x z-+Iu6=SZx;`BmCFnWbuZw7`CuHPnzThsI~97ji%Zm$$nQ%ZTU+BdEA-3*%2?q*obK zF6~jVV3l0UZb%V{P-WPL_~h4`2uf!`N_n*t*AxS>N>^8RXEOUH_LBC zO*{~_B6u^R*0*6+IHQ{1(lf05?tFd}Jx$hP7TAW@H?`mb8&PQdm+}RZM!`0s)a77v z4R9++=h?yhC@e1#<=#Ee_}Xa>%FAdXgBxXDNPRIE<0 z(pJ{V$%@VP&+YJ68EMpv%dsIZ@pW2yjIcD#GBA-Le0_vADU>b@nZ^`9lf<#hB!mS; zX}gEFklrkG0L`%Vsn7w##o1j9rk>dukMUPvOE;eYLQ&v2~ih6hwnK z$$EyrVQ8CoxsPnToiIUkqs$&C){XW217^8;6s zJDnHIp1)M-C2usoJgbeD(Rc)r<%;1>srZY^ot1W4&>GF3`a{8^)Y~~HLcf4O5{|z9 zVVtu56AkPKBg?-pmHhwZY8ilBognkW+stq+m3cp2zb^v`8MR)UE%9rsp&ii*#;SH1 z+6Lc>c5Qw3$@}<%10=vCEH9T6OmaKmYsRMSX}|P`*Emi63RUrpSwvc`8d6Ln+KL@> zMjk@f_IxYFM*Rr_`*D}~l4*PD6K~8G-1fINR#k-wieTw6^>OzkbRVVT$fsE>UYY}F6&S9oPlZ)iGyXA{rA*DLM~0}q#+5{~ zzMO82IvESA6tQ&h_HMEM+F7!GKa~`UZu*hw_oQjLMK@hg>gSBQe>IH+1xz;84Il5< zY0}lCdj=vvhx}O5dlk(>KbBWOVzfuUU3qCf$$m^fJ-ofB6#ED;_U){E9a3LS@35cT z$rVaiR@Z24EESGrX0nDI%jYv;DwE8N@n75&@nf6qVSN{owWvQPD zyia0L$rUlbS86P7!!J~jeq%8ZQH%*REpQ81F|??t8A}}4=&)CN@g8zbT`q}lJUz*! zYg-Up?w&H0`6aa|lDL?)bv*|jng?m!3hQe*&Fax6JzKbC{n$s1Mh_&ue~J`BZ}VuM z_67d&cAi(N6)FZK!ximk2i4dQb=x1SU`%W-f+ z2@_Pe{-T?zL(>}2M&Gm+qs>WKckhq}$}n5Gv}CN6rCdd%Ik;c$js*H^;B)~l@fqak zP@NTjiZGl&tD`;55{yb?=f!VA`%PI#(Dy-L-ptku6Z0ow zmeypsXz}@1d)Z3Pc1UntMFO}k`G^lX%3rv)O zC6DnLqnCVMHhH_npQV37L?}TBv$3(FXaw;u9PCCchzi%C;)B|2jER;hq=!sooxZ7- z<I&q04$J0})MXb)i+ak8^0j2JtXC7z8)UcxrrN>u+t_vxLy*i>;givhIf&bY@(CyGyIo1iLSvydERH&mM_ zS1~qU|5)_slX3CUbbN0GKi&jJ(o z@?&Xb?Hs`m8Lraw+&#g0kXJOC|*St6!xj*yzK3F-3 zDy)@o?5@;l7Du|fuA^%ET(BW5pgtZ#xD|DBCT7DTr3$UE?tp1ZTe%2knOn=~K|HZM za^7l<q6C8qvJ#H zdMr%QfFpKD3K6lq&ZH-8`UxRp?rqq(nY~Qa?E4awI;?*2=DB$t%~)*HxNOHV0Y`o= z7Q8(g0AvTsd&BqxjN)3%X$B1mTNuN`W3vAGRc-s}sn3m?7@FcI^Oh3gnA4BO7Mrtr zM>bEYUSWl{SBM!~ftTl>#&;30a9MaSvY)?~gL1(HE_-h%C&TbWs`k{Y5csjZ^;TwP z)%{5Y!u1!Z@C#Hvcoi#{L&PvR*Qm;&e|R8vjhS}wfZ2whz!j=I&`wt+ zfMNj&4v@3U0|k~U|Ezc*bW;RVyR+`pjNSNtooR2<3X^nZ&-ruOC7^fu&KNT;T zguoqpg+J-uNxe-b2$WO7j6eec_bKR5$c{y7$IzAY9_{6%Byn05jVV}9XeIxNSU|o% z2p7WrlVha97Tw(f`q<0tVAfIOUOz6>^Z-AQ+f0}yfQ9Bxk2GEd-YMu$)O%qZI!GO( zAaRW!&<{{tQEuWdiUUk?zsxEBcu1Tq3=7M*sCUD-V->{w6~0Uo8@O2so?S9?xMu=S z5*+ZDY$R&??GyQdhZ>|2$I`k@08J1U)cjI#I)z*c`Y*#@dx+b8nS) zy5((g2f~kRl5UzzNE|Iz>&PJB=RtRsCDT)f2C#ZbyTEt+IyV4T;2IeRS&M`00F5IB zs$=AQIUTvE1b8Lxh9 zW)C>Nl0H1Jt|>bR7A2vH8@qR$cCU20)M}x6icz7gER;4$6ZIF<1YI4r5XTS}V>AAN zDgbmQ_ky40zSp^-hfXPu=fpCdO8*;xtF~(J=Thf=lAh(}8ZcDY? zcFUf@utcsmw_C$4p*sF$>BeU{r#<|uJb?hy;mo?tO6)C1!UDsmfk8OGlyS*yKDAGN z)5D&7^bQf%OId~^iW1*255}nEHLj1a6m&q!%t}(Kre0YkyH$M|O2ooNk@$!YczZFd zhRa92Qf{ckS*4PJ%0a^Lh`y;jlN5-L-O5wN%FU$&#N+h>#jk-qu@YZNLN%NA{OraA z6l00?{ReF?K^Rhi{4Xl&SWjOa{h%Ja;V9BME%5KE%ezwSL6tzH5EN*#Fj-(~S?;1L zs$S2FsZdz$HxBm3igjwv%xzq0(VCzhCF)OM=H4A&C&gsj-fZsf)E^QQu!S&F?!=!D zBqxpy<|bwlHsg$HZM%{qGCJ)n@% zjkVhTr^o=2s11F!+^4QkxHd@l_aFQ#i&;v!h|l!;8Tu zI>yMgL(dD-RnN9Bvg@Jn*v=mCv89$yxQ%g?;&B=!E_rmH)OofhQda3F_{`Tx{6D>l z{wXQS#Pn}F0s$~!+kIBVZU7abO$cI%c{{e?BtOz-Rv6)O=+f8~iGuYKDy~RL1^Jio zmuINQGw!f`zaHpuTo`iM?#WNXaH=iNScpPawv{2hU+|}p zlNW*0*Y({ofMQR|(EI}o`FolN`=!^X#0(TCZ-D9smXju2Hc<>E+l<7l`f=>qa`Fp1 zxte49-nlT~mXw8hHJINKJkV=YFP1W#^2|PvRJEy3_lKHY(-LY{)bF{8<=0Q9DKc@^ zGNg8KfE7jNJTtySJY=dxn0Z1GXd1{(S@pDd6EC{D{U^`@s=d25Gw66Ho;{UpX47+7 z1avueF6&R*_fvWQHZv{W4m|ixtLA{ADdYDPDY|j#7J8~&Z{4Fw<&V)yZG}bkR{i@u zbfVEWZfb3nC1Rrw?kN#x!xygWW)+=g%-h zb$MQ>U!X~u)zH1;4g5xdpxbO8E{$&reTF*THy3>)7Tl+{l-U`}IWkXU*|r^5b=U3F z=w!JY6Um3%GS%gGi*WZ=NlD^4v_S8hff|IK>s1DYS7SYhV;w(@sgGHyHOlJru_(Va z5zn53S2cU+%zUe0koT(krLALPC}|N`rPuToSZ$1yv`wr!B+l8f3|xlV{Kx#BItC6& ztX~NgLF{G;*xkF_zbf}zbpF6s!SZI7G~uRQlwTED1lWbZ_R0urrhI^ zRF*zva_%UvZ58XRDm$}Iv-h;~{e;1;TM><#>PjQ@05BgO*QgOQc-8QC)$I+kL*q@V zdurY2=c9|cBJ(|ykK2`p`2z?Y+B>hc-2T4fPAa|EV9EUsp0Z(8%3ikWy$z8b$dmHE`)@-S;iCgxb6EcNb zDYP_xq8$Yj|H9bTLObuK)LYSfuhWn5+TcJR#HKr973%MZwp32_#u0kb#()Q)i{-Hj zRf7iB0_3I;k6>(or6xwLN=a~5K#*MXn@L##{{q$4CsWM)J z1|E;lf2$;tP{~=E<<2JW z)5fFKrKUDNsS4J^yDYV)7&{Ji>70DeX9U`}nyM{+h7SbUJG{<+n2zlKM85s;befrYCcr10S%DyCBbALgh+GplYRiL8GMeH z7=PXOm$>}ke8D`p-y_30)ch1z?%TDeZBd4&iah|gB|cVCoCshM)+}ZEoY$oEOhJ(o zz$#D4=1~lkK_)H@Pe*0#PCm6#*`;_dU^xCFc_b-=_oqjRq?eOh<&U}m+k&aSK`YsLDew4bTBDO_$l<;+J_auU| zq+FFV0@B_AHP^XaqV$m@N2X9-E89yv;=Wwj2z@lqLWk7!R@s(4%5(pKN?g=EMcU(g z(4kRQ)KuhFV_3xN3q_S^S6Fv+Ln#l($6zbf-S`T=t%3Wty&(=ucin*llBhnCb{$>J z)BY$edkcxj^*A z?~o;JC6vFNcR>$HV|WHK)&s4w4gs}IZDuxs$Vngbal!DD;lHLFZlIiQ7yZMBsC5^# z546x@RwgzcOD3VVbKI;Yp5P@rn4ikJhV?#j8kY_n&tuEweJ{ z)BD_1boZ_88B&>3#>?Dz3oL=MQgr}*YS3K%L2mH@*<|~~m8P+0QE&>P;==utG}u0A zTIH?&it&r*F9s4m(4IM4WdN7V+`iRF$WBS`Q=RwbtQ+Z8n!QVVv9v5X&1PgWOnZ3L zX1Wk_NDk`2P{9z$z9HMmgM*Ih?TLAcW>D9RX0T;^N4Wz>L)01ruZAWr?b-M#jt(5=$ztFS8Cn-7 zgZ&>kMa@OqQwGgF3m_Det&dl32~mt9>MvSL)rQuE(>s^B-AjMl1>k*^u)C)*2IHfF zq(R(#c<3{`Ch{Mm=?HWu_(ce1%B0RZ*_jm_W~oM}Z$^ zzt4#PwPuIS7}N7f!wn`Pz z#}BGCR)RX_{n5tvs)-@k=6-Ou{>gUO(p$AaQ5Pz$DTX65#z&=)r|j3*fwuD~4`oL< z6C#id2}ULM#bGb|x(>0leS%dgAej6OOfX|+xj9l9-v;VV{TC;#p=?9ZH7$dvC{5_WkcM%nU${|Bt2m->raUV)?hP1Q!7nu(%_*jssh4b zDi)=8N^l2xjS(`lRJloR{a?Gb+mM_g#7A6ckc;HrUi-#at-cbJp}(b=3>FeuyNK-B#W-SR>hEcWBR_vsQt z;aN4riEGEjNeYxcAD-Q^1n0T$C<&Oj9fDDl$|Cr{wz=o5W@r+A3DJpBfH@*m8%@g! zQbLOeA(r!xAY$PtLKmSWQSz5q2%=ZEwaE$2N+Is7wDRdeg@xOq z`r*LL_Nx0U-EzUoZEy>!!y5K!%q9MjR^gyjQDJCoj6x6SCA`F96IuB#zYI6_1h{?A|ckV1sHBTuu6r-@l2F^H=F4A`^ziD0Lu}M#j530|?Xw&a@7u6a+O!NFSpk5tCkX znF_{l4A`e!a|c53z}4Cowy2tZdDNjw&+kJmJ)aN&G9Xns2KEkD$Lr0mo7?SozMP`>6h1ppH;A!jCi@CYk*1NZ68W!BYJc(sL2Hfl(-VPT&Up`iI2c8W) zKW!X&qWOmRWA|nE$B6}qaXqC<#2{#5Vo1zs;IWs@j_z3lOlCZIQ11z%c&!jxfaScN zkT^sXKDH_xz6TQj`h!V0@&yRv|6GC=cZ=j1KtC-IfTo@y(w3+T7^23!ONT_5Ka9kj zJA$1}hLt}}B5byTpLVL59jr#G!+DG-DJZnbEt8tcyPfMSB>FQL|H>jv(m0if8+mTr<+%VtNvFbbh zSUt0=bX_<=StB?s`}1ePK!@oP`GeC$*(B0j6O?!f)M~-zUCh>1+c1rUcIo&EsCmAP z2-digBN33C2if=2D5*i}QK2STrg-k(r#Ysf`o7}#P(kd=m;&B-As@dNzOU0YOwPt9 zpBP=C;A+2{d8oR&B1+3s(9czA7&HX8Hx2e1$J6QOUuVb)n|M(9kvC4S zZbUK9-zGwv|6u8^Sxh?))t{nX9n8iHd7;J&`RYMU2R!jv&`%3CfpYf1F!8i_E1J-` zcsrhTJ`u~MfBZLHM=oRi}Ca4WHqvrDbrit#{iWzCf(rRjB5AYp1NbUa~tt{;S z=%!%*w@Fcd&;J0^S@*fBm3JN3U`2MeH<~#-TtXiIUvNnRK_00FA%Q#{02CGZ`80J$ zcz!AoKshb~Fr96XA7{QiW}<>)GxcpXf-UC@eU)_{t=4p@JT?89aJ2oU-z7GCKxkz{35l@ zvN>&kwaAfU$Wdq3@=)$xdt=8XIjwapF0zT;KV`-mI-Fc4`BF%^8&#g8kMt!Uh-AOg z(HYv5cM!yF7&Y3!O?2mpP1sHCv_dTkthYn;#+NQQJIYNo$2+_oo$gDJ`gT=hWSYlL zrAT*Vl#s(sjh(Ayq~DpOB7_?u%102{-p-3DT|e#4-CbTGFG=@F`%?@=af7S(X3cbm z{hNBnOhb8ih9!v6aeC}WW7wbOu*FS%#M&wmwUAfn*6o?%w==3W2RpOD%tF8vms)%DrI)Z2e0rbqI@ zo}~O%K&l|OzAu9H7=&Ti#Pj#8$}ja}Ku zMR&0iFn#gaX~EFrGG2A(9Qa95p6ZhE>*X{9cy_+I`V5}_(^kj>X{X}N2ab5gj5N^( zVV`xkgDLTmAGLDO<`5u!UJa!!I)Q^bPsr4Wq7FddY;PjlTq1x^PI(colPCf6)MFT{laJO6`*-`G8 z7k`o-#nL>87IKVshuDjjh>h(O6FZP~p z>~>Y`za)bY?D8Vm0fd)-Ne235E&&HQQT8KjE-km6JS?F!W}>iWR9Th9E*GIZ98ZNZ zs?du$ufGi#ZWqUe6|$7eh%(6ssN8d+-ra4vAG?@2WK9ye$BVlt`yCU=5*rHGCguS5 z;_ps6i}({~veS^M=ByatDB*ew(EROM3UTd2&p-Ahf_;;bpkzp#Qv@;GQ#HRyF{|9v zR}-n0+XY#elkrw1IuAQiqe|ro-%3j|P0`Sn<(JeI&157?rH1c^fT-p3fi_7YTjPRj zYc3Dh3=r;hvmU?!Q#LZ!WqslUpGvTai7@>kq+Kuh+q6KD89beQI9fo3ZDOo{73w@N zEmgN&ufA(4tSqSfLaIwRd#z@sOBA^>MbE3U3van*;uQW?(cXWy0>?7Pf*Nv~hq)GM zqypeu^V?CltuniLFQeNNW$8RYu|%(ZJEIcb%pH0gdGe4QQvfzm>}U$#R_tK2P_bkd z9mSrc>n;{1t>`thM%Znt3ytH^UK8j&Ii^z7X7N-`l<#s3_6iz4m-8h5xVSoLJSa5{ z15Z(E-2fbW*|v|&{sa<@n!FLF)Z~4P@Bb|^^T*S;G-zb=#DZ@Hm>llkV3$|VJwWnm zo#@Q8x+!KFRH?F4&+G9`8sru9SKMNG14St}$AnAw@5?C$P6bOUv^}BwmMEFDL%?o> z%V3h zi)Ov|9Bc9p`sB8-k_ZOBB-QSK#u#G2C=C=LA~?w(3oiha!m|%D{e9-~J12(h+#9_1 zeD9UlCo})8E&Ro;H>g#v*U!P{M6?!0jo(MHz${vqhn-iyu32-Pg=eLuQYyPDF*`Mq zu@yLMp41e*n)b~i_@T$Tc}ctNdxzFWyd($82D@xgx*`IXsHbFZS3Xttrot?dgli0B zyD|b7s8?#2BQJAFLq?X$**$^Q*YxWj^c&RSa`TWK7%r7#30Cg{sao9;g^?gYdCIN=l4) z!qsOSI9vWUS0u`0&7NpDrHD*1S`UQdsBFnftt(e4nuE3SBgE&*y!3y6%l?XUiJnNS zU^9)q1xA9%cE5e$z%7o>tFSMP-GO9l=+ihT645`8Ox92WWgf#QrAp zr*cokjkKyj!G>30TF;)q|2-vH8UD!w!N%}^n39@~nShw|Q%#-^V@6#{moE2T6b09$ z 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

@dr}l6ha2ye1NkRyY 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%0D=`Z0v#lSqf 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

-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 diff --git a/testresults/testrun_full.tex b/testresults/testrun_full.tex deleted file mode 100644 index 4a9c039..0000000 --- a/testresults/testrun_full.tex +++ /dev/null @@ -1,18248 +0,0 @@ - -\documentclass[a4paper]{article} -%\documentclass[a4paper,landscape]{article} - -\renewcommand{\familydefault}{\sfdefault} -\usepackage[table]{xcolor} -\definecolor{orange}{rgb}{1, 0.7, 0} -\definecolor{lightgrey}{rgb}{0.925, 0.925, 0.925} - -\setlength{\topmargin}{-3cm} -\setlength{\oddsidemargin}{-0.5cm} -\setlength{\evensidemargin}{0cm} -\setlength{\textwidth}{17.5cm} -\setlength{\textheight}{24.5cm} -%\setlength{\textwidth}{25cm} -%\setlength{\textheight}{15cm} -\setlength{\headheight}{84pt} - -\usepackage{fancyvrb} -\usepackage{fvextra} -%\usepackage{framed,color} -%\newenvironment{modulelog}{\snugshade\Verbatim}{\endVerbatim\endsnugshade} -\usepackage{adjustbox} -\newenvironment{modulelog}% -{\par\noindent\adjustbox{margin=0ex,bgcolor=shadecolor,margin=0ex}\bgroup\varwidth\linewidth\Verbatim}% -{\endVerbatim\endvarwidth\egroup} -%\usepackage{xcolor} - -\renewcommand{\baselinestretch}{1,2} -\setlength{\parindent}{0pt} -\setlength{\parskip}{9pt plus3pt minus3pt} - -\usepackage{listings} -\usepackage{color} -\definecolor{bg-partially-covered}{rgb}{1,1,0.6} % light-yellow -\definecolor{bg-uncovered}{rgb}{1,0.8,0.8} % light-red -\definecolor{bg-covered}{rgb}{0.95,1,0.95} % very light-green -\definecolor{bg-clean}{rgb}{1,1,1} % white -\definecolor{mygreen}{rgb}{0,0.6,0} -\definecolor{mygray}{rgb}{0.5,0.5,0.5} -\definecolor{mymauve}{rgb}{0.58,0,0.82} -\lstset{ % - backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}; should come as last argument - basicstyle=\footnotesize, % the size of the fonts that are used for the code - breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace - breaklines=true, % sets automatic line breaking - captionpos=b, % sets the caption-position to bottom - commentstyle=\color{mygreen}, % comment style - deletekeywords={...}, % if you want to delete keywords from the given language - escapeinside={\%*}{*)}, % if you want to add LaTeX within your code - extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8 - frame=none, % adds a frame around the code - keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible) - keywordstyle=\color{blue}, % keyword style - language=Octave, % the language of the code - morekeywords={*,...}, % if you want to add more keywords to the set - numbers=left, % where to put the line-numbers; possible values are (none, left, right) - numbersep=5pt, % how far the line-numbers are from the code - numberstyle=\tiny\color{mygray}, % the style that is used for the line-numbers - rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here)) - showlines=true, - showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces' - showstringspaces=false, % underline spaces within strings only - showtabs=false, % show tabs within strings adding particular underscores - stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered - stringstyle=\color{mymauve}, % string literal style - tabsize=2, % sets default tabsize to 2 spaces -} -\usepackage{hyperref} -\usepackage{longtable}[=v4.13] -\usepackage{tabu} -\usepackage{multicol} -\usepackage{booktabs} -\usepackage{graphicx} -\usepackage{lastpage} % for the number of the last page in the document -\usepackage{fancyhdr} - -\fancyhf{} -\renewcommand{\headrulewidth}{0pt} -\renewcommand{\footrulewidth}{0pt} -\lhead{\textcolor{gray}{}} -\chead{\textcolor{gray}{ Unittest for {\tt smart\_brain }}} -\rhead{\textcolor{gray}{}} -\lfoot{\textcolor{gray}{}} -\cfoot{\textcolor{gray}{}} -\rfoot{\textcolor{gray}{\thepage\,/ \pageref{LastPage}}} - -\begin{document} - -\begin{titlepage} -\date{\today} -\title{ - Unittest for {\tt smart\_brain } -} -\date{\today} -\maketitle -\thispagestyle{empty} -\newpage -\end{titlepage} - -\setcounter{page}{1} -\pagestyle{fancy} - -\tableofcontents -\newpage - -\section{Test System Information} -\begin{tabu} to \linewidth {lX} -\toprule -{\bf System Information} & \\ -\midrule -Architecture & 64bit \\ -Machine & x86\_64 \\ -Hostname & ahorn \\ -Distribution & Linux Mint 21.1 (vera) \\ -System & Linux \\ -Kernel & 5.15.0-60-generic (\#66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023) \\ -Username & dirk \\ -Path & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test \\ -\bottomrule -\end{tabu} - -\section{Test Object Information} -\begin{tabu} to \linewidth {lX} -\toprule -{\bf Test object Information} & \\ -\midrule -Test Object Name & smart\_brain \\ -Test Object Vesion & 1.2.0 \\ -GIT repository & https:/\allowbreak /\allowbreak git.mount-mockery.de/\allowbreak smarthome/\allowbreak smart\_brain.git\\ -GIT reference & f3ed72974e5fd3bf932ab78acdf0a1d6154dd733\\ -\bottomrule -\end{tabu} - - -\section{Summary} -\begin{tabu} to \linewidth {lX} - \toprule - Number of tests & {\bf 67}\\ - Number of successfull tests & {\bf 67}\\ - Number of possibly failed tests & \textcolor{black}{\bf 0}\\ - Number of failed tests & \textcolor{black}{\bf 0}\\ - \midrule - Executionlevel & Full Test (all defined tests)\\ - Time consumption & 84.664s\\ - \bottomrule -\end{tabu} - - - - - - - \section{\textcolor{green}{Testcases (Success)}} - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak diningroom/\allowbreak powerplug\_floorlamp } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:23,206\\ -Finished-Time: & 2023-02-15 07:13:24,415\\ -Time-Consumption & 1.209s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload {"state": "on"} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/stw/stairway/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic __info__ and payload b'null' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic __info__ and payload b'{"app_name": "smart_brain", "version": {"readable": "1.2.0", "major": 1, "minor": 2, "patch": 0}, "git": {"url": "https://git.mount-mockery.de/smarthome/smart_brain.git", "ref": "f3ed72974e5fd3bf932ab78acdf0a1d6154dd733"}}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/diningroom/floorlamp/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload {"state": "off"} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload {"state": "on"} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/diningroom/floorlamp/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload {"state": "off"} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffe/\allowbreak diningroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:24,416\\ -Finished-Time: & 2023-02-15 07:13:25,627\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/diningroom/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/diningroom/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload {"state": "on"} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/diningroom/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/diningroom/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/diningroom/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/diningroom/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload {"state": "off"} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/diningroom/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/diningroom/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload {"state": "on"} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/diningroom/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/diningroom/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/diningroom/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/diningroom/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload {"state": "off"} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off synchronisation test: shellies/\allowbreak ffe/\allowbreak diningroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (24)\\ -Start-Time: & 2023-02-15 07:13:25,627\\ -Finished-Time: & 2023-02-15 07:13:26,532\\ -Time-Consumption & 0.905s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'False'\\ -\bf{\,Info } & Changing master device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak diningroom/\allowbreak powerplug\_floorlamp) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing master device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak diningroom/\allowbreak powerplug\_floorlamp) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions for master device 'False'\\ - \bottomrule - \end{tabu} - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/diningroom/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/diningroom/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload {"state": "on"} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak diningroom/\allowbreak powerplug\_floorlamp) state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/diningroom/powerplug_floorlamp) state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/diningroom/powerplug_floorlamp) state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/diningroom/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/diningroom/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload {"state": "off"} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/diningroom/powerplug_floorlamp and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/diningroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak diningroom/\allowbreak powerplug\_floorlamp) state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/diningroom/powerplug_floorlamp) state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/diningroom/powerplug_floorlamp) state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffe/\allowbreak floor/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:26,533\\ -Finished-Time: & 2023-02-15 07:13:27,743\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/floor/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/floor/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/floor/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/floor/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/floor/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/floor/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/floor/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/floor/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/floor/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/floor/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/floor/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/floor/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/floor/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/floor/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/floor/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/floor/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffe/\allowbreak kitchen/\allowbreak circulation\_pump } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:27,744\\ -Finished-Time: & 2023-02-15 07:13:28,953\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/kitchen/circulation_pump/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/circulation_pump/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/circulation_pump/timer and payload b'600' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/main_light/relay/0/command and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/kitchen/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/circulation_pump/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/kitchen/circulation_pump/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/circulation_pump/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/kitchen/circulation_pump/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/kitchen/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/circulation_pump/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/circulation_pump/timer and payload b'0' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/circulation_pump/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/kitchen/circulation_pump/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/circulation_pump/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/circulation_pump/timer and payload b'600' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/main_light/relay/0/command and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/kitchen/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/circulation_pump/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/kitchen/circulation_pump/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/kitchen/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/circulation_pump/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/kitchen/circulation_pump/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/circulation_pump/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/circulation_pump/timer and payload b'0' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/circulation_pump/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffe/\allowbreak kitchen/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:28,954\\ -Finished-Time: & 2023-02-15 07:13:30,164\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/kitchen/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/kitchen/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/kitchen/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/kitchen/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/kitchen/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/kitchen/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/kitchen/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/kitchen/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:13:30,165\\ -Finished-Time: & 2023-02-15 07:13:31,978\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/floorlamp/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/floorlamp/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:13:31,979\\ -Finished-Time: & 2023-02-15 07:13:33,792\\ -Time-Consumption & 1.813s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/floorlamp/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/floorlamp/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:33,793\\ -Finished-Time: & 2023-02-15 07:13:35,004\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/floorlamp/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/floorlamp/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:13:35,005\\ -Finished-Time: & 2023-02-15 07:13:36,817\\ -Time-Consumption & 1.812s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/livingroom/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/livingroom/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:13:36,818\\ -Finished-Time: & 2023-02-15 07:13:38,632\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/livingroom/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/main_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/main_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/livingroom/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffe/\allowbreak livingroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:38,632\\ -Finished-Time: & 2023-02-15 07:13:39,843\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/livingroom/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/livingroom/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/livingroom/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/livingroom/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Brightness synchronisation test: videv/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (42)\\ -Start-Time: & 2023-02-15 07:13:39,844\\ -Finished-Time: & 2023-02-15 07:13:41,055\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'True' (Power on)\\ -\bf{\,Info } & Changing master device brightness to '35'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing master device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting preconditions for master device 'False' (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions for master device 'True' (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/livingroom/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device brightness to '35'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/floorlamp/brightness/set and payload 35 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"brightness": 90}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 90.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"brightness": 90}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "on", "brightness": 90.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"brightness": 90}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "on", "brightness": 90.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"brightness": 90}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "on", "brightness": 90.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"brightness": 90}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "on", "brightness": 90.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"brightness": 90}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "on", "brightness": 90.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 90.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "on", "brightness": 90.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "on", "brightness": 90.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "on", "brightness": 90.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "on", "brightness": 90.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "on", "brightness": 90.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/brightness and payload b'35' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_1) brightness): 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_1) brightness): result = 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_2) brightness): 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_2) brightness): result = 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_3) brightness): 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_3) brightness): result = 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_4) brightness): 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_4) brightness): result = 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_5) brightness): 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_5) brightness): result = 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_6) brightness): 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_6) brightness): result = 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/floorlamp/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_1) brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_1) brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_2) brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_2) brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_3) brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_3) brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_4) brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_4) brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_5) brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_5) brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_6) brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_6) brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting preconditions for master device 'False' (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/livingroom/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Color temperature synchronisation test: videv/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (67)\\ -Start-Time: & 2023-02-15 07:13:41,056\\ -Finished-Time: & 2023-02-15 07:13:42,266\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'True' (Power on)\\ -\bf{\,Info } & Changing master device color temperature to '2'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing master device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting preconditions for master device 'False' (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions for master device 'True' (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/livingroom/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device color temperature to '2'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/floorlamp/color_temp/set and payload 2 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"color_temp": 291}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 291.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"color_temp": 291}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 291.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"color_temp": 291}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "on", "brightness": 127.0, "color_temp": 291.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"color_temp": 291}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "on", "brightness": 127.0, "color_temp": 291.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"color_temp": 291}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "on", "brightness": 127.0, "color_temp": 291.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"color_temp": 291}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "on", "brightness": 127.0, "color_temp": 291.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 291.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 291.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 291.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 291.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 291.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 291.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/color_temp and payload b'2' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_1) color temperature): 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_1) color temperature): result = 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_2) color temperature): 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_2) color temperature): result = 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_3) color temperature): 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_3) color temperature): result = 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_4) color temperature): 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_4) color temperature): result = 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_5) color temperature): 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_5) color temperature): result = 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_6) color temperature): 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_6) color temperature): result = 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/livingroom/floorlamp/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_1) color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_1) color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_2) color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_2) color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_3) color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_3) color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_4) color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_4) color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_5) color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_5) color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_6) color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_6) color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting preconditions for master device 'False' (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/livingroom/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off synchronisation test: shellies/\allowbreak ffe/\allowbreak livingroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (24)\\ -Start-Time: & 2023-02-15 07:13:42,267\\ -Finished-Time: & 2023-02-15 07:13:43,177\\ -Time-Consumption & 0.910s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'False'\\ -\bf{\,Info } & Changing master device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing master device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions for master device 'False'\\ - \bottomrule - \end{tabu} - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/livingroom/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_1) state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_1) state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_2) state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_2) state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_3) state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_3) state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_4) state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_4) state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_5) state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_5) state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_6) state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_6) state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/livingroom/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/livingroom/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_1 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_2 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_3 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_4 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_5 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/livingroom/floorlamp_6 and payload {"state": "off", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_1 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_2 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_3 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_4 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_5 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/livingroom/floorlamp_6 and payload b'{"state": "off", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/livingroom/floorlamp/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_1) state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_1) state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_1) state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_2) state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_2) state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_2) state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_3) state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_3) state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_3) state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_4) state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_4) state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_4) state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_5) state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_5) state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_5) state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak ffe/\allowbreak livingroom/\allowbreak floorlamp\_6) state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/ffe/livingroom/floorlamp_6) state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/ffe/livingroom/floorlamp_6) state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak bed\_light\_di } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:13:43,177\\ -Finished-Time: & 2023-02-15 07:13:44,990\\ -Time-Consumption & 1.812s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/bed_light_di and payload {"state": "on", "brightness": 127.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_di and payload b'{"state": "on", "brightness": 127.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_di/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_di/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/bed_light_di and payload {"state": "on", "brightness": 165.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_di and payload b'{"state": "on", "brightness": 165.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_di/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/bed_light_di/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_di/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/bed_light_di and payload {"state": "on", "brightness": 127.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_di and payload b'{"state": "on", "brightness": 127.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_di/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/bed_light_di and payload {"state": "on", "brightness": 165.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_di and payload b'{"state": "on", "brightness": 165.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_di/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/bed_light_di/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_di/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/bed_light_di and payload {"state": "on", "brightness": 127.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_di and payload b'{"state": "on", "brightness": 127.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_di/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/bed_light_di and payload {"state": "off", "brightness": 127.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_di and payload b'{"state": "off", "brightness": 127.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_di/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak bed\_light\_di } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:44,990\\ -Finished-Time: & 2023-02-15 07:13:46,199\\ -Time-Consumption & 1.209s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/bed_light_di and payload {"state": "on", "brightness": 127.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_di and payload b'{"state": "on", "brightness": 127.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_di/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/bed_light_di/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_di/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/bed_light_di and payload {"state": "off", "brightness": 127.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_di and payload b'{"state": "off", "brightness": 127.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_di/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/bed_light_di and payload {"state": "on", "brightness": 127.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_di and payload b'{"state": "on", "brightness": 127.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_di/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/bed_light_di/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_di/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/bed_light_di and payload {"state": "off", "brightness": 127.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_di and payload b'{"state": "off", "brightness": 127.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_di/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak bed\_light\_ma } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:46,200\\ -Finished-Time: & 2023-02-15 07:13:47,410\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/bed_light_ma and payload {"state": "on"} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_ma and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_ma/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/bed_light_ma/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_ma/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/bed_light_ma and payload {"state": "off"} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_ma and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_ma/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/bed_light_ma and payload {"state": "on"} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_ma and payload b'{"state": "on"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_ma/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/bed_light_ma/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_ma/set and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/bed_light_ma and payload {"state": "off"} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/bed_light_ma and payload b'{"state": "off"}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/bed_light_ma/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Away mode test: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (101)\\ -Start-Time: & 2023-02-15 07:13:47,411\\ -Finished-Time: & 2023-02-15 07:13:48,318\\ -Time-Consumption & 0.908s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ -\bf{\,Info } & Deactivating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/user_temperature_setpoint and payload b'21.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve/set and payload b'{"current_heating_setpoint": 21.5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/heating_valve and payload {"current_heating_setpoint": 21.5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/valve_temperature_setpoint and payload b'21.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve and payload b'{"current_heating_setpoint": 21.5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Away mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Away mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Activating away mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/heating_valve/away_mode/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve/set and payload b'{"current_heating_setpoint": 16.5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/heating_valve and payload {"current_heating_setpoint": 16.5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/valve_temperature_setpoint and payload b'16.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/away_mode and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve and payload b'{"current_heating_setpoint": 16.5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Away mode is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Away mode): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Away mode): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 16.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 16.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Deactivating away mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/heating_valve/away_mode/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve/set and payload b'{"current_heating_setpoint": 21.5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/heating_valve and payload {"current_heating_setpoint": 21.5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/valve_temperature_setpoint and payload b'21.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/away_mode and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve and payload b'{"current_heating_setpoint": 21.5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Away mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Away mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 21.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 21.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Boost mode test: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (128)\\ -Start-Time: & 2023-02-15 07:13:48,319\\ -Finished-Time: & 2023-02-15 07:13:49,225\\ -Time-Consumption & 0.906s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Activating boost mode\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is greater expectation (Content 900 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Setting postconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Boost timer): 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Boost timer): result = 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Activating boost mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/heating_valve/start_boost/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/boost_timer and payload b'900' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve/set and payload b'{"current_heating_setpoint": 30}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/heating_valve and payload {"current_heating_setpoint": 30, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/valve_temperature_setpoint and payload b'30' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve and payload b'{"current_heating_setpoint": 30, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Boost timer is greater expectation (Content 900 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Boost timer): 900 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Boost timer): result > 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting postconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/heating_valve/set_default_temperature/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/boost_timer and payload b'0' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve/set and payload b'{"current_heating_setpoint": 21.5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/heating_valve and payload {"current_heating_setpoint": 21.5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/valve_temperature_setpoint and payload b'21.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve and payload b'{"current_heating_setpoint": 21.5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Boost timer): 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Boost timer): result = 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Default temperature test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (50)\\ -Start-Time: & 2023-02-15 07:13:49,225\\ -Finished-Time: & 2023-02-15 07:13:49,830\\ -Time-Consumption & 0.604s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Valve setpoint to 16.5)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint (is not default temperature) is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Triggering set to default temperature (21.5)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Valve setpoint to 16.5)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/heating_valve and payload {"current_heating_setpoint": 16.5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve and payload b'{"current_heating_setpoint": 16.5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve/set and payload b'{"current_heating_setpoint": 16.5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/valve_temperature_setpoint and payload b'16.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/user_temperature_setpoint and payload b'16.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve temperature setpoint (is not default temperature) is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve temperature setpoint (is not default temperature)): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve temperature setpoint (is not default temperature)): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Triggering set to default temperature (21.5)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/user_temperature_setpoint and payload b'21.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve/set and payload b'{"current_heating_setpoint": 21.5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/heating_valve and payload {"current_heating_setpoint": 21.5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/valve_temperature_setpoint and payload b'21.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve and payload b'{"current_heating_setpoint": 21.5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve temperature setpoint): 21.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve temperature setpoint): result = 21.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Summer mode test: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (74)\\ -Start-Time: & 2023-02-15 07:13:49,830\\ -Finished-Time: & 2023-02-15 07:13:50,738\\ -Time-Consumption & 0.908s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Deactivating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Summer mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Summer mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Activating summer mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/heating_valve/summer_mode/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve/set and payload b'{"current_heating_setpoint": 5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/heating_valve and payload {"current_heating_setpoint": 5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/valve_temperature_setpoint and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/summer_mode and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve and payload b'{"current_heating_setpoint": 5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Summer mode is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Summer mode): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Summer mode): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Deactivating summer mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/heating_valve/summer_mode/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve/set and payload b'{"current_heating_setpoint": 21.5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/heating_valve and payload {"current_heating_setpoint": 21.5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/valve_temperature_setpoint and payload b'21.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/summer_mode and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve and payload b'{"current_heating_setpoint": 21.5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Summer mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Summer mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 21.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 21.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ User temperature setpoint test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (22)\\ -Start-Time: & 2023-02-15 07:13:50,738\\ -Finished-Time: & 2023-02-15 07:13:51,949\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Changing valve temperature setpoint to '16.5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '21.5'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ -\bf{\,Info } & Changing valve temperature setpoint to '16.5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '21.5'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing valve temperature setpoint to '16.5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/heating_valve and payload {"current_heating_setpoint": 16.5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve and payload b'{"current_heating_setpoint": 16.5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve/set and payload b'{"current_heating_setpoint": 16.5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/valve_temperature_setpoint and payload b'16.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/user_temperature_setpoint and payload b'16.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 16.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 16.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device user temperature is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device user temperature): 16.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device user temperature): result = 16.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing videv user temperature setpoint to '21.5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/heating_valve/user_temperature_setpoint/set and payload 21.5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve/set and payload b'{"current_heating_setpoint": 21.5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/heating_valve and payload {"current_heating_setpoint": 21.5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/valve_temperature_setpoint and payload b'21.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/user_temperature_setpoint and payload b'21.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve and payload b'{"current_heating_setpoint": 21.5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve device temperature setpoint): 21.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve device temperature setpoint): result = 21.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 21.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 21.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing valve temperature setpoint to '16.5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/heating_valve and payload {"current_heating_setpoint": 16.5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve and payload b'{"current_heating_setpoint": 16.5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve/set and payload b'{"current_heating_setpoint": 16.5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/valve_temperature_setpoint and payload b'16.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/user_temperature_setpoint and payload b'16.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 16.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 16.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device user temperature is correct (Content 16.5 and Type is $<$class 'float'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device user temperature): 16.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device user temperature): result = 16.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing videv user temperature setpoint to '21.5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/heating_valve/user_temperature_setpoint/set and payload 21.5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve/set and payload b'{"current_heating_setpoint": 21.5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/heating_valve and payload {"current_heating_setpoint": 21.5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/valve_temperature_setpoint and payload b'21.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/heating_valve/user_temperature_setpoint and payload b'21.5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/heating_valve and payload b'{"current_heating_setpoint": 21.5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve device temperature setpoint): 21.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve device temperature setpoint): result = 21.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 21.5 and Type is $<$class 'float'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 21.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 21.5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:13:51,949\\ -Finished-Time: & 2023-02-15 07:13:53,764\\ -Time-Consumption & 1.815s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/sleep/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/sleep/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/main_light and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/main_light and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/sleep/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/sleep/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak ffe/\allowbreak sleep/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:13:53,764\\ -Finished-Time: & 2023-02-15 07:13:55,578\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/sleep/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/sleep/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/main_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/main_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/sleep/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/sleep/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffe/\allowbreak sleep/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:13:55,579\\ -Finished-Time: & 2023-02-15 07:13:56,789\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/sleep/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/sleep/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/sleep/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/sleep/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/sleep/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/sleep/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffe/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/sleep/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffe/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffe/sleep/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/sleep/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffe/sleep/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffe/sleep/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffe/sleep/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Away mode test: zigbee/\allowbreak ffw/\allowbreak bath/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (101)\\ -Start-Time: & 2023-02-15 07:13:56,790\\ -Finished-Time: & 2023-02-15 07:13:57,697\\ -Time-Consumption & 0.907s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Deactivating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/bath/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/user_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve/set and payload b'{"current_heating_setpoint": 23}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/bath/heating_valve and payload {"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/valve_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve and payload b'{"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Away mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Away mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Activating away mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/bath/heating_valve/away_mode/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve/set and payload b'{"current_heating_setpoint": 18}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/bath/heating_valve and payload {"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/valve_temperature_setpoint and payload b'18' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/away_mode and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve and payload b'{"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Away mode is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Away mode): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Away mode): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 18 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Deactivating away mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/bath/heating_valve/away_mode/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve/set and payload b'{"current_heating_setpoint": 23}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/bath/heating_valve and payload {"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/valve_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/away_mode and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve and payload b'{"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Away mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Away mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Boost mode test: zigbee/\allowbreak ffw/\allowbreak bath/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (128)\\ -Start-Time: & 2023-02-15 07:13:57,698\\ -Finished-Time: & 2023-02-15 07:13:58,604\\ -Time-Consumption & 0.907s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Activating boost mode\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is greater expectation (Content 900 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Setting postconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/bath/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Boost timer): 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Boost timer): result = 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Activating boost mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/bath/heating_valve/start_boost/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/boost_timer and payload b'900' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve/set and payload b'{"current_heating_setpoint": 30}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/bath/heating_valve and payload {"current_heating_setpoint": 30, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/valve_temperature_setpoint and payload b'30' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve and payload b'{"current_heating_setpoint": 30, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Boost timer is greater expectation (Content 900 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Boost timer): 900 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Boost timer): result > 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting postconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/bath/heating_valve/set_default_temperature/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/boost_timer and payload b'0' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve/set and payload b'{"current_heating_setpoint": 23}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/bath/heating_valve and payload {"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/valve_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve and payload b'{"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Boost timer): 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Boost timer): result = 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Default temperature test for device and virtual device: zigbee/\allowbreak ffw/\allowbreak bath/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (50)\\ -Start-Time: & 2023-02-15 07:13:58,605\\ -Finished-Time: & 2023-02-15 07:13:59,209\\ -Time-Consumption & 0.604s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Valve setpoint to 18.0)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint (is not default temperature) is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Triggering set to default temperature (23.0)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Valve setpoint to 18.0)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/bath/heating_valve and payload {"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve and payload b'{"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve/set and payload b'{"current_heating_setpoint": 18}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/valve_temperature_setpoint and payload b'18' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/user_temperature_setpoint and payload b'18' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve temperature setpoint (is not default temperature) is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve temperature setpoint (is not default temperature)): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve temperature setpoint (is not default temperature)): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Triggering set to default temperature (23.0)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/bath/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/user_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve/set and payload b'{"current_heating_setpoint": 23}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/bath/heating_valve and payload {"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/valve_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve and payload b'{"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve temperature setpoint): 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve temperature setpoint): result = 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Summer mode test: zigbee/\allowbreak ffw/\allowbreak bath/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (74)\\ -Start-Time: & 2023-02-15 07:13:59,210\\ -Finished-Time: & 2023-02-15 07:14:00,116\\ -Time-Consumption & 0.906s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Deactivating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/bath/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Summer mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Summer mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Activating summer mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/bath/heating_valve/summer_mode/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve/set and payload b'{"current_heating_setpoint": 5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/bath/heating_valve and payload {"current_heating_setpoint": 5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/valve_temperature_setpoint and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/summer_mode and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve and payload b'{"current_heating_setpoint": 5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Summer mode is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Summer mode): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Summer mode): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Deactivating summer mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/bath/heating_valve/summer_mode/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve/set and payload b'{"current_heating_setpoint": 23}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/bath/heating_valve and payload {"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/valve_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/summer_mode and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve and payload b'{"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Summer mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Summer mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ User temperature setpoint test for device and virtual device: zigbee/\allowbreak ffw/\allowbreak bath/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (22)\\ -Start-Time: & 2023-02-15 07:14:00,116\\ -Finished-Time: & 2023-02-15 07:14:01,327\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Changing valve temperature setpoint to '18.0'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '23.0'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing valve temperature setpoint to '18.0'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '23.0'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing valve temperature setpoint to '18.0'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/bath/heating_valve and payload {"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve and payload b'{"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve/set and payload b'{"current_heating_setpoint": 18}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/valve_temperature_setpoint and payload b'18' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/user_temperature_setpoint and payload b'18' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device user temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device user temperature): 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device user temperature): result = 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing videv user temperature setpoint to '23.0'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/bath/heating_valve/user_temperature_setpoint/set and payload 23 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve/set and payload b'{"current_heating_setpoint": 23}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/bath/heating_valve and payload {"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/valve_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/user_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve and payload b'{"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve device temperature setpoint): 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve device temperature setpoint): result = 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 23 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing valve temperature setpoint to '18.0'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/bath/heating_valve and payload {"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve and payload b'{"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve/set and payload b'{"current_heating_setpoint": 18}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/valve_temperature_setpoint and payload b'18' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/user_temperature_setpoint and payload b'18' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device user temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device user temperature): 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device user temperature): result = 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing videv user temperature setpoint to '23.0'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/bath/heating_valve/user_temperature_setpoint/set and payload 23 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve/set and payload b'{"current_heating_setpoint": 23}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/bath/heating_valve and payload {"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/valve_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/bath/heating_valve and payload b'{"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/bath/heating_valve/user_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve device temperature setpoint): 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve device temperature setpoint): result = 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 23 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak ffw/\allowbreak julian/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:14:01,327\\ -Finished-Time: & 2023-02-15 07:14:03,140\\ -Time-Consumption & 1.813s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/julian/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/julian/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/julian/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/julian/main_light and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/julian/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/julian/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/julian/main_light and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/julian/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/julian/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/julian/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/julian/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak ffw/\allowbreak julian/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:14:03,141\\ -Finished-Time: & 2023-02-15 07:14:04,956\\ -Time-Consumption & 1.815s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/julian/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/julian/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/julian/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/julian/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/julian/main_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/julian/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/julian/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/julian/main_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/julian/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/julian/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/julian/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffw/\allowbreak julian/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:04,956\\ -Finished-Time: & 2023-02-15 07:14:06,165\\ -Time-Consumption & 1.209s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/julian/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/julian/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/julian/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/julian/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/julian/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/julian/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/julian/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/julian/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/julian/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/julian/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/julian/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/julian/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/julian/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/julian/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/julian/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/julian/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak ffw/\allowbreak livingroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:14:06,166\\ -Finished-Time: & 2023-02-15 07:14:07,980\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/livingroom/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/livingroom/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/livingroom/main_light and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/livingroom/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/livingroom/main_light and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/livingroom/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/livingroom/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/livingroom/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak ffw/\allowbreak livingroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:14:07,980\\ -Finished-Time: & 2023-02-15 07:14:09,794\\ -Time-Consumption & 1.813s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/livingroom/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/livingroom/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/livingroom/main_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/livingroom/main_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/livingroom/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/livingroom/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffw/\allowbreak livingroom/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:09,794\\ -Finished-Time: & 2023-02-15 07:14:11,003\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/livingroom/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/livingroom/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/livingroom/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/livingroom/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/livingroom/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/livingroom/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/livingroom/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/livingroom/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/livingroom/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/livingroom/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/livingroom/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/livingroom/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/livingroom/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/livingroom/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/livingroom/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak ffw/\allowbreak sleep/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:14:11,004\\ -Finished-Time: & 2023-02-15 07:14:12,817\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/sleep/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/sleep/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/sleep/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/sleep/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/sleep/main_light and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/sleep/main_light and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/sleep/main_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/sleep/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/sleep/main_light/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/sleep/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/sleep/main_light and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/sleep/main_light and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/sleep/main_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/sleep/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/sleep/main_light/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/sleep/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/sleep/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/sleep/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/sleep/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak ffw/\allowbreak sleep/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:12,818\\ -Finished-Time: & 2023-02-15 07:14:14,029\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/sleep/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/sleep/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/sleep/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/sleep/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/sleep/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/sleep/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/sleep/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/sleep/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/sleep/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/ffw/sleep/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/sleep/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/ffw/sleep/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/sleep/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/ffw/sleep/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/sleep/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/ffw/sleep/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/ffw/sleep/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/ffw/sleep/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 1 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:14,030\\ -Finished-Time: & 2023-02-15 07:14:15,240\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/1 and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1 and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/amplifier/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/amplifier/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1/set and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/1 and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1 and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/amplifier/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/1 and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1 and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/amplifier/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/amplifier/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1/set and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/1 and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1 and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/amplifier/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 3 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:15,240\\ -Finished-Time: & 2023-02-15 07:14:16,448\\ -Time-Consumption & 1.207s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/3 and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/3 and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1/set and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/1 and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/cd_player/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1 and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/amplifier/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/cd_player/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/3/set and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/3 and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/3 and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1/set and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/1 and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/cd_player/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1 and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/amplifier/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/3 and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/3 and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1/set and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/1 and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/cd_player/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1 and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/amplifier/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/cd_player/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/3/set and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/3 and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/3 and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1/set and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/1 and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/cd_player/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1 and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/amplifier/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off synchronisation test: my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 3 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (24)\\ -Start-Time: & 2023-02-15 07:14:16,448\\ -Finished-Time: & 2023-02-15 07:14:17,354\\ -Time-Consumption & 0.906s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'False'\\ -\bf{\,Info } & Changing master device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 1) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing master device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 1) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions for master device 'False'\\ - \bottomrule - \end{tabu} - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/3 and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/3 and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1/set and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/1 and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/cd_player/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1 and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/amplifier/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 1) state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (my_apps/gfw/dirk/powerplug/output/1) state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (my_apps/gfw/dirk/powerplug/output/1) state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/3 and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/3 and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1/set and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/1 and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/cd_player/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/1 and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/amplifier/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 1) state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (my_apps/gfw/dirk/powerplug/output/1) state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (my_apps/gfw/dirk/powerplug/output/1) state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak desk\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:14:17,354\\ -Finished-Time: & 2023-02-15 07:14:19,168\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/2 and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/desk_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/2 and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/desk_light and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/desk_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/desk_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/desk_light and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/desk_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/desk_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/2 and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/2 and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak desk\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:14:19,169\\ -Finished-Time: & 2023-02-15 07:14:20,983\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/2 and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/desk_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/2 and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/desk_light and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/desk_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/desk_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/desk_light and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/desk_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/desk_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/2 and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/2 and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 2 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:20,984\\ -Finished-Time: & 2023-02-15 07:14:22,195\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/2 and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/desk_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/2 and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/desk_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/2/set and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/2 and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/2 and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/2 and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/desk_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/2 and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/desk_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/desk_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/2/set and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/2 and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/2 and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/desk_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Away mode test: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (101)\\ -Start-Time: & 2023-02-15 07:14:22,196\\ -Finished-Time: & 2023-02-15 07:14:23,102\\ -Time-Consumption & 0.907s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 20 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Deactivating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/user_temperature_setpoint and payload b'25' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve/set and payload b'{"current_heating_setpoint": 25}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/heating_valve and payload {"current_heating_setpoint": 25, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/valve_temperature_setpoint and payload b'25' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve and payload b'{"current_heating_setpoint": 25, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Away mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Away mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Activating away mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/heating_valve/away_mode/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve/set and payload b'{"current_heating_setpoint": 20}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/heating_valve and payload {"current_heating_setpoint": 20, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/valve_temperature_setpoint and payload b'20' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/away_mode and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve and payload b'{"current_heating_setpoint": 20, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Away mode is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Away mode): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Away mode): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 20 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 20 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 20 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Deactivating away mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/heating_valve/away_mode/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve/set and payload b'{"current_heating_setpoint": 25}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/heating_valve and payload {"current_heating_setpoint": 25, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/valve_temperature_setpoint and payload b'25' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/away_mode and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve and payload b'{"current_heating_setpoint": 25, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Away mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Away mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 25 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 25 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Boost mode test: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (128)\\ -Start-Time: & 2023-02-15 07:14:23,103\\ -Finished-Time: & 2023-02-15 07:14:24,009\\ -Time-Consumption & 0.906s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Activating boost mode\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is greater expectation (Content 899 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Setting postconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Boost timer): 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Boost timer): result = 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Activating boost mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/heating_valve/start_boost/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/boost_timer and payload b'900' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve/set and payload b'{"current_heating_setpoint": 30}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/heating_valve and payload {"current_heating_setpoint": 30, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/valve_temperature_setpoint and payload b'30' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve and payload b'{"current_heating_setpoint": 30, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/boost_timer and payload b'899' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Boost timer is greater expectation (Content 899 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Boost timer): 899 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Boost timer): result > 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting postconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/heating_valve/set_default_temperature/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/boost_timer and payload b'0' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve/set and payload b'{"current_heating_setpoint": 25}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/heating_valve and payload {"current_heating_setpoint": 25, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/valve_temperature_setpoint and payload b'25' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve and payload b'{"current_heating_setpoint": 25, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Boost timer): 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Boost timer): result = 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Default temperature test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (50)\\ -Start-Time: & 2023-02-15 07:14:24,010\\ -Finished-Time: & 2023-02-15 07:14:24,613\\ -Time-Consumption & 0.603s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Valve setpoint to 20.0)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint (is not default temperature) is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Triggering set to default temperature (25.0)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Valve setpoint to 20.0)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/heating_valve and payload {"current_heating_setpoint": 20, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve and payload b'{"current_heating_setpoint": 20, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve/set and payload b'{"current_heating_setpoint": 20}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/valve_temperature_setpoint and payload b'20' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/user_temperature_setpoint and payload b'20' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve temperature setpoint (is not default temperature) is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve temperature setpoint (is not default temperature)): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve temperature setpoint (is not default temperature)): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Triggering set to default temperature (25.0)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/user_temperature_setpoint and payload b'25' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve/set and payload b'{"current_heating_setpoint": 25}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/heating_valve and payload {"current_heating_setpoint": 25, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/valve_temperature_setpoint and payload b'25' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve and payload b'{"current_heating_setpoint": 25, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve temperature setpoint): 25 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve temperature setpoint): result = 25 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Summer mode test: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (74)\\ -Start-Time: & 2023-02-15 07:14:24,613\\ -Finished-Time: & 2023-02-15 07:14:25,520\\ -Time-Consumption & 0.907s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Deactivating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Summer mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Summer mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Activating summer mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/heating_valve/summer_mode/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve/set and payload b'{"current_heating_setpoint": 5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/heating_valve and payload {"current_heating_setpoint": 5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/valve_temperature_setpoint and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/summer_mode and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve and payload b'{"current_heating_setpoint": 5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Summer mode is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Summer mode): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Summer mode): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Deactivating summer mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/heating_valve/summer_mode/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve/set and payload b'{"current_heating_setpoint": 25}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/heating_valve and payload {"current_heating_setpoint": 25, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/valve_temperature_setpoint and payload b'25' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/summer_mode and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve and payload b'{"current_heating_setpoint": 25, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Summer mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Summer mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 25 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 25 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ User temperature setpoint test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (22)\\ -Start-Time: & 2023-02-15 07:14:25,521\\ -Finished-Time: & 2023-02-15 07:14:26,730\\ -Time-Consumption & 1.209s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Changing valve temperature setpoint to '20.0'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 20 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 20 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '25.0'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 25 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing valve temperature setpoint to '20.0'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 20 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 20 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '25.0'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 25 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing valve temperature setpoint to '20.0'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/heating_valve and payload {"current_heating_setpoint": 20, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve and payload b'{"current_heating_setpoint": 20, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve/set and payload b'{"current_heating_setpoint": 20}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/valve_temperature_setpoint and payload b'20' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/user_temperature_setpoint and payload b'20' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 20 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 20 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 20 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device user temperature is correct (Content 20 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device user temperature): 20 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device user temperature): result = 20 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing videv user temperature setpoint to '25.0'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/heating_valve/user_temperature_setpoint/set and payload 25 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve/set and payload b'{"current_heating_setpoint": 25}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/heating_valve and payload {"current_heating_setpoint": 25, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/valve_temperature_setpoint and payload b'25' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve and payload b'{"current_heating_setpoint": 25, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/user_temperature_setpoint and payload b'25' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve device temperature setpoint): 25 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve device temperature setpoint): result = 25 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 25 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 25 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 25 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing valve temperature setpoint to '20.0'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/heating_valve and payload {"current_heating_setpoint": 20, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve and payload b'{"current_heating_setpoint": 20, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve/set and payload b'{"current_heating_setpoint": 20}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/valve_temperature_setpoint and payload b'20' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/user_temperature_setpoint and payload b'20' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 20 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 20 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 20 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device user temperature is correct (Content 20 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device user temperature): 20 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device user temperature): result = 20 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing videv user temperature setpoint to '25.0'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/heating_valve/user_temperature_setpoint/set and payload 25 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve/set and payload b'{"current_heating_setpoint": 25}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/heating_valve and payload {"current_heating_setpoint": 25, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/valve_temperature_setpoint and payload b'25' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/heating_valve/user_temperature_setpoint and payload b'25' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/heating_valve and payload b'{"current_heating_setpoint": 25, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 25 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve device temperature setpoint): 25 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve device temperature setpoint): result = 25 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 25 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 25 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 25 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:14:26,730\\ -Finished-Time: & 2023-02-15 07:14:28,545\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/dirk/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/dirk/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/main_light and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/main_light and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/dirk/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/dirk/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak dirk/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:14:28,545\\ -Finished-Time: & 2023-02-15 07:14:30,359\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/dirk/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/dirk/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/main_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/main_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/dirk/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/dirk/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak gfw/\allowbreak dirk/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:30,360\\ -Finished-Time: & 2023-02-15 07:14:31,571\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/dirk/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/dirk/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/dirk/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/dirk/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/dirk/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/dirk/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/dirk/main_light and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/dirk/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/dirk/main_light and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/dirk/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/dirk/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/dirk/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: my\_apps/\allowbreak gfw/\allowbreak dirk/\allowbreak powerplug/\allowbreak output/\allowbreak 4 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:31,571\\ -Finished-Time: & 2023-02-15 07:14:32,782\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/4 and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/4 and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/pc_dock/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/pc_dock/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/4/set and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/4 and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/4 and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/pc_dock/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/4 and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/4 and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/pc_dock/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/dirk/pc_dock/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/4/set and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic my_apps/gfw/dirk/powerplug/output/4 and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic my_apps/gfw/dirk/powerplug/output/4 and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/dirk/pc_dock/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Brightness test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (50)\\ -Start-Time: & 2023-02-15 07:14:32,783\\ -Finished-Time: & 2023-02-15 07:14:34,596\\ -Time-Consumption & 1.814s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device brightness to '65'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/floor/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/get and payload b'{"state": ""}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/get and payload b'{"state": ""}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/floor/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device brightness to '65'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 165.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 165.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/brightness and payload b'65' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 65 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 65 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/floor/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/floor/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Color temperature test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1 } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (81)\\ -Start-Time: & 2023-02-15 07:14:34,597\\ -Finished-Time: & 2023-02-15 07:14:36,410\\ -Time-Consumption & 1.813s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Power on)\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing light device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing virtual device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting precondition (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/floor/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/get and payload b'{"state": ""}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/get and payload b'{"state": ""}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/floor/main_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing light device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 413.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 413.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/color_temp and payload b'8' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device color temperature is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device color temperature): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device color temperature): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 8 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 8 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/floor/main_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Light device brightness is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Light device brightness): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Light device brightness): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting precondition (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/floor/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:36,411\\ -Finished-Time: & 2023-02-15 07:14:37,621\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/floor/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/get and payload b'{"state": ""}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/get and payload b'{"state": ""}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/floor/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/floor/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/floor/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/get and payload b'{"state": ""}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/get and payload b'{"state": ""}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/floor/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/floor/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Brightness synchronisation test: videv/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (42)\\ -Start-Time: & 2023-02-15 07:14:37,622\\ -Finished-Time: & 2023-02-15 07:14:38,830\\ -Time-Consumption & 1.209s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'True' (Power on)\\ -\bf{\,Info } & Changing master device brightness to '35'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing master device brightness to '50'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting preconditions for master device 'False' (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions for master device 'True' (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/floor/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/get and payload b'{"state": ""}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/get and payload b'{"state": ""}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device brightness to '35'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/floor/main_light/brightness/set and payload 35 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/set and payload b'{"brightness": 90}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 90.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/set and payload b'{"brightness": 90}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_2 and payload {"state": "on", "brightness": 90.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 90.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2 and payload b'{"state": "on", "brightness": 90.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/brightness and payload b'35' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/gfw/floor/main_light_1) brightness): 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/gfw/floor/main_light_1) brightness): result = 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) brightness is correct (Content 35 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/gfw/floor/main_light_2) brightness): 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/gfw/floor/main_light_2) brightness): result = 35 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device brightness to '50'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/floor/main_light/brightness/set and payload 50 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/set and payload b'{"brightness": 128}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/brightness and payload b'50' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/gfw/floor/main_light_1) brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/gfw/floor/main_light_1) brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) brightness is correct (Content 50 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/gfw/floor/main_light_2) brightness): 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/gfw/floor/main_light_2) brightness): result = 50 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting preconditions for master device 'False' (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/floor/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Color temperature synchronisation test: videv/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (67)\\ -Start-Time: & 2023-02-15 07:14:38,831\\ -Finished-Time: & 2023-02-15 07:14:40,040\\ -Time-Consumption & 1.209s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'True' (Power on)\\ -\bf{\,Info } & Changing master device color temperature to '2'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing master device color temperature to '5'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Resetting preconditions for master device 'False' (Power off)\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions for master device 'True' (Power on)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/floor/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/get and payload b'{"state": ""}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/get and payload b'{"state": ""}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device color temperature to '2'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/floor/main_light/color_temp/set and payload 2 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/set and payload b'{"color_temp": 291}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 291.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/set and payload b'{"color_temp": 291}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 291.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 291.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 291.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/color_temp and payload b'2' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/gfw/floor/main_light_1) color temperature): 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/gfw/floor/main_light_1) color temperature): result = 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) color temperature is correct (Content 2 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/gfw/floor/main_light_2) color temperature): 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/gfw/floor/main_light_2) color temperature): result = 2 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device color temperature to '5'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/floor/main_light/color_temp/set and payload 5 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/set and payload b'{"color_temp": 352}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/color_temp and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/gfw/floor/main_light_1) color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/gfw/floor/main_light_1) color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) color temperature is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/gfw/floor/main_light_2) color temperature): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/gfw/floor/main_light_2) color temperature): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Resetting preconditions for master device 'False' (Power off)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/floor/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off synchronisation test: shellies/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak synchronisation.py (24)\\ -Start-Time: & 2023-02-15 07:14:40,040\\ -Finished-Time: & 2023-02-15 07:14:40,947\\ -Time-Consumption & 0.907s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions for master device 'False'\\ -\bf{\,Info } & Changing master device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing master device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions for master device 'False'\\ - \bottomrule - \end{tabu} - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/floor/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1/get and payload b'{"state": ""}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_1 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2/get and payload b'{"state": ""}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/floor/main_light_2 and payload {"state": "on", "brightness": 127.0, "color_temp": 352.0} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_1 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/floor/main_light_2 and payload b'{"state": "on", "brightness": 127.0, "color_temp": 352.0}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/gfw/floor/main_light_1) state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/gfw/floor/main_light_1) state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/gfw/floor/main_light_2) state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/gfw/floor/main_light_2) state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing master device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/floor/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/floor/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/floor/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_1) state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/gfw/floor/main_light_1) state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/gfw/floor/main_light_1) state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Follower device (zigbee/\allowbreak gfw/\allowbreak floor/\allowbreak main\_light\_2) state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Follower device (zigbee/gfw/floor/main_light_2) state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Follower device (zigbee/gfw/floor/main_light_2) state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Away mode test: zigbee/\allowbreak gfw/\allowbreak marion/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (101)\\ -Start-Time: & 2023-02-15 07:14:40,948\\ -Finished-Time: & 2023-02-15 07:14:41,855\\ -Time-Consumption & 0.908s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Deactivating away mode\\ -\bf{\,\textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/marion/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/user_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve/set and payload b'{"current_heating_setpoint": 23}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/marion/heating_valve and payload {"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/valve_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve and payload b'{"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Away mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Away mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Activating away mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/marion/heating_valve/away_mode/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve/set and payload b'{"current_heating_setpoint": 18}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/marion/heating_valve and payload {"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/valve_temperature_setpoint and payload b'18' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve and payload b'{"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/away_mode and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Away mode is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Away mode): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Away mode): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 18 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Deactivating away mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/marion/heating_valve/away_mode/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve/set and payload b'{"current_heating_setpoint": 23}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/marion/heating_valve and payload {"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/valve_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/away_mode and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve and payload b'{"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Away mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Away mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Away mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Boost mode test: zigbee/\allowbreak gfw/\allowbreak marion/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (128)\\ -Start-Time: & 2023-02-15 07:14:41,856\\ -Finished-Time: & 2023-02-15 07:14:42,762\\ -Time-Consumption & 0.906s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Activating boost mode\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is greater expectation (Content 900 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Setting postconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/marion/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Boost timer): 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Boost timer): result = 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Activating boost mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/marion/heating_valve/start_boost/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/boost_timer and payload b'900' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve/set and payload b'{"current_heating_setpoint": 30}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/marion/heating_valve and payload {"current_heating_setpoint": 30, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/valve_temperature_setpoint and payload b'30' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve and payload b'{"current_heating_setpoint": 30, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Boost timer is greater expectation (Content 900 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Boost timer): 900 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Boost timer): result > 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting postconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/marion/heating_valve/set_default_temperature/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/boost_timer and payload b'0' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve/set and payload b'{"current_heating_setpoint": 23}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/marion/heating_valve and payload {"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/valve_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve and payload b'{"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Boost timer is correct (Content 0 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Boost timer): 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Boost timer): result = 0 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Default temperature test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak marion/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (50)\\ -Start-Time: & 2023-02-15 07:14:42,763\\ -Finished-Time: & 2023-02-15 07:14:43,367\\ -Time-Consumption & 0.604s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Valve setpoint to 18.0)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint (is not default temperature) is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Triggering set to default temperature (23.0)\\ -\bf{\,\textcolor{green}{Success} } & Valve temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Valve setpoint to 18.0)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/marion/heating_valve and payload {"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve and payload b'{"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve/set and payload b'{"current_heating_setpoint": 18}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/valve_temperature_setpoint and payload b'18' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/user_temperature_setpoint and payload b'18' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve temperature setpoint (is not default temperature) is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve temperature setpoint (is not default temperature)): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve temperature setpoint (is not default temperature)): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Triggering set to default temperature (23.0)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/marion/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/user_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve/set and payload b'{"current_heating_setpoint": 23}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/marion/heating_valve and payload {"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/valve_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve and payload b'{"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve temperature setpoint): 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve temperature setpoint): result = 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Summer mode test: zigbee/\allowbreak gfw/\allowbreak marion/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (74)\\ -Start-Time: & 2023-02-15 07:14:43,368\\ -Finished-Time: & 2023-02-15 07:14:44,275\\ -Time-Consumption & 0.907s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Setting preconditions (Default setpoint)\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Activating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 5 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Deactivating summer mode\\ -\bf{\,\textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Setting preconditions (Default setpoint)\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/marion/heating_valve/set_default_temperature/set and payload null - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Summer mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Summer mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Activating summer mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/marion/heating_valve/summer_mode/set and payload true - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve/set and payload b'{"current_heating_setpoint": 5}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/marion/heating_valve and payload {"current_heating_setpoint": 5, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/valve_temperature_setpoint and payload b'5' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve and payload b'{"current_heating_setpoint": 5, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/summer_mode and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Summer mode is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Summer mode): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Summer mode): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 5 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 5 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Deactivating summer mode\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/marion/heating_valve/summer_mode/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve/set and payload b'{"current_heating_setpoint": 23}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/marion/heating_valve and payload {"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/valve_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/summer_mode and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve and payload b'{"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Summer mode is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Summer mode): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Summer mode): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Temperature setpoint): 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Temperature setpoint): result = 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ User temperature setpoint test for device and virtual device: zigbee/\allowbreak gfw/\allowbreak marion/\allowbreak heating\_valve } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak heating.py (22)\\ -Start-Time: & 2023-02-15 07:14:44,275\\ -Finished-Time: & 2023-02-15 07:14:45,486\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,Info } & Changing valve temperature setpoint to '18.0'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '23.0'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing valve temperature setpoint to '18.0'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device user temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ -\bf{\,Info } & Changing videv user temperature setpoint to '23.0'\\ -\bf{\,\textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 23 and Type is $<$class 'int'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing valve temperature setpoint to '18.0'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/marion/heating_valve and payload {"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve and payload b'{"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve/set and payload b'{"current_heating_setpoint": 18}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/valve_temperature_setpoint and payload b'18' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/user_temperature_setpoint and payload b'18' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device user temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device user temperature): 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device user temperature): result = 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing videv user temperature setpoint to '23.0'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/marion/heating_valve/user_temperature_setpoint/set and payload 23 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve/set and payload b'{"current_heating_setpoint": 23}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/marion/heating_valve and payload {"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/valve_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/user_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve and payload b'{"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve device temperature setpoint): 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve device temperature setpoint): result = 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 23 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing valve temperature setpoint to '18.0'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/marion/heating_valve and payload {"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve and payload b'{"current_heating_setpoint": 18, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve/set and payload b'{"current_heating_setpoint": 18}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/valve_temperature_setpoint and payload b'18' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/user_temperature_setpoint and payload b'18' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device user temperature is correct (Content 18 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device user temperature): 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device user temperature): result = 18 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing videv user temperature setpoint to '23.0'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/marion/heating_valve/user_temperature_setpoint/set and payload 23 - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve/set and payload b'{"current_heating_setpoint": 23}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic zigbee/gfw/marion/heating_valve and payload {"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97} - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/valve_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/heating_valve/user_temperature_setpoint and payload b'23' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic zigbee/gfw/marion/heating_valve and payload b'{"current_heating_setpoint": 23, "local_temperature": 20.7, "battery": 97}' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Valve device temperature setpoint is correct (Content 23 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Valve device temperature setpoint): 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Valve device temperature setpoint): result = 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device valve temperature is correct (Content 23 and Type is $<$class 'int'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device valve temperature): 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device valve temperature): result = 23 () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak gfw/\allowbreak marion/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:45,487\\ -Finished-Time: & 2023-02-15 07:14:46,698\\ -Time-Consumption & 1.211s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/marion/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/marion/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/marion/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/marion/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/marion/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/marion/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/marion/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/marion/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/gfw/marion/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/marion/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/gfw/marion/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/gfw/marion/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/gfw/marion/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - \subsection{ Power On/\allowbreak Off test for device and virtual device: shellies/\allowbreak stw/\allowbreak stairway/\allowbreak main\_light } - - -\paragraph{Testsummary}\mbox{}\\ -This test was passed with the state: {\bf \textcolor{green}{Success}}. -\begin{longtabu} to \linewidth {lX} -\toprule -Caller: & /\allowbreak home/\allowbreak dirk/\allowbreak my\_repositories/\allowbreak smarthome/\allowbreak smart\_brain\_test/\allowbreak tests/\allowbreak light.py (27)\\ -Start-Time: & 2023-02-15 07:14:46,698\\ -Finished-Time: & 2023-02-15 07:14:47,909\\ -Time-Consumption & 1.210s\\ -\midrule -\multicolumn{2}{l}{\bf{Testresults:}}\\ -\midrule -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing switching device state to 'True'\\ -\bf{\,\textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ -\bf{\,Info } & Changing virtual device state to 'False'\\ -\bf{\,\textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ -\bottomrule -\end{longtabu} - - -\paragraph{Testdetails}\mbox{}\\ - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/stw/stairway/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/stw/stairway/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/stw/stairway/main_light/timer and payload b'100' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/stw/stairway/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/stw/stairway/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/stw/stairway/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/stw/stairway/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/stw/stairway/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/stw/stairway/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/stw/stairway/main_light/timer and payload b'0' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/stw/stairway/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing switching device state to 'True'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/stw/stairway/main_light/relay/0 and payload on - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/stw/stairway/main_light/relay/0 and payload b'on' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/stw/stairway/main_light/timer and payload b'100' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/stw/stairway/main_light/state and payload b'true' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Virtual device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Virtual device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Virtual device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content True and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = True () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf Info } & Changing virtual device state to 'False'\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic videv/stw/stairway/main_light/state/set and payload false - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/stw/stairway/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Sending message with topic shellies/stw/stairway/main_light/relay/0 and payload off - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/stw/stairway/main_light/relay/0 and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic shellies/stw/stairway/main_light/relay/0/command and payload b'off' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/stw/stairway/main_light/timer and payload b'0' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Received message with topic videv/stw/stairway/main_light/state and payload b'false' - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - \begin{tabu} to \linewidth {lX} - \toprule - {\bf \textcolor{green}{Success} } & Switching device state is correct (Content False and Type is $<$class 'bool'$>$).\\ - \bottomrule - \end{tabu} - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Result (Switching device state): False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - \definecolor{shadecolor}{rgb}{ 0.8 0.8 0.8 }\begin{modulelog}[breaklines=true, breakanywhere=true] - Expectation (Switching device state): result = False () - \end{modulelog} - \vspace*{-0.225cm}\pagebreak[1] - - \vspace*{2.5ex} - - - - - - - - -\end{document} \ No newline at end of file diff --git a/tests/__init__.py b/tests/__init__.py index b27988e..b5a1548 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,55 +1,11 @@ -import report -import simulation.devices -from unittest.test import equivalency_chk -from unittest.jsonlog import TRUN_EXEC_LVL +from .rooms import ffe, ffw, gfe, gfw, stw -DT_TOGGLE = 0.3 +# TODO: Coverage, *Information (Chapter 1), ... ausblenden, wenn leer -class test_collection(object): - TCEL_DICT = { - 'full': report.TCEL_FULL, - 'short': report.TCEL_SHORT, - 'smoke': report.TCEL_SMOKE - } - - def __init__(self, test_instance): - super().__init__() - self.test_instance = test_instance - - def capabilities(self): - return ['full', 'short', 'smoke'] - - def command(self, command): - for member in self.test_instance.getmembers(): - obj = self.test_instance.getobjbyname(member) - if id(obj) != id(self): - tcel = self.TCEL_DICT.get(command, report.TCEL_FULL) - self.test_instance.tcl[TRUN_EXEC_LVL] = tcel - obj.test_all(tcel) - - -class testcase(object): - METHOD_EXECUTED = {} - - def __init__(self, tcl): - self.tcl = tcl - self.__test_list__ = [] - - def capabilities(self): - if len(self.__test_list__) > 0 and not 'test_all' in self.__test_list__: - self.__test_list__.append('test_all') - self.__test_list__.sort() - return self.__test_list__ - - def test_all(self, tcel=report.TCEL_FULL): - for tc_name in self.capabilities(): - if tc_name != "test_all": - self.command(tc_name, tcel) - - def command(self, command, tcel=report.TCEL_SINGLE): - simulation.devices.OUTPUT_ACTIVE = False - tc = getattr(self, command) - self.tcl[TRUN_EXEC_LVL] = tcel - tc(tcel) - simulation.devices.OUTPUT_ACTIVE = True +def add_all_testcases(ts, mc, h): + ffe(ts, mc, h) + ffw(ts, mc, h) + gfe(ts, mc, h) + gfw(ts, mc, h) + stw(ts, mc, h) diff --git a/tests/all.py b/tests/all.py deleted file mode 100644 index 61b7424..0000000 --- a/tests/all.py +++ /dev/null @@ -1,145 +0,0 @@ -import distro -import getpass -import inspect -import jinja2 -import json -import os -import platform -import report -from tests import test_collection -from tests.heating import testcase_heating -from tests.light import testcase_light -from tests.synchronisation import testcase_synchronisation -from unittest import jsonlog - -try: - from config import APP_NAME as ROOT_LOGGER_NAME -except ImportError: - ROOT_LOGGER_NAME = 'root' - - -class test_smarthome(object): - def __init__(self, rooms, mqtt_client): - self.mqtt_client = mqtt_client - self.__init__tcl__() - self.mqtt_client.add_callback('__info__', self.__test_system_info__) - self.mqtt_client.send('__info__', json.dumps(None)) - # add testcases for switching devices - for name in rooms.getmembers(): - obj = rooms.getobjbyname(name) - if obj.__class__.__name__ == "videv_light": - common_name = '.'.join(name.split('.')[:-1]) + '.' + name.split('.')[-1][6:] - try: - li_device = rooms.getobjbyname(common_name + '_zigbee') if obj.enable_brightness or obj.enable_color_temp else None - except AttributeError: - li_device = rooms.getobjbyname(common_name + '_zigbee_1') if obj.enable_brightness or obj.enable_color_temp else None - try: - sw_device = rooms.getobjbyname(common_name) if obj.enable_state else None - except AttributeError: - # must be a device without switching device - sw_device = li_device - setattr(self, common_name.replace('.', '_'), testcase_light(self.tcl, obj, sw_device, li_device)) - # add testcases for heating devices - for name in rooms.getmembers(): - obj = rooms.getobjbyname(name) - if obj.__class__.__name__ == "videv_heating": - common_name = '.'.join(name.split('.')[:-1]) + '.' + name.split('.')[-1][6:] - heat_device = rooms.getobjbyname(common_name + '_valve') - setattr(self, common_name.replace('.', '_'), testcase_heating(self.tcl, obj, heat_device)) - # TODO: Add this again... - """ - # synchronisation - # gfw.dirk.amplifier with cd_player - self.gfw_dirk_cd_player_amplifier_sync = testcase_synchronisation( - self.tcl, - rooms.gfw.dirk.cd_player, None, None, - rooms.gfw.dirk.amplifier) - # gfw.floor.main_light_2 with gfw.floor.main_light_1 - self.gfw_floor_main_light_sync = testcase_synchronisation( - self.tcl, - rooms.gfw.floor.main_light, rooms.gfw.floor.videv_main_light, rooms.gfw.floor.videv_main_light, - rooms.gfw.floor.main_light_zigbee_1, rooms.gfw.floor.main_light_zigbee_2 - ) - # ffe.diningroom.floorlamp with ffe.dinigroom.main_light - self.ffe_diningroom_main_light_floor_lamp_sync = testcase_synchronisation( - self.tcl, - rooms.ffe.diningroom.main_light, None, None, - rooms.ffe.diningroom.floor_lamp) - # ffe.livingroom.floorlamp_[1-6] with ffe.livingroom.main_light - self.ffe_livingroom_main_light_floor_lamp_sync = testcase_synchronisation( - self.tcl, - rooms.ffe.livingroom.main_light, rooms.ffe.livingroom.videv_floor_lamp, rooms.ffe.livingroom.videv_floor_lamp, - *[getattr(rooms.ffe.livingroom, "floor_lamp_zigbee_%d" % i) for i in range(1, 7)] - ) - # add test collection - """ - self.all = test_collection(self) - - def __init__tcl__(self): - system_info = {} - system_info[jsonlog.SYSI_ARCHITECTURE] = platform.architecture()[0] - system_info[jsonlog.SYSI_MACHINE] = platform.machine() - system_info[jsonlog.SYSI_HOSTNAME] = platform.node() - system_info[jsonlog.SYSI_DISTRIBUTION] = distro.name() + " " + distro.version() + " (" + distro.codename() + ")" - system_info[jsonlog.SYSI_SYSTEM] = platform.system() - system_info[jsonlog.SYSI_KERNEL] = platform.release() + ' (%s)' % platform.version() - system_info[jsonlog.SYSI_USERNAME] = getpass.getuser() - system_info[jsonlog.SYSI_PATH] = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) - - self.tcl = report.testSession(['__unittest__', ROOT_LOGGER_NAME]) - self.tcl[jsonlog.MAIN_KEY_SYSTEM_INFO] = system_info - self.tcl["testcase_names"] = report.TCEL_NAMES - - def __test_system_info__(self, client, userdata, message): - data = json.loads(message.payload) - if data is not None: - self.tcl[jsonlog.MAIN_KEY_TESTOBJECT_INFO] = data - - def close(self): - path = os.path.abspath(os.path.join(os.path.basename(__file__), '..')) - - with open(os.path.join(path, "testresults", "testrun.json"), "w") as fh: - fh.write(json.dumps(self.tcl, indent=4)) - - template_path = os.path.join(path, 'templates') - template_filename = 'unittest.tex' - jenv = jinja2.Environment(loader=jinja2.FileSystemLoader(template_path)) - template = jenv.get_template(template_filename) - with open(os.path.join(path, "testresults", "testrun.tex"), "w") as fh: - fh.write(template.render(data=self.tcl, details=False)) - with open(os.path.join(path, "testresults", "testrun_full.tex"), "w") as fh: - fh.write(template.render(data=self.tcl, details=True)) - - def getmembers(self, prefix=''): - rv = [] - for name, obj in inspect.getmembers(self): - if prefix: - full_name = prefix + '.' + name - else: - full_name = name - if not name.startswith('_'): - try: - if obj.__class__.__bases__[0].__name__ == "testcase" or obj.__class__.__name__ == "test_collection": - rv.append(full_name) - else: - rv.extend(obj.getmembers(full_name)) - except AttributeError: - pass - return rv - - def getobjbyname(self, name): - if name.startswith("test."): - name = name[5:] - obj = self - for subname in name.split('.'): - obj = getattr(obj, subname) - return obj - - def command(self, full_command): - try: - parameter = " " + full_command.split(' ')[1] - except IndexError: - parameter = "" - command = full_command.split(' ')[0].split('.')[-1] + parameter - device_name = '.'.join(full_command.split(' ')[0].split('.')[:-1]) - self.getobjbyname(device_name).command(command) diff --git a/tests/common_testcases.py b/tests/common_testcases.py new file mode 100644 index 0000000..7867963 --- /dev/null +++ b/tests/common_testcases.py @@ -0,0 +1,27 @@ +import time + +from unittest.test import equivalency_chk + +from .help import DELAY_SET_GET + + +def device_follow(tLogger, master, master_key, slave, slave_key, values): + # Prepare devices to last state + start_state = values[-1] + master.set(master_key, start_state) + slave.set(master_key, start_state) + time.sleep(DELAY_SET_GET) + tLogger.debug("Prepare: Setting devices to last state %s", repr(start_state)) + master_exp = master.get(master_key) + slave_exp = slave.get(slave_key) + time.sleep(DELAY_SET_GET) + equivalency_chk((master_exp, slave_exp), (start_state, start_state), tLogger, "Start state (master, slave)") + + # Test devices + for value in values: + tLogger.debug("Setting state of %s to %s", master.topic, repr(value)) + master.set(master_key, value) + time.sleep(DELAY_SET_GET) + expectation = slave.get(slave_key) + time.sleep(DELAY_SET_GET) + equivalency_chk(expectation, value, tLogger, f"Value for {slave.topic}") diff --git a/tests/heating.py b/tests/heating.py deleted file mode 100644 index 92d9bea..0000000 --- a/tests/heating.py +++ /dev/null @@ -1,152 +0,0 @@ -import config -import inspect -import report -from tests import testcase, DT_TOGGLE -import time -from unittest.test import equivalency_chk, greater_chk - - -class testcase_heating(testcase): - def __init__(self, tcl, videv, valve): - super().__init__(tcl) - self.__videv__ = videv - self.__valve__ = valve - self.__default_temperature__ = config.DEFAULT_TEMPERATURE - self.__test_list__ = ["test_user_temperature_setpoint", "test_default_temperature", "test_summer_mode", "test_away_mode", "test_boost_mode"] - - def test_user_temperature_setpoint(self, tcel=report.TCEL_FULL): - fname = inspect.currentframe().f_code.co_name - if tcel != report.TCEL_SMOKE or not self.METHOD_EXECUTED.get(fname, False): - self.METHOD_EXECUTED[fname] = True - # - self.tcl.testCase("User temperature setpoint test for virtual device and device: %s" % - self.__valve__.topic, tcel, self.__test_user_temperature_setpoint__, tcel) - - def __test_user_temperature_setpoint__(self, tLogger, tcel): - mtemp = round(self.__valve__.TEMP_RANGE[0] + (self.__valve__.TEMP_RANGE[1] - self.__valve__.TEMP_RANGE[0]) / 2, 1) - setp = self.__valve__.get(self.__valve__.KEY_TEMPERATURE_SETPOINT) - delta = 5 if setp < mtemp else -5 - - for i in range(0, 2): - self.__videv__.set(self.__videv__.KEY_USER_TEMPERATURE_SETPOINT, setp + delta) - time.sleep(DT_TOGGLE) - tLogger.debug("Changing valve temperature setpoint to '%.1f'", setp + delta) - equivalency_chk(self.__videv__.get(self.__videv__.KEY_VALVE_TEMPERATURE_SETPOINT), - setp + delta, tLogger, "Virtual device valve temperature") - equivalency_chk(self.__videv__.get(self.__videv__.KEY_USER_TEMPERATURE_SETPOINT), - setp + delta, tLogger, "Virtual device user temperature") - equivalency_chk(self.__valve__.get(self.__valve__.KEY_TEMPERATURE_SETPOINT), - setp + delta, tLogger, "Valve temperature setpoint") - # - self.__videv__.set(self.__videv__.KEY_USER_TEMPERATURE_SETPOINT, setp) - time.sleep(DT_TOGGLE) - tLogger.debug("Changing videv user temperature setpoint to '%.1f'", setp) - equivalency_chk(self.__valve__.get(self.__valve__.KEY_TEMPERATURE_SETPOINT), setp, tLogger, "Valve device temperature setpoint") - equivalency_chk(self.__videv__.get(self.__videv__.KEY_VALVE_TEMPERATURE_SETPOINT), setp, tLogger, "Virtual device valve temperature") - - def test_default_temperature(self, tcel=report.TCEL_FULL): - fname = inspect.currentframe().f_code.co_name - if tcel != report.TCEL_SMOKE or not self.METHOD_EXECUTED.get(fname, False): - self.METHOD_EXECUTED[fname] = True - # - self.tcl.testCase("Default temperature test for device and virtual device: %s" % - self.__valve__.topic, tcel, self.__test_default_temperature__, tcel) - - def __test_default_temperature__(self, tLogger, tcel): - dtemp = config.DEFAULT_TEMPERATURE - mtemp = round(self.__valve__.TEMP_RANGE[0] + (self.__valve__.TEMP_RANGE[1] - self.__valve__.TEMP_RANGE[0]) / 2, 1) - ptemp = dtemp + (5 if dtemp < mtemp else -5) - - self.__videv__.set(self.__videv__.KEY_USER_TEMPERATURE_SETPOINT, config.DEFAULT_TEMPERATURE - 5) - time.sleep(DT_TOGGLE) - tLogger.debug("Setting preconditions (Valve setpoint to %.1f)", ptemp) - - equivalency_chk(self.__valve__.get(self.__valve__.KEY_TEMPERATURE_SETPOINT) != dtemp, - True, tLogger, "Valve temperature setpoint (is not default temperature)") - self.__videv__.set(self.__videv__.KEY_SET_DEFAULT_TEMPERATURE, None) - time.sleep(DT_TOGGLE) - tLogger.debug("Triggering set to default temperature (%.1f)", dtemp) - equivalency_chk(self.__valve__.get(self.__valve__.KEY_TEMPERATURE_SETPOINT), dtemp, tLogger, "Valve temperature setpoint") - - def test_summer_mode(self, tcel=report.TCEL_FULL): - fname = inspect.currentframe().f_code.co_name - if tcel != report.TCEL_SMOKE or not self.METHOD_EXECUTED.get(fname, False): - self.METHOD_EXECUTED[fname] = True - # - self.tcl.testCase("Summer mode test: %s" % self.__valve__.topic, tcel, self.__test_summer_mode__, tcel) - - def __test_summer_mode__(self, tLogger, tcel): - self.__videv__.set(self.__videv__.KEY_SET_DEFAULT_TEMPERATURE, None) - time.sleep(DT_TOGGLE) - tLogger.debug("Setting preconditions (Default setpoint)") - - vtemp = self.__valve__.get(self.__valve__.KEY_TEMPERATURE_SETPOINT) - - equivalency_chk(self.__videv__.get(self.__videv__.KEY_SUMMER_MODE), False, tLogger, "Summer mode") - self.__videv__.set(self.__videv__.KEY_SUMMER_MODE, True) - time.sleep(DT_TOGGLE) - tLogger.debug("Activating summer mode") - equivalency_chk(self.__videv__.get(self.__videv__.KEY_SUMMER_MODE), True, tLogger, "Summer mode") - equivalency_chk(self.__valve__.get(self.__valve__.KEY_TEMPERATURE_SETPOINT), 5, tLogger, "Temperature setpoint") - - self.__videv__.set(self.__videv__.KEY_SUMMER_MODE, False) - time.sleep(DT_TOGGLE) - tLogger.debug("Deactivating summer mode") - equivalency_chk(self.__videv__.get(self.__videv__.KEY_SUMMER_MODE), False, tLogger, "Summer mode") - equivalency_chk(self.__valve__.get(self.__valve__.KEY_TEMPERATURE_SETPOINT), vtemp, tLogger, "Temperature setpoint") - - def test_away_mode(self, tcel=report.TCEL_FULL): - fname = inspect.currentframe().f_code.co_name - if tcel != report.TCEL_SMOKE or not self.METHOD_EXECUTED.get(fname, False): - self.METHOD_EXECUTED[fname] = True - # - self.tcl.testCase("Away mode test: %s" % self.__valve__.topic, tcel, self.__test_away_mode__, tcel) - - def __test_away_mode__(self, tLogger, tcel): - self.__videv__.set(self.__videv__.KEY_SET_DEFAULT_TEMPERATURE, None) - time.sleep(DT_TOGGLE) - tLogger.debug("Setting preconditions (Default setpoint)") - - vtemp = self.__valve__.get(self.__valve__.KEY_TEMPERATURE_SETPOINT) - - equivalency_chk(self.__videv__.get(self.__videv__.KEY_AWAY_MODE), False, tLogger, "Away mode") - self.__videv__.set(self.__videv__.KEY_AWAY_MODE, True) - time.sleep(DT_TOGGLE) - tLogger.debug("Activating away mode") - equivalency_chk(self.__videv__.get(self.__videv__.KEY_AWAY_MODE), True, tLogger, "Away mode") - equivalency_chk(self.__valve__.get(self.__valve__.KEY_TEMPERATURE_SETPOINT), vtemp - 5, tLogger, "Temperature setpoint") - - self.__videv__.set(self.__videv__.KEY_AWAY_MODE, False) - time.sleep(DT_TOGGLE) - tLogger.debug("Deactivating away mode") - equivalency_chk(self.__videv__.get(self.__videv__.KEY_AWAY_MODE), False, tLogger, "Away mode") - equivalency_chk(self.__valve__.get(self.__valve__.KEY_TEMPERATURE_SETPOINT), vtemp, tLogger, "Temperature setpoint") - - def test_boost_mode(self, tcel=report.TCEL_FULL): - fname = inspect.currentframe().f_code.co_name - if tcel != report.TCEL_SMOKE or not self.METHOD_EXECUTED.get(fname, False): - self.METHOD_EXECUTED[fname] = True - # - self.tcl.testCase("Boost mode test: %s" % self.__valve__.topic, tcel, self.__test_boost_mode__, tcel) - - def __test_boost_mode__(self, tLogger, tcel): - self.__videv__.set(self.__videv__.KEY_SET_DEFAULT_TEMPERATURE, None) - time.sleep(DT_TOGGLE) - tLogger.debug("Setting preconditions (Default setpoint)") - - vtemp = self.__valve__.get(self.__valve__.KEY_TEMPERATURE_SETPOINT) - - equivalency_chk(self.__videv__.get(self.__videv__.KEY_BOOST_TIMER), 0, tLogger, "Boost timer") - self.__videv__.set(self.__videv__.KEY_START_BOOST, True) - time.sleep(DT_TOGGLE) - tLogger.debug("Activating boost mode") - greater_chk(self.__videv__.get(self.__videv__.KEY_BOOST_TIMER), 0, tLogger, "Boost timer") - - self.__videv__.set(self.__videv__.KEY_SET_DEFAULT_TEMPERATURE, True) - time.sleep(DT_TOGGLE) - tLogger.debug("Setting postconditions (Default setpoint)") - equivalency_chk(self.__videv__.get(self.__videv__.KEY_BOOST_TIMER), 0, tLogger, "Boost timer") - - if tcel == report.TCEL_FULL: - # test boost timer - pass diff --git a/tests/help.py b/tests/help.py new file mode 100644 index 0000000..5c24bab --- /dev/null +++ b/tests/help.py @@ -0,0 +1,87 @@ +import distro +import getpass +import jinja2 +import json +import os +import platform +import sys + +import report +from report import testSession as testSessionBase +from unittest import jsonlog + +from config import APP_NAME as ROOT_LOGGER_NAME + +DELAY_SET_GET = 0.5 +STATES_SW = (True, False) + + +class testSession(testSessionBase): + def __init__(self, mqtt_client, tcel=report.TCEL_FULL): + self.mqtt_client = mqtt_client + self.full_test_data = {} + param = { + jsonlog.TRUN_EXEC_LVL: tcel, + 'interpreter': 'python'+sys.version.split(" ")[0] + } + super().__init__(['__unittest__', ROOT_LOGGER_NAME], **param) + # Get testobject information + self.mqtt_client.add_callback('__info__', self.__test_object_information__) + self.mqtt_client.send('__info__', json.dumps(None)) + + def __set_base_data__(self, **kwargs): + self.full_test_data[jsonlog.MAIN_KEY_SYSTEM_INFO] = self.__system_info__() + self.full_test_data[jsonlog.MAIN_KEY_TESTOBJECT_INFO] = {"Name": "-"} + self.full_test_data[jsonlog.MAIN_KEY_UNITTEST_INFO] = self.__unittest_information__() + self.full_test_data[jsonlog.MAIN_KEY_SPECIFICATION] = self.__specification__() + self.full_test_data[jsonlog.MAIN_KEY_LOST_SOULS] = {} + self.full_test_data[jsonlog.MAIN_KEY_TESTRUNS] = [] + return super().__set_base_data__(**kwargs) + + def __system_info__(self): + system_info = {} + system_info[jsonlog.SYSI_ARCHITECTURE] = platform.architecture()[0] + system_info[jsonlog.SYSI_MACHINE] = platform.machine() + system_info[jsonlog.SYSI_HOSTNAME] = platform.node() + system_info[jsonlog.SYSI_DISTRIBUTION] = distro.name() + " " + distro.version() + " (" + distro.codename() + ")" + system_info[jsonlog.SYSI_SYSTEM] = platform.system() + system_info[jsonlog.SYSI_KERNEL] = platform.release() + ' (%s)' % platform.version() + system_info[jsonlog.SYSI_USERNAME] = getpass.getuser() + system_info[jsonlog.SYSI_PATH] = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) + return system_info + + def __test_object_information__(self, client, userdata, message): + data = json.loads(message.payload) + if data is not None: + self.full_test_data[jsonlog.MAIN_KEY_TESTOBJECT_INFO]['Name'] = data.get("app_name", "-") + self.full_test_data[jsonlog.MAIN_KEY_TESTOBJECT_INFO]['Version'] = data.get("version", {}).get("readable", "-") + self.full_test_data[jsonlog.MAIN_KEY_TESTOBJECT_INFO]['Git URL'] = data.get("git", {}).get("url", "-") + self.full_test_data[jsonlog.MAIN_KEY_TESTOBJECT_INFO]['Git REF'] = data.get("git", {}).get("ref", "-") + + def __unittest_information__(self): + return {} + + def __specification__(self): + return {} + + def __finalise__(self): + self.full_test_data[jsonlog.MAIN_KEY_LOST_SOULS][jsonlog.LOST_ITEMLIST] = [] + self.full_test_data[jsonlog.MAIN_KEY_LOST_SOULS][jsonlog.LOST_TESTCASELIST] = self["uid_list_sorted"][:] + self.full_test_data[jsonlog.MAIN_KEY_TESTRUNS].append(self) + + def export_results_to(self, template_file, path): + self.__finalise__() + # + # Export json testrun data + # + with open(os.path.join(path, "testrun.json"), "w") as fh: + fh.write(json.dumps(self.full_test_data, indent=4)) + # + # Export jinja templated data + # + template_path = os.path.dirname(template_file) + template_filename = os.path.basename(template_file) + jenv = jinja2.Environment(loader=jinja2.FileSystemLoader(template_path)) + template = jenv.get_template(template_filename) + with open(os.path.join(path, "testrun.tex"), "w") as fh: + fh.write(template.render(data=self.full_test_data)) diff --git a/tests/light.py b/tests/light.py deleted file mode 100644 index 7f469a6..0000000 --- a/tests/light.py +++ /dev/null @@ -1,105 +0,0 @@ -import inspect -import report -from tests import testcase, DT_TOGGLE -import time -from unittest.test import equivalency_chk - - -class testcase_light(testcase): - def __init__(self, tcl, videv, sw_device, li_device): - super().__init__(tcl) - self.videv = videv - self.sw_device = sw_device - self.li_device = li_device - self.__test_list__ = [] - if self.videv.enable_state: - self.__test_list__.append('test_power_on_off') - if self.videv.enable_brightness: - self.__test_list__.append('test_brightness') - if self.videv.enable_color_temp: - self.__test_list__.append('test_color_temp') - - def test_power_on_off(self, tcel=report.TCEL_FULL): - fname = inspect.currentframe().f_code.co_name - if tcel != report.TCEL_SMOKE or not self.METHOD_EXECUTED.get(fname, False): - self.METHOD_EXECUTED[fname] = True - # - self.tcl.testCase("Power On/ Off test for device and virtual device: %s" % self.sw_device.topic, tcel, self.__test_power_on_off__, tcel) - - def __test_power_on_off__(self, tLogger, tcel): - sw_state = self.sw_device.get(self.sw_device.KEY_OUTPUT_0) - - for i in range(0, 2): - equivalency_chk(self.videv.get(self.videv.KEY_OUTPUT_0), sw_state, tLogger, "Virtual device state") - self.sw_device.set(self.sw_device.KEY_OUTPUT_0, not sw_state) - time.sleep(DT_TOGGLE) - tLogger.debug("Changing switching device state to '%s'", not sw_state) - equivalency_chk(self.videv.get(self.videv.KEY_OUTPUT_0), not sw_state, tLogger, "Virtual device state") - # - equivalency_chk(self.sw_device.get(self.sw_device.KEY_OUTPUT_0), not sw_state, tLogger, "Switching device state") - self.videv.set(self.videv.KEY_OUTPUT_0, sw_state) - time.sleep(DT_TOGGLE) - tLogger.debug("Changing virtual device state to '%s'", sw_state) - equivalency_chk(self.sw_device.get(self.sw_device.KEY_OUTPUT_0), sw_state, tLogger, "Switching device state") - - def test_brightness(self, tcel=report.TCEL_FULL): - fname = inspect.currentframe().f_code.co_name - if tcel != report.TCEL_SMOKE or not self.METHOD_EXECUTED.get(fname, False): - self.METHOD_EXECUTED[fname] = True - # - self.tcl.testCase("Brightness test for device and virtual device: %s" % self.li_device.topic, tcel, self.__test_brightness__, tcel) - - def __test_brightness__(self, tLogger, tcel): - br_state = self.li_device.get(self.li_device.KEY_BRIGHTNESS) or 50 # if br_state is None - delta = -15 if br_state > 50 else 15 - self.sw_device.set(self.sw_device.KEY_OUTPUT_0, True) - time.sleep(DT_TOGGLE) - tLogger.debug("Setting preconditions (Power on)") - - for i in range(0, 2): - equivalency_chk(self.videv.get(self.videv.KEY_BRIGHTNESS), br_state, tLogger, "Virtual device brightness") - self.li_device.set(self.li_device.KEY_BRIGHTNESS, br_state + delta) - time.sleep(DT_TOGGLE) - tLogger.debug("Changing light device brightness to '%d'", br_state + delta) - equivalency_chk(self.videv.get(self.videv.KEY_BRIGHTNESS), br_state + delta, tLogger, "Virtual device brightness") - # - equivalency_chk(self.li_device.get(self.li_device.KEY_BRIGHTNESS), br_state + delta, tLogger, "Light device brightness") - self.videv.set(self.videv.KEY_BRIGHTNESS, br_state) - time.sleep(DT_TOGGLE) - tLogger.debug("Changing virtual device brightness to '%d'", br_state) - equivalency_chk(self.li_device.get(self.li_device.KEY_BRIGHTNESS), br_state, tLogger, "Light device brightness") - # - self.sw_device.set(self.sw_device.KEY_OUTPUT_0, False) - time.sleep(DT_TOGGLE) - tLogger.debug("Resetting precondition (Power off)") - - def test_color_temp(self, tcel=report.TCEL_FULL): - fname = inspect.currentframe().f_code.co_name - if tcel != report.TCEL_SMOKE or not self.METHOD_EXECUTED.get(fname, False): - self.METHOD_EXECUTED[fname] = True - # - self.tcl.testCase("Color temperature test for device and virtual device: %s" % self.li_device.topic, tcel, self.__test_color_temp__, tcel) - - def __test_color_temp__(self, tLogger, tcel): - ct_state = self.li_device.get(self.li_device.KEY_COLOR_TEMP) or 5 # Use 5 if None - delta = -3 if ct_state > 5 else 3 - self.sw_device.set(self.sw_device.KEY_OUTPUT_0, True) - time.sleep(DT_TOGGLE) - tLogger.debug("Setting preconditions (Power on)") - - for i in range(0, 2): - equivalency_chk(self.videv.get(self.videv.KEY_COLOR_TEMP), ct_state, tLogger, "Virtual device color temperature") - self.li_device.set(self.li_device.KEY_COLOR_TEMP, ct_state + delta) - time.sleep(DT_TOGGLE) - tLogger.debug("Changing light device color temperature to '%d'", ct_state) - equivalency_chk(self.videv.get(self.videv.KEY_COLOR_TEMP), ct_state + delta, tLogger, "Virtual device color temperature") - # - equivalency_chk(self.li_device.get(self.li_device.KEY_COLOR_TEMP), ct_state + delta, tLogger, "Light device brightness") - self.videv.set(self.videv.KEY_COLOR_TEMP, ct_state) - time.sleep(DT_TOGGLE) - tLogger.debug("Changing virtual device color temperature to '%d'", ct_state) - equivalency_chk(self.li_device.get(self.li_device.KEY_COLOR_TEMP), ct_state, tLogger, "Light device brightness") - # - self.sw_device.set(self.sw_device.KEY_OUTPUT_0, False) - time.sleep(DT_TOGGLE) - tLogger.debug("Resetting precondition (Power off)") diff --git a/tests/rooms.py b/tests/rooms.py new file mode 100644 index 0000000..e7b8b28 --- /dev/null +++ b/tests/rooms.py @@ -0,0 +1,112 @@ + +import report + +from devdi.devices import physical_devices +from mqtt import mqtt_client +from simulation.rooms import house + +from .help import testSession +from .help import STATES_SW +from tests.common_testcases import device_follow + + +def main_light_videv_shelly_sw(ts, testcase_id, room, single=False): + ts.testCase( + testcase_id, report.TCEL_SINGLE if single else report.TCEL_SMOKE, device_follow, + room.videv_main_light, room.videv_main_light.KEY_OUTPUT_0, + room.main_light, room.main_light.KEY_OUTPUT_0, + STATES_SW + ) + + +def main_light_shelly_videv_sw(ts, testcase_id, room, single=False): + ts.testCase( + testcase_id, report.TCEL_SINGLE if single else report.TCEL_FULL, device_follow, + room.main_light, room.main_light.KEY_OUTPUT_0, + room.videv_main_light, room.videv_main_light.KEY_OUTPUT_0, + STATES_SW + ) + + +def ffe(ts: testSession, mc: mqtt_client, h: house): + # REQ 0001 - 0099 + room = h.ffe.livingroom + # main_light videv->shelly + main_light_videv_shelly_sw(ts, 'REQ-0001', room) + main_light_shelly_videv_sw(ts, 'REQ-0002', room) + + room = h.ffe.sleep + # main_light videv->shelly + main_light_videv_shelly_sw(ts, 'REQ-0011', room) + main_light_shelly_videv_sw(ts, 'REQ-0012', room) + + room = h.ffe.diningroom + # main_light videv->shelly + main_light_videv_shelly_sw(ts, 'REQ-0021', room) + main_light_shelly_videv_sw(ts, 'REQ-0022', room) + + room = h.ffe.kitchen + # main_light videv->shelly + main_light_videv_shelly_sw(ts, 'REQ-0031', room) + main_light_shelly_videv_sw(ts, 'REQ-0032', room) + + h.ffe.floor + # main_light videv->shelly + main_light_videv_shelly_sw(ts, 'REQ-0041', room) + main_light_shelly_videv_sw(ts, 'REQ-0042', room) + + +def ffw(ts: testSession, mc: mqtt_client, h: house): + # REQ 0101 - 0199 + room = h.ffw.livingroom + # main_light videv->shelly + main_light_videv_shelly_sw(ts, 'REQ-0101', room) + main_light_shelly_videv_sw(ts, 'REQ-0102', room) + + room = h.ffw.sleep + # main_light videv->shelly + main_light_videv_shelly_sw(ts, 'REQ-0111', room) + main_light_shelly_videv_sw(ts, 'REQ-0112', room, True) + + room = h.ffw.julian + # main_light videv->shelly + main_light_videv_shelly_sw(ts, 'REQ-0121', room) + main_light_shelly_videv_sw(ts, 'REQ-0122', room) + + room = h.ffw.bath + + room = h.ffw.floor + # main_light videv->shelly + main_light_videv_shelly_sw(ts, 'REQ-0141', room, True) + main_light_shelly_videv_sw(ts, 'REQ-0142', room, True) + + +def gfe(ts: testSession, mc: mqtt_client, h: house): + # REQ 0201 - 0299 + pass + + +def gfw(ts: testSession, mc: mqtt_client, h: house): + # REQ 0301 - 0399 + room = h.gfw.dirk + # main_light videv->shelly + main_light_videv_shelly_sw(ts, 'REQ-0301', room) + main_light_shelly_videv_sw(ts, 'REQ-0302', room) + + room = h.gfw.marion + # main_light videv->shelly + main_light_videv_shelly_sw(ts, 'REQ-0311', room) + main_light_shelly_videv_sw(ts, 'REQ-0312', room) + + room = h.gfw.floor + # main_light videv->shelly + main_light_videv_shelly_sw(ts, 'REQ-0321', room) + main_light_shelly_videv_sw(ts, 'REQ-0322', room) + + +def stw(ts: testSession, mc: mqtt_client, h: house): + # REQ 0401 - 0499 + room = h.stairway + # main_light videv->shelly + main_light_videv_shelly_sw(ts, 'REQ-0401', room) + main_light_shelly_videv_sw(ts, 'REQ-0402', room) diff --git a/tests/synchronisation.py b/tests/synchronisation.py deleted file mode 100644 index b2b4d55..0000000 --- a/tests/synchronisation.py +++ /dev/null @@ -1,89 +0,0 @@ -import report -from tests import testcase, DT_TOGGLE -import time -from unittest.test import equivalency_chk - - -class testcase_synchronisation(testcase): - def __init__(self, tcl, sw_master, br_master, ct_master, *follower): - super().__init__(tcl) - self.sw_master = sw_master - self.br_master = br_master - self.ct_master = ct_master - self.follower = follower - # - self.__test_list__ = [] - if sw_master is not None: - self.__test_list__.append('test_power_on_off_sync') - if br_master is not None: - self.__test_list__.append('test_brightness_sync') - if ct_master is not None: - self.__test_list__.append('test_color_temp_sync') - - def test_power_on_off_sync(self, tcel=report.TCEL_FULL): - self.tcl.testCase("Power On/ Off synchronisation test: %s" % self.sw_master.topic, tcel, self.__test_power_on_off_sync__, tcel) - - def __test_power_on_off_sync__(self, tLogger, tcel): - f_state = self.follower[0].get(self.follower[0].KEY_OUTPUT_0) - self.sw_master.set(self.sw_master.KEY_OUTPUT_0, f_state) - time.sleep(DT_TOGGLE) - tLogger.debug("Setting preconditions for master device '%s'", f_state) - - for i in range(0, 2): - f_state = not f_state - self.sw_master.set(self.sw_master.KEY_OUTPUT_0, f_state) - time.sleep(DT_TOGGLE) - tLogger.debug("Changing master device state to '%s'", f_state) - - for fo in self.follower: - equivalency_chk(fo.get(fo.KEY_OUTPUT_0), f_state, tLogger, "Follower device (%s) state" % fo.topic) - - def test_brightness_sync(self, tcel=report.TCEL_FULL): - self.tcl.testCase("Brightness synchronisation test: %s" % self.br_master.topic, tcel, self.__test_brightness_sync__, tcel) - - def __test_brightness_sync__(self, tLogger, tcel): - sw_state = self.sw_master.get(self.sw_master.KEY_OUTPUT_0) - self.sw_master.set(self.sw_master.KEY_OUTPUT_0, True) - time.sleep(DT_TOGGLE) - tLogger.debug("Setting preconditions for master device '%s' (Power on)", True) - - target = self.follower[0].get(self.follower[0].KEY_BRIGHTNESS) - delta = 15 if target < 50 else -15 - for i in range(0, 2): - target = target + delta - self.br_master.set(self.br_master.KEY_BRIGHTNESS, target) - time.sleep(DT_TOGGLE) - tLogger.debug("Changing master device brightness to '%d'", target) - for fo in self.follower: - equivalency_chk(fo.get(fo.KEY_BRIGHTNESS), target, tLogger, "Follower device (%s) brightness" % fo.topic) - delta = -delta - - # reset changes of precondition - self.sw_master.set(self.sw_master.KEY_OUTPUT_0, sw_state) - time.sleep(DT_TOGGLE) - tLogger.debug("Resetting preconditions for master device '%s' (Power off)", sw_state) - - def test_color_temp_sync(self, tcel=report.TCEL_FULL): - self.tcl.testCase("Color temperature synchronisation test: %s" % self.ct_master.topic, tcel, self.__test_color_temp_sync__, tcel) - - def __test_color_temp_sync__(self, tLogger, tcel): - sw_state = self.sw_master.get(self.sw_master.KEY_OUTPUT_0) - self.sw_master.set(self.sw_master.KEY_OUTPUT_0, True) - time.sleep(DT_TOGGLE) - tLogger.debug("Setting preconditions for master device '%s' (Power on)", True) - - target = self.follower[0].get(self.follower[0].KEY_COLOR_TEMP) - delta = 3 if target < 5 else -3 - for i in range(0, 2): - target = target + delta - self.ct_master.set(self.br_master.KEY_COLOR_TEMP, target) - time.sleep(DT_TOGGLE) - tLogger.debug("Changing master device color temperature to '%d'", target) - for fo in self.follower: - equivalency_chk(fo.get(fo.KEY_COLOR_TEMP), target, tLogger, "Follower device (%s) color temperature" % fo.topic) - delta = -delta - - # reset changes of precondition - self.sw_master.set(self.sw_master.KEY_OUTPUT_0, sw_state) - time.sleep(DT_TOGGLE) - tLogger.debug("Resetting preconditions for master device '%s' (Power off)", sw_state)

b5b7 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 z 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