forked from bblanchon/ArduinoJson
-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.cpp
100 lines (91 loc) · 80.2 KB
/
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
//#define ARDUINOJSON_ENABLE_STRING_DEDUP
#include <ArduinoJson.h>
//#include "BufferedPrint.h"
const size_t capacity = 171*JSON_ARRAY_SIZE(0) + 24*JSON_ARRAY_SIZE(1) + 29*JSON_ARRAY_SIZE(2) + 7*JSON_ARRAY_SIZE(3) + 5*JSON_ARRAY_SIZE(4) + JSON_ARRAY_SIZE(5) + JSON_ARRAY_SIZE(6) + JSON_ARRAY_SIZE(7) + JSON_OBJECT_SIZE(1) + 15*JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(4) + JSON_OBJECT_SIZE(6) + 35*JSON_OBJECT_SIZE(7) + 62*JSON_OBJECT_SIZE(8) + 9*JSON_OBJECT_SIZE(9) + 7*JSON_OBJECT_SIZE(10) + 4*JSON_OBJECT_SIZE(11) + 8430;
DynamicJsonDocument doc(capacity);
//const char* json PROGMEM = "{\"name\":null,\"label\":null,\"link\":null,\"homepage\":{\"id\":null,\"title\":null,\"link\":null,\"leaf\":false,\"timeout\":false,\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"members\":[],\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[\"FirstFloor\"],\"groupNames\":[]},\"linkedPage\":{\"id\":null,\"title\":null,\"icon\":null,\"link\":null,\"leaf\":false,\"timeout\":false,\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"members\":[],\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[\"Bathroom\"],\"groupNames\":[\"gFF\"]},\"linkedPage\":{\"id\":null,\"title\":null,\"icon\":null,\"link\":null,\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"tags\":[\"Light\"],\"groupNames\":[\"FF_Bath\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"tags\":[\"Light\"],\"groupNames\":[\"FF_Bath\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[\"HVAC\"],\"groupNames\":[\"FF_Bath\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"tags\":[\"Blinds\"],\"groupNames\":[\"FF_Bath\",\"Shutters\"]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[\"Measurement\",\"Temperature\"],\"groupNames\":[\"Temperature\",\"FF_Bath\"]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"tags\":[\"Window\"],\"groupNames\":[\"FF_Bath\",\"Windows\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"members\":[],\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[\"Bedroom\"],\"groupNames\":[\"gFF\"]},\"linkedPage\":{\"id\":null,\"title\":null,\"icon\":null,\"link\":null,\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"tags\":[\"Light\"],\"groupNames\":[\"FF_Bed\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[\"HVAC\"],\"groupNames\":[\"FF_Bed\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"tags\":[\"Blinds\"],\"groupNames\":[\"FF_Bed\",\"Shutters\"]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[\"Measurement\",\"Temperature\"],\"groupNames\":[\"Temperature\",\"FF_Bed\"]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"tags\":[\"Window\"],\"groupNames\":[\"FF_Bed\",\"Windows\"]},\"widgets\":[]}]},\"widgets\":[]}]},\"widgets\":[]}]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"valuecolor\":\"lightgray\",\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[\"Weather\",\"Weather_Chart\"]},\"linkedPage\":{\"id\":null,\"title\":null,\"icon\":null,\"link\":null,\"leaf\":false,\"timeout\":false,\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[\"Weather\",\"Weather_Chart\"]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[\"Weather\",\"Weather_Chart\"]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":false,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]}]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[{\"command\":\"0\",\"label\":\"Hour\"},{\"command\":\"1\",\"label\":\"Day\"},{\"command\":\"2\",\"label\":\"Week\"}],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"refresh\":600000,\"period\":\"h\",\"item\":{\"members\":[],\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":false,\"label\":null,\"icon\":null,\"mappings\":[],\"refresh\":3600000,\"period\":\"D\",\"item\":{\"members\":[],\"link\":null,\"state\":null,\"type\":\"Group\",\"name\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":false,\"label\":null,\"icon\":null,\"mappings\":[],\"refresh\":3600000,\"period\":\"W\",\"item\":{\"members\":[],\"link\":null,\"state\":null,\"type\":\"Group\",\"name\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]}]}]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"linkedPage\":{\"id\":null,\"title\":null,\"icon\":null,\"link\":null,\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]}]},\"widgets\":[]}]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"linkedPage\":{\"id\":null,\"title\":null,\"icon\":null,\"link\":null,\"leaf\":false,\"timeout\":false,\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[{\"command\":\"OFF\",\"label\":\"All Off\"}],\"item\":{\"members\":[],\"groupType\":\"Switch\",\"function\":{\"name\":\"OR\",\"params\":[\"ON\",\"OFF\"]},\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"members\":[],\"groupType\":\"Switch\",\"function\":{\"name\":\"OR\",\"params\":[\"ON\",\"OFF\"]},\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"linkedPage\":{\"id\":null,\"title\":null,\"icon\":null,\"link\":null,\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":\"Switch\",\"name\":null,\"label\":\"Bath\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"FF_Bath\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":\"Switch\",\"name\":null,\"label\":\"Bedroom\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"FF_Bed\",\"Heating\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"members\":[],\"groupType\":\"Contact\",\"function\":{\"name\":\"OR\",\"params\":[\"OPEN\",\"CLOSED\"]},\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"linkedPage\":{\"id\":null,\"title\":null,\"icon\":null,\"link\":null,\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":\"Contact\",\"name\":null,\"label\":\"Bath\",\"tags\":[\"Window\"],\"groupNames\":[\"FF_Bath\",\"Windows\"]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":\"Contact\",\"name\":null,\"label\":\"Bedroom\",\"tags\":[\"Window\"],\"groupNames\":[\"FF_Bed\",\"Windows\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"members\":[],\"groupType\":\"Number\",\"function\":{\"name\":\"AVG\"},\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[\"Status\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"linkedPage\":{\"id\":null,\"title\":null,\"icon\":null,\"link\":null,\"leaf\":false,\"timeout\":false,\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[{\"command\":\"ON\",\"label\":\"On\"}],\"item\":{\"link\":null,\"state\":null,\"type\":\"Switch\",\"name\":null,\"label\":\"Switch\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]}]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[{\"command\":\"0\",\"label\":\"off\"},{\"command\":\"1\",\"label\":\"TV\"},{\"command\":\"2\",\"label\":\"Dinner\"},{\"command\":\"3\",\"label\":\"Reading\"}],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[{\"command\":\"1\",\"label\":\"TV\"},{\"command\":\"2\",\"label\":\"Dinner\"},{\"command\":\"3\",\"label\":\"Reading\"}],\"item\":{\"link\":null,\"state\":null,\"type\":\"Number\",\"name\":null,\"label\":\"Scene\",\"category\":\"sofa\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"minValue\":16,\"maxValue\":28,\"step\":0.5,\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[\"Temperature\",\"TargetTemperature\",\"Setpoint\"],\"groupNames\":[\"Thermostat\"]},\"widgets\":[]}]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"switchSupport\":true,\"sendFrequency\":0,\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"switchSupport\":false,\"sendFrequency\":0,\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"category\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]}]},{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"widgets\":[{\"widgetId\":null,\"type\":null,\"visibility\":true,\"label\":null,\"icon\":null,\"mappings\":[],\"height\":10,\"item\":{\"link\":null,\"state\":null,\"type\":null,\"name\":null,\"label\":null,\"tags\":[],\"groupNames\":[]},\"widgets\":[]}]}]},\"widgets\":[]}]}]}}";
const char* json = "{\"name\":\"demo\",\"label\":\"Main Menu\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo\",\"homepage\":{\"id\":\"demo\",\"title\":\"Main Menu\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/demo\",\"leaf\":false,\"timeout\":false,\"widgets\":[{\"widgetId\":\"00\",\"type\":\"Frame\",\"visibility\":true,\"label\":\"\",\"icon\":\"frame\",\"mappings\":[],\"widgets\":[{\"widgetId\":\"0000\",\"type\":\"Group\",\"visibility\":true,\"label\":\"First Floor\",\"icon\":\"firstfloor\",\"mappings\":[],\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/gFF\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"gFF\",\"label\":\"First Floor\",\"category\":\"firstfloor\",\"tags\":[\"FirstFloor\"],\"groupNames\":[]},\"linkedPage\":{\"id\":\"0000\",\"title\":\"First Floor\",\"icon\":\"firstfloor\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/0000\",\"leaf\":false,\"timeout\":false,\"widgets\":[{\"widgetId\":\"FF_Bath\",\"type\":\"Group\",\"visibility\":true,\"label\":\"Bathroom\",\"icon\":\"bath\",\"mappings\":[],\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/FF_Bath\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"FF_Bath\",\"label\":\"Bathroom\",\"category\":\"bath\",\"tags\":[\"Bathroom\"],\"groupNames\":[\"gFF\"]},\"linkedPage\":{\"id\":\"FF_Bath\",\"title\":\"Bathroom\",\"icon\":\"bath\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/FF_Bath\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"Light_FF_Bath_Ceiling\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Ceiling\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_FF_Bath_Ceiling\",\"state\":\"ON\",\"type\":\"Switch\",\"name\":\"Light_FF_Bath_Ceiling\",\"label\":\"Ceiling\",\"tags\":[\"Light\"],\"groupNames\":[\"FF_Bath\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Light_FF_Bath_Mirror\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Mirror\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_FF_Bath_Mirror\",\"state\":\"ON\",\"type\":\"Switch\",\"name\":\"Light_FF_Bath_Mirror\",\"label\":\"Mirror\",\"tags\":[\"Light\"],\"groupNames\":[\"FF_Bath\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Heating_FF_Bath\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Bath\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_FF_Bath\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Heating_FF_Bath\",\"label\":\"Bath\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"FF_Bath\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Shutter_FF_Bath\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Bath\",\"icon\":\"rollershutter\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Shutter_FF_Bath\",\"state\":\"NULL\",\"type\":\"Rollershutter\",\"name\":\"Shutter_FF_Bath\",\"label\":\"Bath\",\"tags\":[\"Blinds\"],\"groupNames\":[\"FF_Bath\",\"Shutters\"]},\"widgets\":[]},{\"widgetId\":\"Temperature_FF_Bath\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Bath [21.8 °C]\",\"icon\":\"temperature\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Temperature_FF_Bath\",\"state\":\"21.8\",\"stateDescription\":{\"pattern\":\"%.1f °C\",\"readOnly\":false,\"options\":[]},\"type\":\"Number\",\"name\":\"Temperature_FF_Bath\",\"label\":\"Bath\",\"category\":\"temperature\",\"tags\":[\"Measurement\",\"Temperature\"],\"groupNames\":[\"Temperature\",\"FF_Bath\"]},\"widgets\":[]},{\"widgetId\":\"Window_FF_Bath\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Bath [closed]\",\"icon\":\"contact\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_FF_Bath\",\"state\":\"CLOSED\",\"transformedState\":\"closed\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_FF_Bath\",\"label\":\"Bath\",\"tags\":[\"Window\"],\"groupNames\":[\"FF_Bath\",\"Windows\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"FF_Office\",\"type\":\"Group\",\"visibility\":true,\"label\":\"Office\",\"icon\":\"office\",\"mappings\":[],\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/FF_Office\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"FF_Office\",\"label\":\"Office\",\"category\":\"office\",\"tags\":[\"Room\"],\"groupNames\":[\"gFF\"]},\"linkedPage\":{\"id\":\"FF_Office\",\"title\":\"Office\",\"icon\":\"office\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/FF_Office\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"Light_FF_Office_Ceiling\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Ceiling\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_FF_Office_Ceiling\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Light_FF_Office_Ceiling\",\"label\":\"Ceiling\",\"tags\":[\"Light\"],\"groupNames\":[\"FF_Office\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Heating_FF_Office\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Office\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_FF_Office\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Heating_FF_Office\",\"label\":\"Office\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"FF_Office\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Shutter_FF_Office_Window\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Office Window\",\"icon\":\"rollershutter\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Shutter_FF_Office_Window\",\"state\":\"NULL\",\"type\":\"Rollershutter\",\"name\":\"Shutter_FF_Office_Window\",\"label\":\"Office Window\",\"tags\":[\"Blinds\"],\"groupNames\":[\"FF_Office\",\"Shutters\"]},\"widgets\":[]},{\"widgetId\":\"Shutter_FF_Office_Door\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Office Door\",\"icon\":\"rollershutter\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Shutter_FF_Office_Door\",\"state\":\"NULL\",\"type\":\"Rollershutter\",\"name\":\"Shutter_FF_Office_Door\",\"label\":\"Office Door\",\"tags\":[\"Blinds\"],\"groupNames\":[\"FF_Office\",\"Shutters\"]},\"widgets\":[]},{\"widgetId\":\"Temperature_FF_Office\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Office [20.3 °C]\",\"icon\":\"temperature\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Temperature_FF_Office\",\"state\":\"20.3\",\"stateDescription\":{\"pattern\":\"%.1f °C\",\"readOnly\":false,\"options\":[]},\"type\":\"Number\",\"name\":\"Temperature_FF_Office\",\"label\":\"Office\",\"category\":\"temperature\",\"tags\":[\"Measurement\",\"Temperature\"],\"groupNames\":[\"Temperature\",\"FF_Office\"]},\"widgets\":[]},{\"widgetId\":\"Window_FF_Office_Window\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Office Window [open]\",\"icon\":\"contact\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_FF_Office_Window\",\"state\":\"OPEN\",\"transformedState\":\"open\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_FF_Office_Window\",\"label\":\"Office Window\",\"tags\":[\"Window\"],\"groupNames\":[\"FF_Office\",\"Windows\"]},\"widgets\":[]},{\"widgetId\":\"Window_FF_Office_Door\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Balcony Door [open]\",\"icon\":\"door\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_FF_Office_Door\",\"state\":\"OPEN\",\"transformedState\":\"open\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_FF_Office_Door\",\"label\":\"Balcony Door\",\"category\":\"door\",\"tags\":[\"Door\"],\"groupNames\":[\"FF_Office\",\"Windows\"]},\"widgets\":[]},{\"widgetId\":\"Wifi_Level\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Wifi Level [0/4]\",\"icon\":\"signal\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Wifi_Level\",\"state\":\"0\",\"stateDescription\":{\"pattern\":\"%d/4\",\"readOnly\":false,\"options\":[]},\"type\":\"Number\",\"name\":\"Wifi_Level\",\"label\":\"Wifi Level\",\"category\":\"signal\",\"tags\":[],\"groupNames\":[\"FF_Office\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"FF_Son\",\"type\":\"Group\",\"visibility\":true,\"label\":\"Oliver's Room\",\"icon\":\"boy_1\",\"mappings\":[],\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/FF_Son\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"FF_Son\",\"label\":\"Oliver's Room\",\"category\":\"boy_1\",\"tags\":[\"Bedroom\"],\"groupNames\":[\"gFF\"]},\"linkedPage\":{\"id\":\"FF_Son\",\"title\":\"Oliver's Room\",\"icon\":\"boy_1\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/FF_Son\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"Light_FF_Son_Ceiling\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Ceiling\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_FF_Son_Ceiling\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Light_FF_Son_Ceiling\",\"label\":\"Ceiling\",\"tags\":[\"Light\"],\"groupNames\":[\"FF_Son\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Heating_FF_Son\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Oliver's Room\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_FF_Son\",\"state\":\"ON\",\"type\":\"Switch\",\"name\":\"Heating_FF_Son\",\"label\":\"Oliver's Room\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"FF_Son\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Temperature_FF_Son\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Oliver's Room [21.0 °C]\",\"icon\":\"temperature\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Temperature_FF_Son\",\"state\":\"21.0\",\"stateDescription\":{\"pattern\":\"%.1f °C\",\"readOnly\":false,\"options\":[]},\"type\":\"Number\",\"name\":\"Temperature_FF_Son\",\"label\":\"Oliver's Room\",\"category\":\"temperature\",\"tags\":[\"Measurement\",\"Temperature\"],\"groupNames\":[\"Temperature\",\"FF_Son\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"FF_Daughter\",\"type\":\"Group\",\"visibility\":true,\"label\":\"Amelia's Room\",\"icon\":\"girl_1\",\"mappings\":[],\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/FF_Daughter\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"FF_Daughter\",\"label\":\"Amelia's Room\",\"category\":\"girl_1\",\"tags\":[\"Bedroom\"],\"groupNames\":[\"gFF\"]},\"linkedPage\":{\"id\":\"FF_Daughter\",\"title\":\"Amelia's Room\",\"icon\":\"girl_1\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/FF_Daughter\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"Light_FF_Daughter_Ceiling\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Ceiling\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_FF_Daughter_Ceiling\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Light_FF_Daughter_Ceiling\",\"label\":\"Ceiling\",\"tags\":[\"Light\"],\"groupNames\":[\"FF_Daughter\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Heating_FF_Daughter\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Amelia's Room\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_FF_Daughter\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Heating_FF_Daughter\",\"label\":\"Amelia's Room\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"FF_Daughter\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Temperature_FF_Daughter\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Amelia's Room [20.7 °C]\",\"icon\":\"temperature\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Temperature_FF_Daughter\",\"state\":\"20.7\",\"stateDescription\":{\"pattern\":\"%.1f °C\",\"readOnly\":false,\"options\":[]},\"type\":\"Number\",\"name\":\"Temperature_FF_Daughter\",\"label\":\"Amelia's Room\",\"category\":\"temperature\",\"tags\":[\"Measurement\",\"Temperature\"],\"groupNames\":[\"Temperature\",\"FF_Daughter\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"FF_Bed\",\"type\":\"Group\",\"visibility\":true,\"label\":\"Bedroom\",\"icon\":\"bedroom\",\"mappings\":[],\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/FF_Bed\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"FF_Bed\",\"label\":\"Bedroom\",\"category\":\"bedroom\",\"tags\":[\"Bedroom\"],\"groupNames\":[\"gFF\"]},\"linkedPage\":{\"id\":\"FF_Bed\",\"title\":\"Bedroom\",\"icon\":\"bedroom\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/FF_Bed\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"Light_FF_Bed_Ceiling\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Ceiling\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_FF_Bed_Ceiling\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Light_FF_Bed_Ceiling\",\"label\":\"Ceiling\",\"tags\":[\"Light\"],\"groupNames\":[\"FF_Bed\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Heating_FF_Bed\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Bedroom\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_FF_Bed\",\"state\":\"ON\",\"type\":\"Switch\",\"name\":\"Heating_FF_Bed\",\"label\":\"Bedroom\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"FF_Bed\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Shutter_FF_Bed\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Bedroom\",\"icon\":\"rollershutter\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Shutter_FF_Bed\",\"state\":\"NULL\",\"type\":\"Rollershutter\",\"name\":\"Shutter_FF_Bed\",\"label\":\"Bedroom\",\"tags\":[\"Blinds\"],\"groupNames\":[\"FF_Bed\",\"Shutters\"]},\"widgets\":[]},{\"widgetId\":\"Temperature_FF_Bed\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Bedroom [19.7 °C]\",\"icon\":\"temperature\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Temperature_FF_Bed\",\"state\":\"19.7\",\"stateDescription\":{\"pattern\":\"%.1f °C\",\"readOnly\":false,\"options\":[]},\"type\":\"Number\",\"name\":\"Temperature_FF_Bed\",\"label\":\"Bedroom\",\"category\":\"temperature\",\"tags\":[\"Measurement\",\"Temperature\"],\"groupNames\":[\"Temperature\",\"FF_Bed\"]},\"widgets\":[]},{\"widgetId\":\"Window_FF_Bed\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Bedroom [closed]\",\"icon\":\"contact\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_FF_Bed\",\"state\":\"CLOSED\",\"transformedState\":\"closed\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_FF_Bed\",\"label\":\"Bedroom\",\"tags\":[\"Window\"],\"groupNames\":[\"FF_Bed\",\"Windows\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"FF_Corridor\",\"type\":\"Group\",\"visibility\":true,\"label\":\"Corridor\",\"icon\":\"corridor\",\"mappings\":[],\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/FF_Corridor\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"FF_Corridor\",\"label\":\"Corridor\",\"category\":\"corridor\",\"tags\":[\"Corridor\"],\"groupNames\":[\"gFF\"]},\"linkedPage\":{\"id\":\"FF_Corridor\",\"title\":\"Corridor\",\"icon\":\"corridor\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/FF_Corridor\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"Light_FF_Corridor_Ceiling\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Corridor\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_FF_Corridor_Ceiling\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Light_FF_Corridor_Ceiling\",\"label\":\"Corridor\",\"tags\":[\"Light\"],\"groupNames\":[\"FF_Corridor\",\"Lights\"]},\"widgets\":[]}]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"0001\",\"type\":\"Group\",\"visibility\":true,\"label\":\"Ground Floor\",\"icon\":\"groundfloor\",\"mappings\":[],\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/gGF\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"gGF\",\"label\":\"Ground Floor\",\"category\":\"groundfloor\",\"tags\":[\"GroundFloor\"],\"groupNames\":[]},\"linkedPage\":{\"id\":\"0001\",\"title\":\"Ground Floor\",\"icon\":\"groundfloor\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/0001\",\"leaf\":false,\"timeout\":false,\"widgets\":[{\"widgetId\":\"GF_Living\",\"type\":\"Group\",\"visibility\":true,\"label\":\"Living Room\",\"icon\":\"video\",\"mappings\":[],\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/GF_Living\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"GF_Living\",\"label\":\"Living Room\",\"category\":\"video\",\"tags\":[\"LivingRoom\"],\"groupNames\":[\"gGF\"]},\"linkedPage\":{\"id\":\"GF_Living\",\"title\":\"Living Room\",\"icon\":\"video\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/GF_Living\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"Light_GF_Living_Table\",\"type\":\"Slider\",\"visibility\":true,\"label\":\"Table\",\"icon\":\"slider\",\"mappings\":[],\"switchSupport\":true,\"sendFrequency\":0,\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_GF_Living_Table\",\"state\":\"100\",\"type\":\"Dimmer\",\"name\":\"Light_GF_Living_Table\",\"label\":\"Table\",\"tags\":[\"Light\",\"Lighting\"],\"groupNames\":[\"GF_Living\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Heating_GF_Living\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Livingroom\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_GF_Living\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Heating_GF_Living\",\"label\":\"Livingroom\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"GF_Living\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Shutter_GF_Living\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Livingroom\",\"icon\":\"rollershutter\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Shutter_GF_Living\",\"state\":\"NULL\",\"type\":\"Rollershutter\",\"name\":\"Shutter_GF_Living\",\"label\":\"Livingroom\",\"tags\":[\"Blinds\"],\"groupNames\":[\"GF_Living\",\"Shutters\"]},\"widgets\":[]},{\"widgetId\":\"Temperature_GF_Living\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Living Room [18.8 °C]\",\"icon\":\"temperature\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Temperature_GF_Living\",\"state\":\"18.8\",\"stateDescription\":{\"pattern\":\"%.1f °C\",\"readOnly\":false,\"options\":[]},\"type\":\"Number\",\"name\":\"Temperature_GF_Living\",\"label\":\"Living Room\",\"category\":\"temperature\",\"tags\":[\"Measurement\",\"Temperature\"],\"groupNames\":[\"Temperature\",\"GF_Living\"]},\"widgets\":[]},{\"widgetId\":\"Window_GF_Living\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Terrace door [closed]\",\"icon\":\"door\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_GF_Living\",\"state\":\"CLOSED\",\"transformedState\":\"closed\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_GF_Living\",\"label\":\"Terrace door\",\"category\":\"door\",\"tags\":[\"Door\"],\"groupNames\":[\"GF_Living\",\"Windows\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"GF_Kitchen\",\"type\":\"Group\",\"visibility\":true,\"label\":\"Kitchen\",\"icon\":\"kitchen\",\"mappings\":[],\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/GF_Kitchen\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"GF_Kitchen\",\"label\":\"Kitchen\",\"category\":\"kitchen\",\"tags\":[\"Kitchen\"],\"groupNames\":[\"gGF\"]},\"linkedPage\":{\"id\":\"GF_Kitchen\",\"title\":\"Kitchen\",\"icon\":\"kitchen\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/GF_Kitchen\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"Light_GF_Kitchen_Ceiling\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Ceiling\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_GF_Kitchen_Ceiling\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Light_GF_Kitchen_Ceiling\",\"label\":\"Ceiling\",\"tags\":[\"Light\"],\"groupNames\":[\"GF_Kitchen\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Light_GF_Kitchen_Table\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Table\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_GF_Kitchen_Table\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Light_GF_Kitchen_Table\",\"label\":\"Table\",\"tags\":[\"Light\"],\"groupNames\":[\"GF_Kitchen\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Heating_GF_Kitchen\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Kitchen\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_GF_Kitchen\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Heating_GF_Kitchen\",\"label\":\"Kitchen\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"GF_Kitchen\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Shutter_GF_Kitchen\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Kitchen\",\"icon\":\"rollershutter\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Shutter_GF_Kitchen\",\"state\":\"NULL\",\"type\":\"Rollershutter\",\"name\":\"Shutter_GF_Kitchen\",\"label\":\"Kitchen\",\"tags\":[\"Blinds\"],\"groupNames\":[\"GF_Kitchen\",\"Shutters\"]},\"widgets\":[]},{\"widgetId\":\"Temperature_GF_Kitchen\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Kitchen [20.6 °C]\",\"icon\":\"temperature\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Temperature_GF_Kitchen\",\"state\":\"20.6\",\"stateDescription\":{\"pattern\":\"%.1f °C\",\"readOnly\":false,\"options\":[]},\"type\":\"Number\",\"name\":\"Temperature_GF_Kitchen\",\"label\":\"Kitchen\",\"category\":\"temperature\",\"tags\":[\"Measurement\",\"Temperature\",\"CurrentTemperature\"],\"groupNames\":[\"Temperature\",\"GF_Kitchen\",\"Thermostat\"]},\"widgets\":[]},{\"widgetId\":\"Window_GF_Kitchen\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Kitchen [closed]\",\"icon\":\"contact\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_GF_Kitchen\",\"state\":\"CLOSED\",\"transformedState\":\"closed\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_GF_Kitchen\",\"label\":\"Kitchen\",\"tags\":[\"Window\"],\"groupNames\":[\"GF_Kitchen\",\"Windows\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"GF_Toilet\",\"type\":\"Group\",\"visibility\":true,\"label\":\"Toilet\",\"icon\":\"bath\",\"mappings\":[],\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/GF_Toilet\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"GF_Toilet\",\"label\":\"Toilet\",\"category\":\"bath\",\"tags\":[\"Bathroom\"],\"groupNames\":[\"gGF\"]},\"linkedPage\":{\"id\":\"GF_Toilet\",\"title\":\"Toilet\",\"icon\":\"bath\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/GF_Toilet\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"Light_GF_Toilet_Ceiling\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Ceiling\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_GF_Toilet_Ceiling\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Light_GF_Toilet_Ceiling\",\"label\":\"Ceiling\",\"tags\":[\"Light\"],\"groupNames\":[\"GF_Toilet\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Light_GF_Toilet_Mirror\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Mirror\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_GF_Toilet_Mirror\",\"state\":\"ON\",\"type\":\"Switch\",\"name\":\"Light_GF_Toilet_Mirror\",\"label\":\"Mirror\",\"tags\":[\"Light\"],\"groupNames\":[\"GF_Toilet\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Heating_GF_Toilet\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Toilet\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_GF_Toilet\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Heating_GF_Toilet\",\"label\":\"Toilet\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"GF_Toilet\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Shutter_GF_Toilet\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Toilet\",\"icon\":\"rollershutter\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Shutter_GF_Toilet\",\"state\":\"NULL\",\"type\":\"Rollershutter\",\"name\":\"Shutter_GF_Toilet\",\"label\":\"Toilet\",\"tags\":[\"Blinds\"],\"groupNames\":[\"GF_Toilet\",\"Shutters\"]},\"widgets\":[]},{\"widgetId\":\"Temperature_GF_Toilet\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Toilet [19.9 °C]\",\"icon\":\"temperature\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Temperature_GF_Toilet\",\"state\":\"19.9\",\"stateDescription\":{\"pattern\":\"%.1f °C\",\"readOnly\":false,\"options\":[]},\"type\":\"Number\",\"name\":\"Temperature_GF_Toilet\",\"label\":\"Toilet\",\"category\":\"temperature\",\"tags\":[\"Measurement\",\"Temperature\"],\"groupNames\":[\"Temperature\",\"GF_Toilet\"]},\"widgets\":[]},{\"widgetId\":\"Window_GF_Toilet\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Toilet [open]\",\"icon\":\"contact\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_GF_Toilet\",\"state\":\"OPEN\",\"transformedState\":\"open\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_GF_Toilet\",\"label\":\"Toilet\",\"tags\":[\"Window\"],\"groupNames\":[\"GF_Toilet\",\"Windows\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"GF_Corridor\",\"type\":\"Group\",\"visibility\":true,\"label\":\"Corridor\",\"icon\":\"corridor\",\"mappings\":[],\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/GF_Corridor\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"GF_Corridor\",\"label\":\"Corridor\",\"category\":\"corridor\",\"tags\":[\"Corridor\"],\"groupNames\":[\"gGF\"]},\"linkedPage\":{\"id\":\"GF_Corridor\",\"title\":\"Corridor\",\"icon\":\"corridor\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/GF_Corridor\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"Light_GF_Corridor_Ceiling\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Ceiling\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_GF_Corridor_Ceiling\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Light_GF_Corridor_Ceiling\",\"label\":\"Ceiling\",\"tags\":[\"Light\"],\"groupNames\":[\"GF_Corridor\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Light_GF_Corridor_Wardrobe\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Wardrobe\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_GF_Corridor_Wardrobe\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Light_GF_Corridor_Wardrobe\",\"label\":\"Wardrobe\",\"tags\":[\"Light\"],\"groupNames\":[\"GF_Corridor\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Heating_GF_Corridor\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Corridor\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_GF_Corridor\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Heating_GF_Corridor\",\"label\":\"Corridor\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"GF_Corridor\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Temperature_GF_Corridor\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Corridor [18.8 °C]\",\"icon\":\"temperature\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Temperature_GF_Corridor\",\"state\":\"18.8\",\"stateDescription\":{\"pattern\":\"%.1f °C\",\"readOnly\":false,\"options\":[]},\"type\":\"Number\",\"name\":\"Temperature_GF_Corridor\",\"label\":\"Corridor\",\"category\":\"temperature\",\"tags\":[\"Measurement\",\"Temperature\"],\"groupNames\":[\"Temperature\",\"GF_Corridor\"]},\"widgets\":[]},{\"widgetId\":\"Window_GF_Frontdoor\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Frontdoor [open]\",\"icon\":\"frontdoor\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_GF_Frontdoor\",\"state\":\"OPEN\",\"transformedState\":\"open\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_GF_Frontdoor\",\"label\":\"Frontdoor\",\"category\":\"frontdoor\",\"tags\":[\"FrontDoor\"],\"groupNames\":[\"GF_Corridor\",\"Windows\"]},\"widgets\":[]}]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"0002\",\"type\":\"Group\",\"visibility\":true,\"label\":\"Cellar\",\"icon\":\"cellar\",\"mappings\":[],\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/gC\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"gC\",\"label\":\"Cellar\",\"category\":\"cellar\",\"tags\":[\"Basement\"],\"groupNames\":[]},\"linkedPage\":{\"id\":\"0002\",\"title\":\"Cellar\",\"icon\":\"cellar\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/0002\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"Light_C_Corridor_Ceiling\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Ceiling\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_C_Corridor_Ceiling\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Light_C_Corridor_Ceiling\",\"label\":\"Ceiling\",\"tags\":[\"Light\"],\"groupNames\":[\"gC\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Light_C_Staircase\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Staircase\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_C_Staircase\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Light_C_Staircase\",\"label\":\"Staircase\",\"tags\":[\"Light\"],\"groupNames\":[\"gC\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Light_C_Washing_Ceiling\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Washing\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_C_Washing_Ceiling\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Light_C_Washing_Ceiling\",\"label\":\"Washing\",\"tags\":[\"Light\"],\"groupNames\":[\"gC\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Light_C_Workshop\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Workshop\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_C_Workshop\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Light_C_Workshop\",\"label\":\"Workshop\",\"tags\":[\"Light\",\"Lighting\"],\"groupNames\":[\"gC\",\"Lights\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"0003\",\"type\":\"Group\",\"visibility\":true,\"label\":\"Garden\",\"icon\":\"garden\",\"mappings\":[],\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/Garden\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"Garden\",\"label\":\"Garden\",\"category\":\"garden\",\"tags\":[\"Garden\"],\"groupNames\":[]},\"linkedPage\":{\"id\":\"0003\",\"title\":\"Garden\",\"icon\":\"garden\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/0003\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"Light_Garden_Garage\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Garage\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_Garden_Garage\",\"state\":\"ON\",\"type\":\"Switch\",\"name\":\"Light_Garden_Garage\",\"label\":\"Garage\",\"tags\":[\"Light\",\"Lighting\"],\"groupNames\":[\"Garden\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Light_Garden_Terrace\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Terrace\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Light_Garden_Terrace\",\"state\":\"ON\",\"type\":\"Switch\",\"name\":\"Light_Garden_Terrace\",\"label\":\"Terrace\",\"tags\":[\"Light\"],\"groupNames\":[\"Garden\",\"Lights\"]},\"widgets\":[]},{\"widgetId\":\"Garage_Door\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Garage Door [closed]\",\"icon\":\"garagedoor\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Garage_Door\",\"state\":\"CLOSED\",\"transformedState\":\"closed\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Garage_Door\",\"label\":\"Garage Door\",\"category\":\"garagedoor\",\"tags\":[\"GarageDoor\"],\"groupNames\":[\"Garden\",\"Windows\"]},\"widgets\":[]}]},\"widgets\":[]}]},{\"widgetId\":\"01\",\"type\":\"Frame\",\"visibility\":true,\"label\":\"Weather\",\"icon\":\"frame\",\"mappings\":[],\"widgets\":[{\"widgetId\":\"0100\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Outside Temperature [- °C]\",\"icon\":\"temperature\",\"valuecolor\":\"lightgray\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Weather_Temperature\",\"state\":\"NULL\",\"stateDescription\":{\"pattern\":\"%.1f °C\",\"readOnly\":false,\"options\":[]},\"type\":\"Number\",\"name\":\"Weather_Temperature\",\"label\":\"Outside Temperature\",\"category\":\"temperature\",\"tags\":[],\"groupNames\":[\"Weather\",\"Weather_Chart\"]},\"linkedPage\":{\"id\":\"0100\",\"title\":\"Outside Temperature [- °C]\",\"icon\":\"temperature\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/0100\",\"leaf\":false,\"timeout\":false,\"widgets\":[{\"widgetId\":\"010000\",\"type\":\"Frame\",\"visibility\":true,\"label\":\"\",\"icon\":\"frame\",\"mappings\":[],\"widgets\":[{\"widgetId\":\"01000000\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Todays Maximum [- °C]\",\"icon\":\"temperature\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Weather_Temp_Max\",\"state\":\"NULL\",\"stateDescription\":{\"pattern\":\"%.1f °C\",\"readOnly\":false,\"options\":[]},\"type\":\"Number\",\"name\":\"Weather_Temp_Max\",\"label\":\"Todays Maximum\",\"category\":\"temperature\",\"tags\":[],\"groupNames\":[\"Weather\",\"Weather_Chart\"]},\"widgets\":[]},{\"widgetId\":\"01000001\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Todays Minimum [- °C]\",\"icon\":\"temperature\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Weather_Temp_Min\",\"state\":\"NULL\",\"stateDescription\":{\"pattern\":\"%.1f °C\",\"readOnly\":false,\"options\":[]},\"type\":\"Number\",\"name\":\"Weather_Temp_Min\",\"label\":\"Todays Minimum\",\"category\":\"temperature\",\"tags\":[],\"groupNames\":[\"Weather\",\"Weather_Chart\"]},\"widgets\":[]},{\"widgetId\":\"01000002\",\"type\":\"Text\",\"visibility\":false,\"label\":\"Last Update [- -]\",\"icon\":\"clock\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Weather_LastUpdate\",\"state\":\"NULL\",\"stateDescription\":{\"pattern\":\"%1$ta %1$tR\",\"readOnly\":false,\"options\":[]},\"type\":\"DateTime\",\"name\":\"Weather_LastUpdate\",\"label\":\"Last Update\",\"category\":\"clock\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]}]},{\"widgetId\":\"010001\",\"type\":\"Frame\",\"visibility\":true,\"label\":\"\",\"icon\":\"frame\",\"mappings\":[],\"widgets\":[{\"widgetId\":\"01000100\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Chart Period\",\"icon\":\"chart\",\"mappings\":[{\"command\":\"0\",\"label\":\"Hour\"},{\"command\":\"1\",\"label\":\"Day\"},{\"command\":\"2\",\"label\":\"Week\"}],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Weather_Chart_Period\",\"state\":\"NULL\",\"type\":\"Number\",\"name\":\"Weather_Chart_Period\",\"label\":\"Chart Period\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"01000101\",\"type\":\"Chart\",\"visibility\":true,\"label\":\"Weather_Chart\",\"icon\":\"chart\",\"mappings\":[],\"refresh\":600000,\"period\":\"h\",\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/Weather_Chart\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"Weather_Chart\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"01000102\",\"type\":\"Chart\",\"visibility\":false,\"label\":\"Weather_Chart\",\"icon\":\"chart\",\"mappings\":[],\"refresh\":3600000,\"period\":\"D\",\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/Weather_Chart\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"Weather_Chart\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"01000103\",\"type\":\"Chart\",\"visibility\":false,\"label\":\"Weather_Chart\",\"icon\":\"chart\",\"mappings\":[],\"refresh\":3600000,\"period\":\"W\",\"item\":{\"members\":[],\"link\":\"http://192.168.1.20:8080/rest/items/Weather_Chart\",\"state\":\"NULL\",\"type\":\"Group\",\"name\":\"Weather_Chart\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]}]}]},\"widgets\":[]},{\"widgetId\":\"0101\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Astronomical Data\",\"icon\":\"sun\",\"mappings\":[],\"linkedPage\":{\"id\":\"0101\",\"title\":\"Astronomical Data\",\"icon\":\"sun\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/0101\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"010100\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Sun Elevation [35.69 °]\",\"icon\":\"sun\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Sun_Elevation\",\"state\":\"35.686630367330324 °\",\"stateDescription\":{\"pattern\":\"%.2f %unit%\",\"readOnly\":true,\"options\":[]},\"type\":\"Number:Angle\",\"name\":\"Sun_Elevation\",\"label\":\"Sun Elevation\",\"category\":\"sun\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"010101\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Sun Azimuth [97.72 °]\",\"icon\":\"sun\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Sun_Azimuth\",\"state\":\"97.71824287760455 °\",\"stateDescription\":{\"pattern\":\"%.2f %unit%\",\"readOnly\":true,\"options\":[]},\"type\":\"Number:Angle\",\"name\":\"Sun_Azimuth\",\"label\":\"Sun Azimuth\",\"category\":\"sun\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"010102\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Sunrise [04:46]\",\"icon\":\"sunrise\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Sunrise_Time\",\"state\":\"2020-06-26T04:46:00.000+0200\",\"stateDescription\":{\"pattern\":\"%1$tH:%1$tM\",\"readOnly\":true,\"options\":[]},\"type\":\"DateTime\",\"name\":\"Sunrise_Time\",\"label\":\"Sunrise\",\"category\":\"sunrise\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"010103\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Sunset [21:30]\",\"icon\":\"sunset\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Sunset_Time\",\"state\":\"2020-06-26T21:30:00.000+0200\",\"stateDescription\":{\"pattern\":\"%1$tH:%1$tM\",\"readOnly\":true,\"options\":[]},\"type\":\"DateTime\",\"name\":\"Sunset_Time\",\"label\":\"Sunset\",\"category\":\"sunset\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"010104\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Moon Elevation [-11.46 °]\",\"icon\":\"moon\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Moon_Elevation\",\"state\":\"-11.455722669213806 °\",\"stateDescription\":{\"pattern\":\"%.2f %unit%\",\"readOnly\":true,\"options\":[]},\"type\":\"Number:Angle\",\"name\":\"Moon_Elevation\",\"label\":\"Moon Elevation\",\"category\":\"moon\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"010105\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Moon Azimuth [52.03 °]\",\"icon\":\"moon\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Moon_Azimuth\",\"state\":\"52.02931352816733 °\",\"stateDescription\":{\"pattern\":\"%.2f %unit%\",\"readOnly\":true,\"options\":[]},\"type\":\"Number:Angle\",\"name\":\"Moon_Azimuth\",\"label\":\"Moon Azimuth\",\"category\":\"moon\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"010106\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Moon Phase [Waxing crescent]\",\"icon\":\"moon\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Moon_Phase\",\"state\":\"WAXING_CRESCENT\",\"stateDescription\":{\"pattern\":\"%s\",\"readOnly\":true,\"options\":[{\"value\":\"NEW\",\"label\":\"New moon\"},{\"value\":\"WAXING_CRESCENT\",\"label\":\"Waxing crescent\"},{\"value\":\"FIRST_QUARTER\",\"label\":\"First quarter\"},{\"value\":\"WAXING_GIBBOUS\",\"label\":\"Waxing gibbous\"},{\"value\":\"FULL\",\"label\":\"Full moon\"},{\"value\":\"WANING_GIBBOUS\",\"label\":\"Waning gibbous\"},{\"value\":\"THIRD_QUARTER\",\"label\":\"Third quarter\"},{\"value\":\"WANING_CRESCENT\",\"label\":\"Waning crescent\"}]},\"commandDescription\":{\"commandOptions\":[{\"command\":\"NEW\",\"label\":\"New moon\"},{\"command\":\"WAXING_CRESCENT\",\"label\":\"Waxing crescent\"},{\"command\":\"FIRST_QUARTER\",\"label\":\"First quarter\"},{\"command\":\"WAXING_GIBBOUS\",\"label\":\"Waxing gibbous\"},{\"command\":\"FULL\",\"label\":\"Full moon\"},{\"command\":\"WANING_GIBBOUS\",\"label\":\"Waning gibbous\"},{\"command\":\"THIRD_QUARTER\",\"label\":\"Third quarter\"},{\"command\":\"WANING_CRESCENT\",\"label\":\"Waning crescent\"}]},\"type\":\"String\",\"name\":\"Moon_Phase\",\"label\":\"Moon Phase\",\"category\":\"moon\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]}]},\"widgets\":[]}]},{\"widgetId\":\"02\",\"type\":\"Frame\",\"visibility\":true,\"label\":\"Demo\",\"icon\":\"frame\",\"mappings\":[],\"widgets\":[{\"widgetId\":\"0200\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Date [Friday, 26.06.2020]\",\"icon\":\"calendar\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/CurrentDate\",\"state\":\"2020-06-26T09:05:09.287+0200\",\"stateDescription\":{\"pattern\":\"%1$tA, %1$td.%1$tm.%1$tY\",\"readOnly\":true,\"options\":[]},\"type\":\"DateTime\",\"name\":\"CurrentDate\",\"label\":\"Date\",\"category\":\"calendar\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"0201\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Group Demo\",\"icon\":\"firstfloor\",\"mappings\":[],\"linkedPage\":{\"id\":\"0201\",\"title\":\"Group Demo\",\"icon\":\"firstfloor\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/0201\",\"leaf\":false,\"timeout\":false,\"widgets\":[{\"widgetId\":\"020100\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"All Lights [(6)]\",\"icon\":\"switch\",\"mappings\":[{\"command\":\"OFF\",\"label\":\"All Off\"}],\"item\":{\"members\":[],\"groupType\":\"Switch\",\"function\":{\"name\":\"OR\",\"params\":[\"ON\",\"OFF\"]},\"link\":\"http://192.168.1.20:8080/rest/items/Lights\",\"state\":\"ON\",\"stateDescription\":{\"pattern\":\"(%d)\",\"readOnly\":false,\"options\":[]},\"type\":\"Group\",\"name\":\"Lights\",\"label\":\"All Lights\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"020101\",\"type\":\"Group\",\"visibility\":true,\"label\":\"No. of Active Heatings [(2)]\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"members\":[],\"groupType\":\"Switch\",\"function\":{\"name\":\"OR\",\"params\":[\"ON\",\"OFF\"]},\"link\":\"http://192.168.1.20:8080/rest/items/Heating\",\"state\":\"ON\",\"stateDescription\":{\"pattern\":\"(%d)\",\"readOnly\":false,\"options\":[]},\"type\":\"Group\",\"name\":\"Heating\",\"label\":\"No. of Active Heatings\",\"category\":\"heating\",\"tags\":[],\"groupNames\":[]},\"linkedPage\":{\"id\":\"020101\",\"title\":\"No. of Active Heatings [(2)]\",\"icon\":\"heating\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/020101\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"Heating_GF_Corridor\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Corridor\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_GF_Corridor\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Heating_GF_Corridor\",\"label\":\"Corridor\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"GF_Corridor\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Heating_GF_Toilet\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Toilet\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_GF_Toilet\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Heating_GF_Toilet\",\"label\":\"Toilet\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"GF_Toilet\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Heating_GF_Living\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Livingroom\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_GF_Living\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Heating_GF_Living\",\"label\":\"Livingroom\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"GF_Living\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Heating_GF_Kitchen\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Kitchen\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_GF_Kitchen\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Heating_GF_Kitchen\",\"label\":\"Kitchen\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"GF_Kitchen\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Heating_FF_Bath\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Bath\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_FF_Bath\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Heating_FF_Bath\",\"label\":\"Bath\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"FF_Bath\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Heating_FF_Office\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Office\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_FF_Office\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Heating_FF_Office\",\"label\":\"Office\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"FF_Office\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Heating_FF_Son\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Oliver's Room\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_FF_Son\",\"state\":\"ON\",\"type\":\"Switch\",\"name\":\"Heating_FF_Son\",\"label\":\"Oliver's Room\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"FF_Son\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Heating_FF_Daughter\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Amelia's Room\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_FF_Daughter\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"Heating_FF_Daughter\",\"label\":\"Amelia's Room\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"FF_Daughter\",\"Heating\"]},\"widgets\":[]},{\"widgetId\":\"Heating_FF_Bed\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Bedroom\",\"icon\":\"heating\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Heating_FF_Bed\",\"state\":\"ON\",\"type\":\"Switch\",\"name\":\"Heating_FF_Bed\",\"label\":\"Bedroom\",\"category\":\"heating\",\"tags\":[\"HVAC\"],\"groupNames\":[\"FF_Bed\",\"Heating\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"020102\",\"type\":\"Group\",\"visibility\":true,\"label\":\"Open windows [(4)]\",\"icon\":\"contact\",\"mappings\":[],\"item\":{\"members\":[],\"groupType\":\"Contact\",\"function\":{\"name\":\"OR\",\"params\":[\"OPEN\",\"CLOSED\"]},\"link\":\"http://192.168.1.20:8080/rest/items/Windows\",\"state\":\"OPEN\",\"stateDescription\":{\"pattern\":\"(%d)\",\"readOnly\":false,\"options\":[]},\"type\":\"Group\",\"name\":\"Windows\",\"label\":\"Open windows\",\"category\":\"contact\",\"tags\":[],\"groupNames\":[]},\"linkedPage\":{\"id\":\"020102\",\"title\":\"Open windows [(4)]\",\"icon\":\"contact\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/020102\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"Window_GF_Frontdoor\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Frontdoor [open]\",\"icon\":\"frontdoor\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_GF_Frontdoor\",\"state\":\"OPEN\",\"transformedState\":\"open\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_GF_Frontdoor\",\"label\":\"Frontdoor\",\"category\":\"frontdoor\",\"tags\":[\"FrontDoor\"],\"groupNames\":[\"GF_Corridor\",\"Windows\"]},\"widgets\":[]},{\"widgetId\":\"Window_GF_Kitchen\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Kitchen [closed]\",\"icon\":\"contact\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_GF_Kitchen\",\"state\":\"CLOSED\",\"transformedState\":\"closed\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_GF_Kitchen\",\"label\":\"Kitchen\",\"tags\":[\"Window\"],\"groupNames\":[\"GF_Kitchen\",\"Windows\"]},\"widgets\":[]},{\"widgetId\":\"Window_GF_Living\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Terrace door [closed]\",\"icon\":\"door\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_GF_Living\",\"state\":\"CLOSED\",\"transformedState\":\"closed\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_GF_Living\",\"label\":\"Terrace door\",\"category\":\"door\",\"tags\":[\"Door\"],\"groupNames\":[\"GF_Living\",\"Windows\"]},\"widgets\":[]},{\"widgetId\":\"Window_GF_Toilet\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Toilet [open]\",\"icon\":\"contact\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_GF_Toilet\",\"state\":\"OPEN\",\"transformedState\":\"open\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_GF_Toilet\",\"label\":\"Toilet\",\"tags\":[\"Window\"],\"groupNames\":[\"GF_Toilet\",\"Windows\"]},\"widgets\":[]},{\"widgetId\":\"Window_FF_Bath\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Bath [closed]\",\"icon\":\"contact\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_FF_Bath\",\"state\":\"CLOSED\",\"transformedState\":\"closed\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_FF_Bath\",\"label\":\"Bath\",\"tags\":[\"Window\"],\"groupNames\":[\"FF_Bath\",\"Windows\"]},\"widgets\":[]},{\"widgetId\":\"Window_FF_Bed\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Bedroom [closed]\",\"icon\":\"contact\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_FF_Bed\",\"state\":\"CLOSED\",\"transformedState\":\"closed\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_FF_Bed\",\"label\":\"Bedroom\",\"tags\":[\"Window\"],\"groupNames\":[\"FF_Bed\",\"Windows\"]},\"widgets\":[]},{\"widgetId\":\"Window_FF_Office_Window\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Office Window [open]\",\"icon\":\"contact\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_FF_Office_Window\",\"state\":\"OPEN\",\"transformedState\":\"open\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_FF_Office_Window\",\"label\":\"Office Window\",\"tags\":[\"Window\"],\"groupNames\":[\"FF_Office\",\"Windows\"]},\"widgets\":[]},{\"widgetId\":\"Window_FF_Office_Door\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Balcony Door [open]\",\"icon\":\"door\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Window_FF_Office_Door\",\"state\":\"OPEN\",\"transformedState\":\"open\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Window_FF_Office_Door\",\"label\":\"Balcony Door\",\"category\":\"door\",\"tags\":[\"Door\"],\"groupNames\":[\"FF_Office\",\"Windows\"]},\"widgets\":[]},{\"widgetId\":\"Garage_Door\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Garage Door [closed]\",\"icon\":\"garagedoor\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Garage_Door\",\"state\":\"CLOSED\",\"transformedState\":\"closed\",\"stateDescription\":{\"pattern\":\"MAP(en.map):%s\",\"readOnly\":false,\"options\":[]},\"type\":\"Contact\",\"name\":\"Garage_Door\",\"label\":\"Garage Door\",\"category\":\"garagedoor\",\"tags\":[\"GarageDoor\"],\"groupNames\":[\"Garden\",\"Windows\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"020103\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Avg. Room Temperature [20.2 °C]\",\"icon\":\"temperature\",\"mappings\":[],\"item\":{\"members\":[],\"groupType\":\"Number\",\"function\":{\"name\":\"AVG\"},\"link\":\"http://192.168.1.20:8080/rest/items/Temperature\",\"state\":\"20.2\",\"stateDescription\":{\"pattern\":\"%.1f °C\",\"readOnly\":false,\"options\":[]},\"type\":\"Group\",\"name\":\"Temperature\",\"label\":\"Avg. Room Temperature\",\"category\":\"temperature\",\"tags\":[],\"groupNames\":[\"Status\"]},\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"0202\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Widget Overview\",\"icon\":\"chart\",\"mappings\":[],\"linkedPage\":{\"id\":\"0202\",\"title\":\"Widget Overview\",\"icon\":\"chart\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/0202\",\"leaf\":false,\"timeout\":false,\"widgets\":[{\"widgetId\":\"020200\",\"type\":\"Frame\",\"visibility\":true,\"label\":\"Binary Widgets\",\"icon\":\"frame\",\"mappings\":[],\"widgets\":[{\"widgetId\":\"02020000\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Toggle Switch\",\"icon\":\"switch\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/DemoSwitch\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"DemoSwitch\",\"label\":\"Switch\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"02020001\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Button Switch\",\"icon\":\"switch\",\"mappings\":[{\"command\":\"ON\",\"label\":\"On\"}],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/DemoSwitch\",\"state\":\"OFF\",\"type\":\"Switch\",\"name\":\"DemoSwitch\",\"label\":\"Switch\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]}]},{\"widgetId\":\"020201\",\"type\":\"Frame\",\"visibility\":true,\"label\":\"Discrete Widgets\",\"icon\":\"frame\",\"mappings\":[],\"widgets\":[{\"widgetId\":\"02020100\",\"type\":\"Selection\",\"visibility\":true,\"label\":\"Scene Selection\",\"icon\":\"sofa\",\"mappings\":[{\"command\":\"0\",\"label\":\"off\"},{\"command\":\"1\",\"label\":\"TV\"},{\"command\":\"2\",\"label\":\"Dinner\"},{\"command\":\"3\",\"label\":\"Reading\"}],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Scene_General\",\"state\":\"NULL\",\"type\":\"Number\",\"name\":\"Scene_General\",\"label\":\"Scene\",\"category\":\"sofa\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"02020101\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Scene\",\"icon\":\"sofa\",\"mappings\":[{\"command\":\"1\",\"label\":\"TV\"},{\"command\":\"2\",\"label\":\"Dinner\"},{\"command\":\"3\",\"label\":\"Reading\"}],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Scene_General\",\"state\":\"NULL\",\"type\":\"Number\",\"name\":\"Scene_General\",\"label\":\"Scene\",\"category\":\"sofa\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"02020102\",\"type\":\"Setpoint\",\"visibility\":true,\"label\":\"Temperature [22.0 °C]\",\"icon\":\"temperature\",\"mappings\":[],\"minValue\":16,\"maxValue\":28,\"step\":0.5,\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Temperature_Setpoint\",\"state\":\"22\",\"stateDescription\":{\"pattern\":\"%.1f °C\",\"readOnly\":false,\"options\":[]},\"type\":\"Number\",\"name\":\"Temperature_Setpoint\",\"label\":\"Temperature\",\"category\":\"temperature\",\"tags\":[\"Temperature\",\"homekit:TargetTemperature\",\"Setpoint\"],\"groupNames\":[\"Thermostat\"]},\"widgets\":[]}]},{\"widgetId\":\"020202\",\"type\":\"Frame\",\"visibility\":true,\"label\":\"Percent-based Widgets\",\"icon\":\"frame\",\"mappings\":[],\"widgets\":[{\"widgetId\":\"02020200\",\"type\":\"Slider\",\"visibility\":true,\"label\":\"Dimmer [- %]\",\"icon\":\"slider\",\"mappings\":[],\"switchSupport\":true,\"sendFrequency\":0,\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/DimmedLight\",\"state\":\"NULL\",\"stateDescription\":{\"pattern\":\"%d %%\",\"readOnly\":false,\"options\":[]},\"type\":\"Dimmer\",\"name\":\"DimmedLight\",\"label\":\"Dimmer\",\"category\":\"slider\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"02020201\",\"type\":\"Colorpicker\",\"visibility\":true,\"label\":\"RGB Light\",\"icon\":\"slider\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/RGBLight\",\"state\":\"NULL\",\"type\":\"Color\",\"name\":\"RGBLight\",\"label\":\"RGB Light\",\"category\":\"slider\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"02020202\",\"type\":\"Switch\",\"visibility\":true,\"label\":\"Roller Shutter\",\"icon\":\"rollershutter\",\"mappings\":[],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/DemoShutter\",\"state\":\"NULL\",\"type\":\"Rollershutter\",\"name\":\"DemoShutter\",\"label\":\"Roller Shutter\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"02020203\",\"type\":\"Slider\",\"visibility\":true,\"label\":\"Blinds [- %]\",\"icon\":\"rollershutter\",\"mappings\":[],\"switchSupport\":false,\"sendFrequency\":0,\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/DemoBlinds\",\"state\":\"NULL\",\"stateDescription\":{\"pattern\":\"%d %%\",\"readOnly\":false,\"options\":[]},\"type\":\"Dimmer\",\"name\":\"DemoBlinds\",\"label\":\"Blinds\",\"category\":\"rollershutter\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]}]},{\"widgetId\":\"020203\",\"type\":\"Frame\",\"visibility\":true,\"label\":\"Map/Location\",\"icon\":\"frame\",\"mappings\":[],\"widgets\":[{\"widgetId\":\"02020300\",\"type\":\"Mapview\",\"visibility\":true,\"label\":\"Brandenburg Gate Berlin\",\"icon\":\"movecontrol\",\"mappings\":[],\"height\":10,\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/DemoLocation\",\"state\":\"52.5200066,13.4049540\",\"type\":\"Location\",\"name\":\"DemoLocation\",\"label\":\"Brandenburg Gate Berlin\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]}]}]},\"widgets\":[]},{\"widgetId\":\"0203\",\"type\":\"Text\",\"visibility\":true,\"label\":\"Multimedia\",\"icon\":\"video\",\"mappings\":[],\"linkedPage\":{\"id\":\"0203\",\"title\":\"Multimedia\",\"icon\":\"video\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/0203\",\"leaf\":false,\"timeout\":false,\"widgets\":[{\"widgetId\":\"020300\",\"type\":\"Frame\",\"visibility\":true,\"label\":\"Radio Control\",\"icon\":\"frame\",\"mappings\":[],\"widgets\":[{\"widgetId\":\"02030000\",\"type\":\"Selection\",\"visibility\":true,\"label\":\"Radio\",\"icon\":\"network\",\"mappings\":[{\"command\":\"0\",\"label\":\"off\"},{\"command\":\"1\",\"label\":\"HR3\"},{\"command\":\"2\",\"label\":\"SWR3\"}],\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Radio_Station\",\"state\":\"NULL\",\"type\":\"Number\",\"name\":\"Radio_Station\",\"label\":\"Radio\",\"category\":\"network\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]},{\"widgetId\":\"02030001\",\"type\":\"Slider\",\"visibility\":true,\"label\":\"Volume [- %]\",\"icon\":\"soundvolume\",\"mappings\":[],\"switchSupport\":false,\"sendFrequency\":0,\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/Volume\",\"state\":\"NULL\",\"stateDescription\":{\"pattern\":\"%.1f %%\",\"readOnly\":false,\"options\":[]},\"type\":\"Dimmer\",\"name\":\"Volume\",\"label\":\"Volume\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]}]},{\"widgetId\":\"020301\",\"type\":\"Frame\",\"visibility\":true,\"label\":\"Multimedia Widgets\",\"icon\":\"frame\",\"mappings\":[],\"widgets\":[{\"widgetId\":\"02030100\",\"type\":\"Image\",\"visibility\":true,\"label\":\"openHAB\",\"icon\":\"image\",\"mappings\":[],\"url\":\"http://192.168.1.20:8080/proxy?sitemap=demo.sitemap&widgetId=02030100\",\"linkedPage\":{\"id\":\"02030100\",\"title\":\"openHAB\",\"icon\":\"image\",\"link\":\"http://192.168.1.20:8080/rest/sitemaps/demo/02030100\",\"leaf\":true,\"timeout\":false,\"widgets\":[{\"widgetId\":\"0203010000\",\"type\":\"Text\",\"visibility\":true,\"label\":\"https://www.openHAB.org\",\"icon\":\"icon\",\"mappings\":[],\"widgets\":[]}]},\"widgets\":[]},{\"widgetId\":\"02030101\",\"type\":\"Video\",\"visibility\":true,\"label\":\"\",\"icon\":\"video\",\"mappings\":[],\"url\":\"http://192.168.1.20:8080/proxy?sitemap=demo.sitemap&widgetId=02030101\",\"widgets\":[]},{\"widgetId\":\"02030102\",\"type\":\"Webview\",\"visibility\":true,\"label\":\"\",\"icon\":\"webview\",\"mappings\":[],\"height\":8,\"url\":\"https://en.m.wikipedia.org/w/index.php?title=Main_Page\",\"widgets\":[]},{\"widgetId\":\"02030103\",\"type\":\"Image\",\"visibility\":true,\"label\":\"Image URL [https://www.fillmurray.com/320/240]\",\"icon\":\"image\",\"mappings\":[],\"url\":\"http://192.168.1.20:8080/proxy?sitemap=demo.sitemap&widgetId=02030103\",\"item\":{\"link\":\"http://192.168.1.20:8080/rest/items/ImageURL\",\"state\":\"https://www.fillmurray.com/320/240\",\"stateDescription\":{\"pattern\":\"%s\",\"readOnly\":false,\"options\":[]},\"type\":\"String\",\"name\":\"ImageURL\",\"label\":\"Image URL\",\"tags\":[],\"groupNames\":[]},\"widgets\":[]}]}]},\"widgets\":[]}]}]}}";
//const char* a PROGMEM = "Alpha\0Bravo\0Charlie";
//const char* b[3] = {&a[0], &a[6], &a[12]}; //OK
//const char* c[3] PROGMEM = {&a[0], &a[6], &a[12]}; // declaration causes ESP12E not to start
void printVariantContent(ARDUINOJSON_NAMESPACE::VariantContent &vc, uint8_t type) {
switch (type) {
case ARDUINOJSON_NAMESPACE::VALUE_IS_FLOAT:
Serial.printf_P(PSTR("%f\n"), (float)vc.asFloat); break;
case ARDUINOJSON_NAMESPACE::VALUE_IS_LINKED_STRING:
case ARDUINOJSON_NAMESPACE::VALUE_IS_OWNED_STRING:
Serial.printf_P(PSTR("%s\n"), vc.asString); break;
//case ARDUINOJSON_NAMESPACE::VALUE_IS_OWNED_RAW:
//case ARDUINOJSON_NAMESPACE::VALUE_IS_LINKED_RAW:
case ARDUINOJSON_NAMESPACE::VALUE_IS_NEGATIVE_INTEGER:
case ARDUINOJSON_NAMESPACE::VALUE_IS_POSITIVE_INTEGER:
case ARDUINOJSON_NAMESPACE::VALUE_IS_BOOLEAN:
Serial.printf_P(PSTR("%d\n"), (int)vc.asInteger); break;
default:
Serial.println(); break;
}
}
void stringPoolToString(const char *begin, const char *end) {
String s = F("const char[] PROGMEM = \"");
for (const char *p = begin; p < end; p++)
if (*p == '\0') s += "\\0";
else s += *p;
s += F("\";");
Serial.println(s.c_str());
}
void iterateVariants(ARDUINOJSON_NAMESPACE::VariantSlot *v, int depth) {
// _begin _end
// v v
// +-------------+--------------+
// | strings... | ...variants |
// +-------------+--------------+
// ^
// _left _right
ARDUINOJSON_NAMESPACE::VariantData* vd = v->data();
if (vd->isCollection())
v = vd->asCollection().head();
for (ARDUINOJSON_NAMESPACE::VariantSlot* s = v; s; s = s->next()) {
const char *key = (s->key()) ? s->key() : PSTR("NULL");
Serial.printf_P(PSTR("Key: %s (0x%p) - flags: 0x%0x - value: "), key, s->key(), s->flags());
ARDUINOJSON_NAMESPACE::VariantData* vd = s->data();
if (vd->isCollection()) {
const char* txt = (vd->isArray()) ? PSTR("ARRAY") : PSTR("OBJECT");
Serial.println(txt);
iterateVariants(s, ++depth);
} else printVariantContent(vd->content(), vd->flags());
}
yield();
}
void setup() {
#ifdef ARDUINOJSON_EMBEDDED_MODE
char * a = "L";
#endif
SetConsoleOutputCP(CP_UTF8);
// Enable buffering to prevent VS from chopping up UTF-8 byte sequences
//setvbuf(stdout, buf, _IOFBF, 64);
std::cout << "Ready..." << endl;
unsigned long timeA = millis();
DeserializationError error = deserializeJson(doc, json, DeserializationOption::NestingLimit(20));
unsigned long timeB = millis();
if (error) {
print(F("deserializeJson() failed: "));
println(error.c_str());
} else {
Serial.printf_P(PSTR("Mem usage: %d\n"), doc.memoryUsage());
Serial.printf_P(PSTR("Time: %ld\n"), timeB - timeA);
/*
BufferedPrint<HardwareSerial, 256> print(Serial);
print.client(Serial);
serializeJson(doc, print);
print.stop(Serial);
//serializeJson(doc, Serial);
ARDUINOJSON_NAMESPACE::VariantSlot *v = (ARDUINOJSON_NAMESPACE::VariantSlot *) doc.memoryPool().rootSlot();
iterateVariants(v, 0);
Serial.printf_P(PSTR("Mem usage: %d\n"), doc.memoryUsage());
stringPoolToString((const char *)doc.memoryPool().buffer(), doc.memoryPool().left());
*/
}
}
void loop() {
// not used in this example
}