소스 검색

additiona heating valves implemented

tags/v1.3.0
Dirk Alders 1 년 전
부모
커밋
dacabbdde5
4개의 변경된 파일124개의 추가작업 그리고 5개의 파일을 삭제
  1. 11
    4
      config_example/config.py
  2. 43
    1
      function/first_floor_east.py
  3. 62
    0
      function/first_floor_west.py
  4. 8
    0
      topics.py

+ 11
- 4
config_example/config.py 파일 보기

@@ -21,9 +21,16 @@ CHRISTMAS = True
21 21
 USER_ON_TIME_STAIRWAYS = 100
22 22
 
23 23
 DEFAULT_TEMPERATURE = {
24
-    TOPIC_FFE_SLEEP_HEATING_VALVE_ZIGBEE: 21.5,
25
-    TOPIC_GFW_DIRK_HEATING_VALVE_ZIGBEE: 25,
26
-    TOPIC_GFW_MARION_HEATING_VALVE_ZIGBEE: 22,
27
-    TOPIC_FFW_BATH_HEATING_VALVE_ZIGBEE: 23
24
+    # GFW
25
+    TOPIC_GFW_DIRK_HEATING_VALVE_ZIGBEE: 21.5,
26
+    TOPIC_GFW_MARION_HEATING_VALVE_ZIGBEE: 21.5,
27
+    # FFW
28
+    TOPIC_FFW_BATH_HEATING_VALVE_ZIGBEE: 21.5,
29
+    TOPIC_FFW_LIVINGROOM_HEATING_VALVE_ZIGBEE: 21.5,
30
+    TOPIC_FFW_JULIAN_HEATING_VALVE_ZIGBEE: 21.5,
31
+    TOPIC_FFW_SLEEP_HEATING_VALVE_ZIGBEE: 21.5,
32
+    # FFE
33
+    TOPIC_FFE_DININGROOM_HEATING_VALVE_ZIGBEE: 21.5,
34
+    TOPIC_FFE_SLEEP_HEATING_VALVE_ZIGBEE: 21.5
28 35
 }
29 36
 

+ 43
- 1
function/first_floor_east.py 파일 보기

@@ -34,12 +34,14 @@ class first_floor_east_floor(room):
34 34
         # Device initialisation
35 35
         #
36 36
         # http://shelly1l-3C6105E4E629
37
+        # main light
37 38
         self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFE_FLOOR_MAIN_LIGHT_SHELLY)
38 39
         super().__init__(mqtt_client)
39 40
 
40 41
         #
41 42
         # Virtual Device Interface
42 43
         #
44
+        # main light
43 45
         self.main_light = videv_switching(
44 46
             mqtt_client, config.TOPIC_FFE_FLOOR_MAIN_LIGHT_VIDEV,
45 47
             self.main_light_shelly, devices.shelly.KEY_OUTPUT_0
@@ -52,8 +54,10 @@ class first_floor_east_kitchen(room):
52 54
         # Device initialisation
53 55
         #
54 56
         # http://shelly1l-8CAAB5616C01
57
+        # main light
55 58
         self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFE_KITCHEN_MAIN_LIGHT_SHELLY)
56 59
         # http://shelly1-e89f6d85a466/
60
+        # circulation pump
57 61
         self.circulation_pump_shelly = devices.shelly(mqtt_client, config.TOPIC_FFE_KITCHEN_CIRCULATION_PUMP_SHELLY)
58 62
 
59 63
         super().__init__(mqtt_client)
@@ -61,16 +65,19 @@ class first_floor_east_kitchen(room):
61 65
         #
62 66
         # Functionality initialisation
63 67
         #
68
+        # circulation pump
64 69
         self.circulation_pump = timer_on_activation(self.circulation_pump_shelly, devices.shelly.KEY_OUTPUT_0, 10*60)
65 70
         self.circulation_pump_shelly.add_callback(devices.shelly.KEY_OUTPUT_0, True, self.main_light_shelly.flash_0_mcb, True)
66 71
 
67 72
         #
68 73
         # Virtual Device Interface
69 74
         #
75
+        # main light
70 76
         self.main_light_videv = videv_switching(
71 77
             mqtt_client, config.TOPIC_FFE_KITCHEN_MAIN_LIGHT_VIDEV,
72 78
             self.main_light_shelly, devices.shelly.KEY_OUTPUT_0
73 79
         )
80
+        # circulation pump
74 81
         self.circulation_pump_videv = videv_switching_timer(
75 82
             mqtt_client, config.TOPIC_FFE_KITCHEN_CIRCULATION_PUMP_VIDEV,
76 83
             self.circulation_pump_shelly, devices.shelly.KEY_OUTPUT_0,
@@ -86,8 +93,13 @@ class first_floor_east_dining(room):
86 93
         self.day_events = day_event((6, 0), (22, 0), 30, -30)
87 94
 
88 95
         # http://shelly1l-84CCA8ADD055
96
+        # main light
89 97
         self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFE_DININGROOM_MAIN_LIGHT_SHELLY)
98
+        # floor lamp
90 99
         self.floorlamp_powerplug = devices.silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_DININGROOM_FLOOR_LAMP_POWERPLUG)
100
+        # heating function
101
+        self.heating_valve = devices.brennenstuhl_heatingvalve(mqtt_client, config.TOPIC_FFE_DININGROOM_HEATING_VALVE_ZIGBEE)
102
+        # garland
91 103
         if config.CHRISTMAS:
92 104
             self.garland_powerplug = devices.silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_DININGROOM_GARLAND_POWERPLUG)
93 105
         super().__init__(mqtt_client)
@@ -97,19 +109,36 @@ class first_floor_east_dining(room):
97 109
         #
98 110
         self.day_events.add_callback(None, True, self.__day_events__, True)
99 111
 
112
+        # main light
100 113
         self.main_light_shelly.add_callback(devices.shelly.KEY_OUTPUT_0, None, self.floorlamp_powerplug.set_output_0_mcb, True)
101 114
 
115
+        # heating function
116
+        self.heating_function = heating_function(
117
+            self.heating_valve,
118
+            config.DEFAULT_TEMPERATURE[self.heating_valve.topic],
119
+            **get_radiator_data(self.heating_valve.topic)
120
+        )
121
+        self.heating_function.add_callback(None, None, set_radiator_data, True)
122
+
102 123
         #
103 124
         # Virtual Device Interface
104 125
         #
126
+        # main light
105 127
         self.main_light_videv = videv_switching(
106 128
             mqtt_client, config.TOPIC_FFE_DININGROOM_MAIN_LIGHT_VIDEV,
107 129
             self.main_light_shelly, devices.shelly.KEY_OUTPUT_0
108 130
         )
131
+        # floor lamp
109 132
         self.floorlamp_videv = videv_switching(
110 133
             mqtt_client, config.TOPIC_FFE_DININGROOM_FLOOR_LAMP_VIDEV,
111 134
             self.floorlamp_powerplug, devices.silvercrest_powerplug.KEY_OUTPUT_0
112 135
         )
136
+        # heating function
137
+        self.heating_function_videv = videv_heating(
138
+            mqtt_client, config.TOPIC_FFE_DININGROOM_HEATING_VALVE_VIDEV,
139
+            self.heating_function
140
+        )
141
+        # garland
113 142
         if config.CHRISTMAS:
114 143
             self.garland_videv = videv_switching(
115 144
                 mqtt_client, config.TOPIC_FFE_DININGROOM_GARLAND_VIDEV,
@@ -131,11 +160,15 @@ class first_floor_east_sleep(room):
131 160
         # Device initialisation
132 161
         #
133 162
         # http://shelly1l-E8DB84A254C7
163
+        # main light
134 164
         self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFE_SLEEP_MAIN_LIGHT_SHELLY)
135 165
         self.main_light_tradfri = devices.tradfri_light(mqtt_client, config.TOPIC_FFE_SLEEP_MAIN_LIGHT_ZIGBEE)
166
+        # bed light
136 167
         self.bed_light_di_tradfri = devices.tradfri_light(mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_DI_ZIGBEE)
137 168
         self.bed_light_ma_powerplug = devices.silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_MA_POWERPLUG)
169
+        # heating function
138 170
         self.heating_valve = devices.brennenstuhl_heatingvalve(mqtt_client, config.TOPIC_FFE_SLEEP_HEATING_VALVE_ZIGBEE)
171
+        # button
139 172
         self.button_tradfri = devices.tradfri_button(mqtt_client, config.TOPIC_FFE_SLEEP_INPUT_DEVICE)
140 173
 
141 174
         super().__init__(mqtt_client)
@@ -147,7 +180,6 @@ class first_floor_east_sleep(room):
147 180
         self.brightness_functions = brightness_choose_n_action(self.button_tradfri)
148 181
         self.brightness_functions.add(self.main_light_tradfri, self.main_light_shelly, devices.shelly.KEY_OUTPUT_0)
149 182
         self.brightness_functions.add(self.bed_light_di_tradfri, self.bed_light_di_tradfri, devices.tradfri_light.KEY_OUTPUT_0)
150
-
151 183
         # button / main light
152 184
         self.button_tradfri.add_callback(devices.tradfri_button.KEY_ACTION, devices.tradfri_button.ACTION_TOGGLE,
153 185
                                          self.main_light_shelly.toggle_output_0_mcb)
@@ -168,12 +200,14 @@ class first_floor_east_sleep(room):
168 200
         #
169 201
         # Virtual Device Interface
170 202
         #
203
+        # main light
171 204
         self.main_light_videv = videv_switch_brightness_color_temp(
172 205
             mqtt_client, config.TOPIC_FFE_SLEEP_MAIN_LIGHT_VIDEV,
173 206
             self.main_light_shelly, devices.shelly.KEY_OUTPUT_0,
174 207
             self.main_light_tradfri, devices.tradfri_light.KEY_BRIGHTNESS,
175 208
             self.main_light_tradfri, devices.tradfri_light.KEY_COLOR_TEMP
176 209
         )
210
+        # bed light
177 211
         self.bed_light_di_videv = videv_switch_brightness(
178 212
             mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_DI_VIDEV,
179 213
             self.bed_light_di_tradfri, devices.tradfri_light.KEY_OUTPUT_0,
@@ -183,10 +217,12 @@ class first_floor_east_sleep(room):
183 217
             mqtt_client, config.TOPIC_FFE_SLEEP_BED_LIGHT_MA_VIDEV,
184 218
             self.bed_light_ma_powerplug, devices.silvercrest_powerplug.KEY_OUTPUT_0
185 219
         )
220
+        # heating function
186 221
         self.heating_function_videv = videv_heating(
187 222
             mqtt_client, config.TOPIC_FFE_SLEEP_HEATING_VALVE_VIDEV,
188 223
             self.heating_function
189 224
         )
225
+        # button
190 226
         self.brightness_functions_device_videv = videv_multistate(
191 227
             mqtt_client, config.TOPIC_FFE_SLEEP_ACTIVE_BRIGHTNESS_DEVICE_VIDEV,
192 228
             brightness_choose_n_action.KEY_ACTIVE_DEVICE, self.brightness_functions, 2
@@ -199,10 +235,13 @@ class first_floor_east_living(room):
199 235
         # Device initialisation
200 236
         #
201 237
         # http://shelly1l-3C6105E3F910
238
+        # main light
202 239
         self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFE_LIVINGROOM_MAIN_LIGHT_SHELLY)
203 240
         self.main_light_tradfri = devices.tradfri_light(mqtt_client, config.TOPIC_FFE_LIVINGROOM_MAIN_LIGHT_ZIGBEE)
241
+        # floor lamp
204 242
         self.floorlamp_tradfri = devices.group(
205 243
             *[devices.tradfri_light(mqtt_client, config.TOPIC_FFE_LIVINGROOM_FLOOR_LAMP_ZIGBEE % i) for i in range(1, 7)])
244
+        # xmas tree
206 245
         if config.CHRISTMAS:
207 246
             self.powerplug_xmas_tree = devices.silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_LIVINGROOM_XMAS_TREE_POWERPLUG)
208 247
             self.powerplug_xmas_star = devices.silvercrest_powerplug(mqtt_client, config.TOPIC_FFE_LIVINGROOM_XMAS_STAR_POWERPLUG)
@@ -218,18 +257,21 @@ class first_floor_east_living(room):
218 257
         #
219 258
         # Virtual Device Interface
220 259
         #
260
+        # main light
221 261
         self.main_light_videv = videv_switch_brightness_color_temp(
222 262
             mqtt_client, config.TOPIC_FFE_LIVINGROOM_MAIN_LIGHT_VIDEV,
223 263
             self.main_light_shelly, devices.shelly.KEY_OUTPUT_0,
224 264
             self.main_light_tradfri, devices.tradfri_light.KEY_BRIGHTNESS,
225 265
             self.main_light_tradfri, devices.tradfri_light.KEY_COLOR_TEMP
226 266
         )
267
+        # floor lamp
227 268
         self.floorlamp_videv = videv_switch_brightness_color_temp(
228 269
             mqtt_client, config.TOPIC_FFE_LIVINGROOM_FLOOR_LAMP_VIDEV,
229 270
             self.floorlamp_tradfri, devices.tradfri_light.KEY_OUTPUT_0,
230 271
             self.floorlamp_tradfri, devices.tradfri_light.KEY_BRIGHTNESS,
231 272
             self.floorlamp_tradfri, devices.tradfri_light.KEY_COLOR_TEMP
232 273
         )
274
+        # xmas tree
233 275
         if config.CHRISTMAS:
234 276
             self.xmas_tree_videv = videv_switching(
235 277
                 mqtt_client, config.TOPIC_FFE_LIVINGROOM_XMAS_TREE_VIDEV,

+ 62
- 0
function/first_floor_west.py 파일 보기

@@ -33,19 +33,38 @@ class first_floor_west_julian(room):
33 33
         # Device initialisation
34 34
         #
35 35
         # http://shelly1l-3C6105E43452
36
+        # main light
36 37
         self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFW_JULIAN_MAIN_LIGHT_SHELLY)
37 38
         self.main_light_tradfri = devices.tradfri_light(mqtt_client, config.TOPIC_FFW_JULIAN_MAIN_LIGHT_ZIGBEE)
39
+        # heating function
40
+        self.heating_valve = devices.brennenstuhl_heatingvalve(mqtt_client, config.TOPIC_FFW_JULIAN_HEATING_VALVE_ZIGBEE)
38 41
         super().__init__(mqtt_client)
42
+        #
43
+        # Functionality initialisation
44
+        #
45
+        # heating function
46
+        self.heating_function = heating_function(
47
+            self.heating_valve,
48
+            config.DEFAULT_TEMPERATURE[self.heating_valve.topic],
49
+            **get_radiator_data(self.heating_valve.topic)
50
+        )
51
+        self.heating_function.add_callback(None, None, set_radiator_data, True)
39 52
 
40 53
         #
41 54
         # Virtual Device Interface
42 55
         #
56
+        # main light
43 57
         self.main_light_videv = videv_switch_brightness_color_temp(
44 58
             mqtt_client, config.TOPIC_FFW_JULIAN_MAIN_LIGHT_VIDEV,
45 59
             self.main_light_shelly, devices.shelly.KEY_OUTPUT_0,
46 60
             self.main_light_tradfri, devices.tradfri_light.KEY_BRIGHTNESS,
47 61
             self.main_light_tradfri, devices.tradfri_light.KEY_COLOR_TEMP
48 62
         )
63
+        # heating function
64
+        self.heating_function_videv = videv_heating(
65
+            mqtt_client, config.TOPIC_FFW_JULIAN_HEATING_VALVE_VIDEV,
66
+            self.heating_function
67
+        )
49 68
 
50 69
 
51 70
 class first_floor_west_bath(room):
@@ -53,8 +72,10 @@ class first_floor_west_bath(room):
53 72
         #
54 73
         # Device initialisation
55 74
         #
75
+        # heating function
56 76
         self.heating_valve = devices.brennenstuhl_heatingvalve(mqtt_client, config.TOPIC_FFW_BATH_HEATING_VALVE_ZIGBEE)
57 77
         super().__init__(mqtt_client)
78
+
58 79
         #
59 80
         # Functionality initialisation
60 81
         #
@@ -69,6 +90,7 @@ class first_floor_west_bath(room):
69 90
         #
70 91
         # Virtual Device Interface
71 92
         #
93
+        # heating function
72 94
         self.heating_function_videv = videv_heating(
73 95
             mqtt_client, config.TOPIC_FFW_BATH_HEATING_VALVE_VIDEV,
74 96
             self.heating_function
@@ -81,19 +103,39 @@ class first_floor_west_living(room):
81 103
         # Device initialisation
82 104
         #
83 105
         # http://shelly1l-84CCA8ACE6A1
106
+        # main light
84 107
         self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFW_LIVINGROOM_MAIN_LIGHT_SHELLY)
85 108
         self.main_light_tradfri = devices.tradfri_light(mqtt_client, config.TOPIC_FFW_LIVINGROOM_MAIN_LIGHT_ZIGBEE)
109
+        # heating function
110
+        self.heating_valve = devices.brennenstuhl_heatingvalve(mqtt_client, config.TOPIC_FFW_LIVINGROOM_HEATING_VALVE_ZIGBEE)
86 111
         super().__init__(mqtt_client)
87 112
 
113
+        #
114
+        # Functionality initialisation
115
+        #
116
+        # heating function
117
+        self.heating_function = heating_function(
118
+            self.heating_valve,
119
+            config.DEFAULT_TEMPERATURE[self.heating_valve.topic],
120
+            **get_radiator_data(self.heating_valve.topic)
121
+        )
122
+        self.heating_function.add_callback(None, None, set_radiator_data, True)
123
+
88 124
         #
89 125
         # Virtual Device Interface
90 126
         #
127
+        # main light
91 128
         self.main_light_videv = videv_switch_brightness_color_temp(
92 129
             mqtt_client, config.TOPIC_FFW_LIVINGROOM_MAIN_LIGHT_VIDEV,
93 130
             self.main_light_shelly, devices.shelly.KEY_OUTPUT_0,
94 131
             self.main_light_tradfri, devices.tradfri_light.KEY_BRIGHTNESS,
95 132
             self.main_light_tradfri, devices.tradfri_light.KEY_COLOR_TEMP
96 133
         )
134
+        # heating function
135
+        self.heating_function_videv = videv_heating(
136
+            mqtt_client, config.TOPIC_FFW_LIVINGROOM_HEATING_VALVE_VIDEV,
137
+            self.heating_function
138
+        )
97 139
 
98 140
 
99 141
 class first_floor_west_sleep(room):
@@ -102,15 +144,35 @@ class first_floor_west_sleep(room):
102 144
         # Device initialisation
103 145
         #
104 146
         # http://shelly1-3494546A51F2
147
+        # main light
105 148
         self.main_light_shelly = devices.shelly(mqtt_client, config.TOPIC_FFW_SLEEP_MAIN_LIGHT_SHELLY)
106 149
         self.main_light_tradfri = devices.tradfri_light(mqtt_client, config.TOPIC_FFW_SLEEP_MAIN_LIGHT_ZIGBEE)
150
+        # heating function
151
+        self.heating_valve = devices.brennenstuhl_heatingvalve(mqtt_client, config.TOPIC_FFW_SLEEP_HEATING_VALVE_ZIGBEE)
107 152
         super().__init__(mqtt_client)
108 153
 
154
+        #
155
+        # Functionality initialisation
156
+        #
157
+        # heating function
158
+        self.heating_function = heating_function(
159
+            self.heating_valve,
160
+            config.DEFAULT_TEMPERATURE[self.heating_valve.topic],
161
+            **get_radiator_data(self.heating_valve.topic)
162
+        )
163
+        self.heating_function.add_callback(None, None, set_radiator_data, True)
164
+
109 165
         #
110 166
         # Virtual Device Interface
111 167
         #
168
+        # main light
112 169
         self.main_light_videv = videv_switch_brightness(
113 170
             mqtt_client, config.TOPIC_FFW_SLEEP_MAIN_LIGHT_VIDEV,
114 171
             self.main_light_shelly, devices.shelly.KEY_OUTPUT_0,
115 172
             self.main_light_tradfri, devices.tradfri_light.KEY_BRIGHTNESS
116 173
         )
174
+        # heating function
175
+        self.heating_function_videv = videv_heating(
176
+            mqtt_client, config.TOPIC_FFW_SLEEP_HEATING_VALVE_VIDEV,
177
+            self.heating_function
178
+        )

+ 8
- 0
topics.py 파일 보기

@@ -40,6 +40,8 @@ TOPIC_GFW_DIRK_HEATING_VALVE_VIDEV = "videv/gfw/dirk/heating_valve"
40 40
 TOPIC_FFW_JULIAN_MAIN_LIGHT_SHELLY = "shellies/ffw/julian/main_light"
41 41
 TOPIC_FFW_JULIAN_MAIN_LIGHT_VIDEV = "videv/ffw/julian/main_light"
42 42
 TOPIC_FFW_JULIAN_MAIN_LIGHT_ZIGBEE = "zigbee/ffw/julian/main_light"
43
+TOPIC_FFW_JULIAN_HEATING_VALVE_ZIGBEE = "zigbee/ffw/julian/heating_valve"
44
+TOPIC_FFW_JULIAN_HEATING_VALVE_VIDEV = "videv/ffw/julian/heating_valve"
43 45
 
44 46
 # bath
45 47
 TOPIC_FFW_BATH_HEATING_VALVE_ZIGBEE = "zigbee/ffw/bath/heating_valve"
@@ -49,11 +51,15 @@ TOPIC_FFW_BATH_HEATING_VALVE_VIDEV = "videv/ffw/bath/heating_valve"
49 51
 TOPIC_FFW_LIVINGROOM_MAIN_LIGHT_SHELLY = "shellies/ffw/livingroom/main_light"
50 52
 TOPIC_FFW_LIVINGROOM_MAIN_LIGHT_VIDEV = "videv/ffw/livingroom/main_light"
51 53
 TOPIC_FFW_LIVINGROOM_MAIN_LIGHT_ZIGBEE = "zigbee/ffw/livingroom/main_light"
54
+TOPIC_FFW_LIVINGROOM_HEATING_VALVE_ZIGBEE = "zigbee/ffw/livingroom/heating_valve"
55
+TOPIC_FFW_LIVINGROOM_HEATING_VALVE_VIDEV = "videv/ffw/livingroom/heating_valve"
52 56
 
53 57
 # sleep
54 58
 TOPIC_FFW_SLEEP_MAIN_LIGHT_SHELLY = "shellies/ffw/sleep/main_light"
55 59
 TOPIC_FFW_SLEEP_MAIN_LIGHT_VIDEV = "videv/ffw/sleep/main_light"
56 60
 TOPIC_FFW_SLEEP_MAIN_LIGHT_ZIGBEE = "zigbee/ffw/sleep/main_light"
61
+TOPIC_FFW_SLEEP_HEATING_VALVE_ZIGBEE = "zigbee/ffw/sleep/heating_valve"
62
+TOPIC_FFW_SLEEP_HEATING_VALVE_VIDEV = "videv/ffw/sleep/heating_valve"
57 63
 
58 64
 
59 65
 # first floor east
@@ -74,6 +80,8 @@ TOPIC_FFE_DININGROOM_FLOOR_LAMP_POWERPLUG = "zigbee/ffe/diningroom/powerplug_flo
74 80
 TOPIC_FFE_DININGROOM_FLOOR_LAMP_VIDEV = "videv/ffe/diningroom/floorlamp"
75 81
 TOPIC_FFE_DININGROOM_GARLAND_POWERPLUG = "zigbee/ffe/diningroom/garland"
76 82
 TOPIC_FFE_DININGROOM_GARLAND_VIDEV = "videv/ffe/diningroom/garland"
83
+TOPIC_FFE_DININGROOM_HEATING_VALVE_ZIGBEE = "zigbee/ffe/diningroom/heating_valve"
84
+TOPIC_FFE_DININGROOM_HEATING_VALVE_VIDEV = "videv/ffe/diningroom/heating_valve"
77 85
 
78 86
 # sleep
79 87
 TOPIC_FFE_SLEEP_MAIN_LIGHT_SHELLY = "shellies/ffe/sleep/main_light"

Loading…
취소
저장