node-red-contrib-huemagic 5.0.1 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/README.md +49 -3
  3. package/examples/Deutsch/Hue Bridge.json +98 -0
  4. package/examples/English/Hue Bridge.json +98 -0
  5. package/examples/Espa/303/261ol/Hue Bridge.json" +98 -0
  6. package/examples/Fran/303/247ais/Hue Bridge.json" +98 -0
  7. package/examples/Italiano/Hue Bridge.json +98 -0
  8. package/examples/Nederlands/Hue Bridge.json +98 -0
  9. package/examples/Polski/Hue Bridge.json +98 -0
  10. package/examples/Portugu/303/252s/Hue Bridge.json" +98 -0
  11. package/examples/T/303/274rk/303/247e/Hue Bridge.json" +98 -0
  12. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Bridge.json" +98 -0
  13. package/huemagic/hue-bridge-config.js +19 -5
  14. package/huemagic/hue-bridge.js +106 -0
  15. package/huemagic/hue-group.js +2 -3
  16. package/huemagic/hue-light.js +2 -3
  17. package/huemagic/locales/de/hue-bridge.html +19 -0
  18. package/huemagic/locales/de/hue-bridge.json +7 -1
  19. package/huemagic/locales/de/hue-group.html +1 -1
  20. package/huemagic/locales/de/hue-light.html +1 -1
  21. package/huemagic/locales/el/hue-bridge.html +19 -0
  22. package/huemagic/locales/el/hue-bridge.json +7 -1
  23. package/huemagic/locales/el/hue-group.html +1 -1
  24. package/huemagic/locales/el/hue-light.html +1 -1
  25. package/huemagic/locales/en/hue-bridge.html +19 -0
  26. package/huemagic/locales/en/hue-bridge.json +7 -1
  27. package/huemagic/locales/en/hue-group.html +1 -1
  28. package/huemagic/locales/en/hue-light.html +1 -1
  29. package/huemagic/locales/es/hue-bridge.html +19 -0
  30. package/huemagic/locales/es/hue-bridge.json +7 -1
  31. package/huemagic/locales/es/hue-group.html +1 -1
  32. package/huemagic/locales/es/hue-light.html +1 -1
  33. package/huemagic/locales/fr/hue-bridge.html +19 -0
  34. package/huemagic/locales/fr/hue-bridge.json +7 -1
  35. package/huemagic/locales/fr/hue-group.html +1 -1
  36. package/huemagic/locales/fr/hue-light.html +1 -1
  37. package/huemagic/locales/it/hue-bridge.html +19 -0
  38. package/huemagic/locales/it/hue-bridge.json +7 -1
  39. package/huemagic/locales/it/hue-group.html +1 -1
  40. package/huemagic/locales/it/hue-light.html +1 -1
  41. package/huemagic/locales/nl/hue-bridge.html +19 -0
  42. package/huemagic/locales/nl/hue-bridge.json +7 -1
  43. package/huemagic/locales/nl/hue-group.html +1 -1
  44. package/huemagic/locales/nl/hue-light.html +1 -1
  45. package/huemagic/locales/pl/hue-bridge.html +19 -0
  46. package/huemagic/locales/pl/hue-bridge.json +7 -1
  47. package/huemagic/locales/pl/hue-group.html +1 -1
  48. package/huemagic/locales/pl/hue-light.html +1 -1
  49. package/huemagic/locales/pt/hue-bridge.html +19 -0
  50. package/huemagic/locales/pt/hue-bridge.json +7 -1
  51. package/huemagic/locales/pt/hue-group.html +1 -1
  52. package/huemagic/locales/pt/hue-light.html +1 -1
  53. package/huemagic/locales/tr/hue-bridge.html +19 -0
  54. package/huemagic/locales/tr/hue-bridge.json +7 -1
  55. package/huemagic/locales/tr/hue-group.html +1 -1
  56. package/huemagic/locales/tr/hue-light.html +1 -1
  57. package/huemagic/utils/api.js +5 -5
  58. package/huemagic/utils/color.js +2 -2
  59. package/huemagic/utils/http.js +278 -0
  60. package/huemagic/utils/image.js +180 -0
  61. package/huemagic/utils/messages.js +161 -1
  62. package/huemagic/utils/syncbox.js +3 -3
  63. package/package.json +6 -5
package/CHANGELOG.md CHANGED
@@ -2,7 +2,26 @@
2
2
 
3
3
  # Changelog
4
4
 
5
- ### v5.0.1 (latest)
5
+ ### v5.1.0 (latest)
6
+
7
+ **New devices and features**
8
+
9
+ * The "Hue Bridge" node now reports the firmware state of every device behind the bridge under `msg.payload.softwareUpdates`, so a flow can react as soon as an update is waiting somewhere
10
+ * The "Hue Bridge" node now reports the location of the bridge under `msg.payload.location` — including the sunrise and sunset it calculates — and who is at home under `msg.payload.presence`
11
+ * The "Hue Bridge" node now reports the WiFi connection of a Hue Bridge Pro under `msg.payload.wifi`, including the signal strength
12
+ * The "Hue Bridge" node can start the device search of the bridge with `msg.payload.searchDevices` — optionally for certain serial numbers — and reports its state under `msg.payload.deviceSearch`
13
+ * The "Hue Bridge" node lists the entertainment areas of the bridge under `msg.payload.entertainmentAreas` and can start and stop them with `msg.payload.entertainment`
14
+ * The "Hue Bridge" node lists the service groups of a Hue Bridge Pro under `msg.payload.serviceGroups`
15
+ * The example flow of the "Hue Bridge" node shows the device search and the entertainment areas, in all ten languages
16
+
17
+ **Under the hood**
18
+
19
+ * The colors of an image are read by HueMagic itself instead of by `get-image-colors`, which dragged the abandoned `request` package and 108 other dependencies behind it. PNG, JPEG, GIF and SVG are read as before — from a path or from the web — and `npm audit` is clean again
20
+ * HueMagic speaks HTTP itself instead of through `axios`. The bridge and the sync box are still talked to directly, while the bridge discovery — and now also an image loaded from the web — go through `HTTPS_PROXY` / `HTTP_PROXY` and respect `NO_PROXY`
21
+ * All remaining dependencies were updated to their current releases
22
+ * HueMagic installs 21 instead of 133 packages, and `npm audit` reports no vulnerabilities
23
+
24
+ ### v5.0.1
6
25
 
7
26
  * The "Hue Buttons" node can now be given additional outputs, each one triggered by a range of buttons and a certain action — the start of a press, the end of a short press, the end of a long press once it lasted long enough, or repeatedly while a long press is still running. One switch can drive several flows without a Switch node behind it ([#455](https://github.com/Foddy/node-red-contrib-huemagic/pull/455)) (thx @FredBlo)
8
27
  * The status of the "Hue Buttons" node now also shows how long a button was held down
package/README.md CHANGED
@@ -13,7 +13,10 @@ HueMagic provides several input and output nodes for Node-RED and is the most in
13
13
  * Automatic color temperature & brightness setting based on the current time
14
14
  * Event-based status messages for all devices connected to the Hue Bridge
15
15
  * Pairing of new devices without app enforcement (TouchLink)
16
+ * Searches for new devices the way the Hue app does, optionally by serial number
16
17
  * Automatic firmware updates to the Hue Bridge and connected devices
18
+ * Reports pending firmware updates, the location, who is at home and the WiFi of a Hue Bridge Pro
19
+ * Lists and streams the entertainment areas of the bridge
17
20
  * Activating / deactivating of sensors, rules & automations on the Hue Bridge
18
21
  * Extended alarm and colorloop effects on light bulbs and whole groups
19
22
  * A large selection of animations and the option to create custom animations
@@ -32,6 +35,7 @@ HueMagic provides several input and output nodes for Node-RED and is the most in
32
35
  * Recalls scenes with their own transition time and brightness
33
36
  * Calibrates temperature sensors and the darkness threshold of light level sensors
34
37
  * Available in ten languages, including the complete node documentation
38
+ * Lean on dependencies: nine packages, no HTTP client and no known vulnerabilities
35
39
 
36
40
  ### Installation
37
41
  HueMagic was written for **Node.js 18+** and **Node-RED v3+**. It supports the square-shaped Hue Bridge with the **firmware 1948086000+** or higher as well as the **Hue Bridge Pro**. You can install HueMagic directly via the [Node-RED Palette Manager](https://nodered.org/docs/user-guide/editor/palette/manager) or manually using [npm / yarn](https://nodered.org/docs/user-guide/runtime/adding-nodes).
@@ -90,6 +94,22 @@ You can couple new or old devices to the bridge using a "TouchLink scan" (e.g. a
90
94
  |--|--|
91
95
  | touchLink (boolean) | Couples old or new devices with the bridge |
92
96
 
97
+ ### Search for new devices
98
+
99
+ The bridge can look for devices that have not been paired yet — the same search the Hue app performs. To do this, transfer the object `msg.payload` with the following content:
100
+
101
+ |Property|Description|
102
+ |--|--|
103
+ | searchDevices (boolean / array [string, ...] / object) | Starts the search for new devices. Pass an array of serial numbers (or an object with `searchCodes`) to look for exactly these devices |
104
+
105
+ ### Start / stop an entertainment area
106
+
107
+ The bridge can hand an entertainment area over to a streaming application (e.g. the Hue Sync app) or take it back. To do this, transfer the object `msg.payload` with the following content:
108
+
109
+ |Property|Description|
110
+ |--|--|
111
+ | entertainment (object / string) | Expects `action` with `start` or `stop` and optionally `area` with the name or the ID of the entertainment area. With only one area on the bridge, `area` can be omitted |
112
+
93
113
  ### Get all devices and resources
94
114
 
95
115
  With the "fetch" command you can output a list of specific devices that are currently connected to the bridge. To do this, transfer the object `msg.payload` with the following content:
@@ -149,6 +169,13 @@ The status reports of the "Hue Bridge" node are dynamic. Although they follow a
149
169
  | users (array [object, ...]) | List of all users on the bridge (array with objects) |
150
170
  | updated (string) | Time of the last update of the resource by HueMagic (ISO 8601) |
151
171
  | model (object) | Contains the model information of the bridge under `id`, `manufacturer` and `name` |
172
+ | softwareUpdates (object) | Firmware state of the devices behind the bridge under `pending` (number of devices waiting for an update) and `devices` (list of these devices) |
173
+ | location (object) | Location of the bridge under `configured`, `sunriseTime`, `sunsetTime` and `dayType`, as far as the bridge knows it |
174
+ | presence (object) | Presence of the geofence clients under `atHome` (is anybody at home?) and `clients` (list of the clients with `id`, `name` and `atHome`) |
175
+ | wifi (object / boolean) | WiFi connection of the Hue Bridge Pro under `status`, `macAddress`, `signalStrength` and `signalValue`, or `false` on a bridge without WiFi |
176
+ | deviceSearch (object / boolean) | State of the device search under `status` and `searching`, or `false` if the bridge does not offer it |
177
+ | entertainmentAreas (array [object, ...]) | All entertainment areas of the bridge with `id`, `name`, `type`, `status`, `streaming` and the number of `lights` |
178
+ | serviceGroups (array [object, ...]) | Service groups of a Hue Bridge Pro with `id`, `name`, `archetype` and the `services` they bundle |
152
179
 
153
180
  #### Fetch results under `msg.results` (optional)
154
181
 
@@ -286,7 +313,7 @@ In addition to simply switching it on and off, there are also many other options
286
313
  | xyColor (object {x [float], y [float]}) | Color value in the XY color format in the form of an object |
287
314
  | gradient (object {hex […]}) | An object with a supported color object (e.g. `hex`, `rgb`, ...) and several colors to set a gradient to supported lights. An optional `mode` spreads the colors as `interpolated_palette`, `interpolated_palette_mirrored`, `random_pixelated` or `segmented_palette` |
288
315
  | mixColor (object) | A color to be mixed with the current light color. Can accept `color`, `hex`, `rgb` or `xyColor` objects and optionally `amount` (int) to indicate the mixing ratio in percent |
289
- | image (string) | Path of an image (local or on the web) to set the current color of the light to the average color of the image |
316
+ | image (string) | Path of an image (local or on the web, PNG, JPEG, GIF or SVG) to set the current color of the light to the average color of the image |
290
317
  | saturation (int) | Percentage of the saturation of the current color (beta) |
291
318
  | colorTemp (int / string) | Value between 153 and 500 to set the color temperature of the light or the values `cold`, `normal`, `warm`, `hot` and `auto` - where `auto` is the color temperature based on the current time |
292
319
  | incrementColorTemp (int / boolean) | Value by how much the color temperature should be warmer or `true` to make the color temperature warmer in steps of 50 |
@@ -393,7 +420,7 @@ In addition to simply switching it on and off, there are also many other options
393
420
  | hex (string) | Color value in hexadecimal in the form of a string |
394
421
  | rgb (array [0,0,0]) | Color value in RGB format in the form of an array |
395
422
  | xyColor (object {x [float], y [float]}) | Color value in the XY color format in the form of an object |
396
- | image (string) | Path of an image (local or on the web) to set the current color of the group to the average color of the image |
423
+ | image (string) | Path of an image (local or on the web, PNG, JPEG, GIF or SVG) to set the current color of the group to the average color of the image |
397
424
  | colorTemp (int / string) | Value between 153 and 500 to set the color temperature of the group or the values `cold`, `normal`, `warm`, `hot` and `auto` - where `auto` is the color temperature based on the current time |
398
425
  | transitionTime (float) | Transition time of the current setting in seconds. If `0` is passed, the group changes to the desired setting immediately. If you pass it to `3`, the group changes to the desired setting with a slight transition in the next 3 seconds |
399
426
  | colorloop (float) | Plays a “colorloop” animation for the selected duration in seconds and then changes back to the group's original state |
@@ -1191,7 +1218,26 @@ If the status of the node has changed via a certain command, the entire command
1191
1218
 
1192
1219
  # Changelog
1193
1220
 
1194
- ### v5.0.1 (latest)
1221
+ ### v5.1.0 (latest)
1222
+
1223
+ **New devices and features**
1224
+
1225
+ * The "Hue Bridge" node now reports the firmware state of every device behind the bridge under `msg.payload.softwareUpdates`, so a flow can react as soon as an update is waiting somewhere
1226
+ * The "Hue Bridge" node now reports the location of the bridge under `msg.payload.location` — including the sunrise and sunset it calculates — and who is at home under `msg.payload.presence`
1227
+ * The "Hue Bridge" node now reports the WiFi connection of a Hue Bridge Pro under `msg.payload.wifi`, including the signal strength
1228
+ * The "Hue Bridge" node can start the device search of the bridge with `msg.payload.searchDevices` — optionally for certain serial numbers — and reports its state under `msg.payload.deviceSearch`
1229
+ * The "Hue Bridge" node lists the entertainment areas of the bridge under `msg.payload.entertainmentAreas` and can start and stop them with `msg.payload.entertainment`
1230
+ * The "Hue Bridge" node lists the service groups of a Hue Bridge Pro under `msg.payload.serviceGroups`
1231
+ * The example flow of the "Hue Bridge" node shows the device search and the entertainment areas, in all ten languages
1232
+
1233
+ **Under the hood**
1234
+
1235
+ * The colors of an image are read by HueMagic itself instead of by `get-image-colors`, which dragged the abandoned `request` package and 108 other dependencies behind it. PNG, JPEG, GIF and SVG are read as before — from a path or from the web — and `npm audit` is clean again
1236
+ * HueMagic speaks HTTP itself instead of through `axios`. The bridge and the sync box are still talked to directly, while the bridge discovery — and now also an image loaded from the web — go through `HTTPS_PROXY` / `HTTP_PROXY` and respect `NO_PROXY`
1237
+ * All remaining dependencies were updated to their current releases
1238
+ * HueMagic installs 21 instead of 133 packages, and `npm audit` reports no vulnerabilities
1239
+
1240
+ ### v5.0.1
1195
1241
 
1196
1242
  * The "Hue Buttons" node can now be given additional outputs, each one triggered by a range of buttons and a certain action — the start of a press, the end of a short press, the end of a long press once it lasted long enough, or repeatedly while a long press is still running. One switch can drive several flows without a Switch node behind it ([#455](https://github.com/Foddy/node-red-contrib-huemagic/pull/455)) (thx @FredBlo)
1197
1243
  * The status of the "Hue Buttons" node now also shows how long a button was held down
@@ -252,5 +252,103 @@
252
252
  ]
253
253
  ],
254
254
  "icon": "node-red/alert.svg"
255
+ },
256
+ {
257
+ "id": "c1a7f4b2d3e08a11",
258
+ "type": "comment",
259
+ "z": "bf04a073.be4428",
260
+ "name": "Nach neuen Geräten suchen",
261
+ "info": "",
262
+ "x": 140,
263
+ "y": 600,
264
+ "wires": []
265
+ },
266
+ {
267
+ "id": "b2c8e5a1f4d09b22",
268
+ "type": "inject",
269
+ "z": "bf04a073.be4428",
270
+ "name": "Gerätesuche starten",
271
+ "props": [
272
+ {
273
+ "p": "payload"
274
+ }
275
+ ],
276
+ "repeat": "",
277
+ "crontab": "",
278
+ "once": false,
279
+ "onceDelay": 0.1,
280
+ "topic": "",
281
+ "payload": "{\"searchDevices\":true}",
282
+ "payloadType": "json",
283
+ "x": 150,
284
+ "y": 640,
285
+ "wires": [
286
+ [
287
+ "ea4668e7.fac4f"
288
+ ]
289
+ ],
290
+ "icon": "node-red-contrib-huemagic/hue-bridge.svg"
291
+ },
292
+ {
293
+ "id": "d3e9f6b2a5c10c33",
294
+ "type": "comment",
295
+ "z": "bf04a073.be4428",
296
+ "name": "Entertainment-Bereiche",
297
+ "info": "",
298
+ "x": 130,
299
+ "y": 700,
300
+ "wires": []
301
+ },
302
+ {
303
+ "id": "e4f0a7c3b6d21d44",
304
+ "type": "inject",
305
+ "z": "bf04a073.be4428",
306
+ "name": "Entertainment-Bereich starten",
307
+ "props": [
308
+ {
309
+ "p": "payload"
310
+ }
311
+ ],
312
+ "repeat": "",
313
+ "crontab": "",
314
+ "once": false,
315
+ "onceDelay": 0.1,
316
+ "topic": "",
317
+ "payload": "{\"entertainment\":{\"action\":\"start\"}}",
318
+ "payloadType": "json",
319
+ "x": 160,
320
+ "y": 740,
321
+ "wires": [
322
+ [
323
+ "ea4668e7.fac4f"
324
+ ]
325
+ ],
326
+ "icon": "node-red-contrib-huemagic/hue-group.svg"
327
+ },
328
+ {
329
+ "id": "f5a1b8d4c7e32e55",
330
+ "type": "inject",
331
+ "z": "bf04a073.be4428",
332
+ "name": "Entertainment-Bereich stoppen",
333
+ "props": [
334
+ {
335
+ "p": "payload"
336
+ }
337
+ ],
338
+ "repeat": "",
339
+ "crontab": "",
340
+ "once": false,
341
+ "onceDelay": 0.1,
342
+ "topic": "",
343
+ "payload": "{\"entertainment\":{\"action\":\"stop\"}}",
344
+ "payloadType": "json",
345
+ "x": 160,
346
+ "y": 780,
347
+ "wires": [
348
+ [
349
+ "ea4668e7.fac4f"
350
+ ]
351
+ ],
352
+ "icon": "node-red-contrib-huemagic/hue-group.svg"
255
353
  }
256
354
  ]
@@ -252,5 +252,103 @@
252
252
  ]
253
253
  ],
254
254
  "icon": "node-red/alert.svg"
255
+ },
256
+ {
257
+ "id": "c1a7f4b2d3e08a11",
258
+ "type": "comment",
259
+ "z": "bf04a073.be4428",
260
+ "name": "Search for new devices",
261
+ "info": "",
262
+ "x": 140,
263
+ "y": 600,
264
+ "wires": []
265
+ },
266
+ {
267
+ "id": "b2c8e5a1f4d09b22",
268
+ "type": "inject",
269
+ "z": "bf04a073.be4428",
270
+ "name": "Start the device search",
271
+ "props": [
272
+ {
273
+ "p": "payload"
274
+ }
275
+ ],
276
+ "repeat": "",
277
+ "crontab": "",
278
+ "once": false,
279
+ "onceDelay": 0.1,
280
+ "topic": "",
281
+ "payload": "{\"searchDevices\":true}",
282
+ "payloadType": "json",
283
+ "x": 150,
284
+ "y": 640,
285
+ "wires": [
286
+ [
287
+ "ea4668e7.fac4f"
288
+ ]
289
+ ],
290
+ "icon": "node-red-contrib-huemagic/hue-bridge.svg"
291
+ },
292
+ {
293
+ "id": "d3e9f6b2a5c10c33",
294
+ "type": "comment",
295
+ "z": "bf04a073.be4428",
296
+ "name": "Entertainment areas",
297
+ "info": "",
298
+ "x": 130,
299
+ "y": 700,
300
+ "wires": []
301
+ },
302
+ {
303
+ "id": "e4f0a7c3b6d21d44",
304
+ "type": "inject",
305
+ "z": "bf04a073.be4428",
306
+ "name": "Start entertainment area",
307
+ "props": [
308
+ {
309
+ "p": "payload"
310
+ }
311
+ ],
312
+ "repeat": "",
313
+ "crontab": "",
314
+ "once": false,
315
+ "onceDelay": 0.1,
316
+ "topic": "",
317
+ "payload": "{\"entertainment\":{\"action\":\"start\"}}",
318
+ "payloadType": "json",
319
+ "x": 160,
320
+ "y": 740,
321
+ "wires": [
322
+ [
323
+ "ea4668e7.fac4f"
324
+ ]
325
+ ],
326
+ "icon": "node-red-contrib-huemagic/hue-group.svg"
327
+ },
328
+ {
329
+ "id": "f5a1b8d4c7e32e55",
330
+ "type": "inject",
331
+ "z": "bf04a073.be4428",
332
+ "name": "Stop entertainment area",
333
+ "props": [
334
+ {
335
+ "p": "payload"
336
+ }
337
+ ],
338
+ "repeat": "",
339
+ "crontab": "",
340
+ "once": false,
341
+ "onceDelay": 0.1,
342
+ "topic": "",
343
+ "payload": "{\"entertainment\":{\"action\":\"stop\"}}",
344
+ "payloadType": "json",
345
+ "x": 160,
346
+ "y": 780,
347
+ "wires": [
348
+ [
349
+ "ea4668e7.fac4f"
350
+ ]
351
+ ],
352
+ "icon": "node-red-contrib-huemagic/hue-group.svg"
255
353
  }
256
354
  ]
@@ -252,5 +252,103 @@
252
252
  ]
253
253
  ],
254
254
  "icon": "node-red/alert.svg"
255
+ },
256
+ {
257
+ "id": "c1a7f4b2d3e08a11",
258
+ "type": "comment",
259
+ "z": "bf04a073.be4428",
260
+ "name": "Buscar dispositivos nuevos",
261
+ "info": "",
262
+ "x": 140,
263
+ "y": 600,
264
+ "wires": []
265
+ },
266
+ {
267
+ "id": "b2c8e5a1f4d09b22",
268
+ "type": "inject",
269
+ "z": "bf04a073.be4428",
270
+ "name": "Iniciar la búsqueda de dispositivos",
271
+ "props": [
272
+ {
273
+ "p": "payload"
274
+ }
275
+ ],
276
+ "repeat": "",
277
+ "crontab": "",
278
+ "once": false,
279
+ "onceDelay": 0.1,
280
+ "topic": "",
281
+ "payload": "{\"searchDevices\":true}",
282
+ "payloadType": "json",
283
+ "x": 150,
284
+ "y": 640,
285
+ "wires": [
286
+ [
287
+ "ea4668e7.fac4f"
288
+ ]
289
+ ],
290
+ "icon": "node-red-contrib-huemagic/hue-bridge.svg"
291
+ },
292
+ {
293
+ "id": "d3e9f6b2a5c10c33",
294
+ "type": "comment",
295
+ "z": "bf04a073.be4428",
296
+ "name": "Zonas de entretenimiento",
297
+ "info": "",
298
+ "x": 130,
299
+ "y": 700,
300
+ "wires": []
301
+ },
302
+ {
303
+ "id": "e4f0a7c3b6d21d44",
304
+ "type": "inject",
305
+ "z": "bf04a073.be4428",
306
+ "name": "Iniciar la zona de entretenimiento",
307
+ "props": [
308
+ {
309
+ "p": "payload"
310
+ }
311
+ ],
312
+ "repeat": "",
313
+ "crontab": "",
314
+ "once": false,
315
+ "onceDelay": 0.1,
316
+ "topic": "",
317
+ "payload": "{\"entertainment\":{\"action\":\"start\"}}",
318
+ "payloadType": "json",
319
+ "x": 160,
320
+ "y": 740,
321
+ "wires": [
322
+ [
323
+ "ea4668e7.fac4f"
324
+ ]
325
+ ],
326
+ "icon": "node-red-contrib-huemagic/hue-group.svg"
327
+ },
328
+ {
329
+ "id": "f5a1b8d4c7e32e55",
330
+ "type": "inject",
331
+ "z": "bf04a073.be4428",
332
+ "name": "Detener la zona de entretenimiento",
333
+ "props": [
334
+ {
335
+ "p": "payload"
336
+ }
337
+ ],
338
+ "repeat": "",
339
+ "crontab": "",
340
+ "once": false,
341
+ "onceDelay": 0.1,
342
+ "topic": "",
343
+ "payload": "{\"entertainment\":{\"action\":\"stop\"}}",
344
+ "payloadType": "json",
345
+ "x": 160,
346
+ "y": 780,
347
+ "wires": [
348
+ [
349
+ "ea4668e7.fac4f"
350
+ ]
351
+ ],
352
+ "icon": "node-red-contrib-huemagic/hue-group.svg"
255
353
  }
256
354
  ]
@@ -252,5 +252,103 @@
252
252
  ]
253
253
  ],
254
254
  "icon": "node-red/alert.svg"
255
+ },
256
+ {
257
+ "id": "c1a7f4b2d3e08a11",
258
+ "type": "comment",
259
+ "z": "bf04a073.be4428",
260
+ "name": "Rechercher de nouveaux appareils",
261
+ "info": "",
262
+ "x": 140,
263
+ "y": 600,
264
+ "wires": []
265
+ },
266
+ {
267
+ "id": "b2c8e5a1f4d09b22",
268
+ "type": "inject",
269
+ "z": "bf04a073.be4428",
270
+ "name": "Démarrer la recherche d'appareils",
271
+ "props": [
272
+ {
273
+ "p": "payload"
274
+ }
275
+ ],
276
+ "repeat": "",
277
+ "crontab": "",
278
+ "once": false,
279
+ "onceDelay": 0.1,
280
+ "topic": "",
281
+ "payload": "{\"searchDevices\":true}",
282
+ "payloadType": "json",
283
+ "x": 150,
284
+ "y": 640,
285
+ "wires": [
286
+ [
287
+ "ea4668e7.fac4f"
288
+ ]
289
+ ],
290
+ "icon": "node-red-contrib-huemagic/hue-bridge.svg"
291
+ },
292
+ {
293
+ "id": "d3e9f6b2a5c10c33",
294
+ "type": "comment",
295
+ "z": "bf04a073.be4428",
296
+ "name": "Zones de divertissement",
297
+ "info": "",
298
+ "x": 130,
299
+ "y": 700,
300
+ "wires": []
301
+ },
302
+ {
303
+ "id": "e4f0a7c3b6d21d44",
304
+ "type": "inject",
305
+ "z": "bf04a073.be4428",
306
+ "name": "Démarrer la zone de divertissement",
307
+ "props": [
308
+ {
309
+ "p": "payload"
310
+ }
311
+ ],
312
+ "repeat": "",
313
+ "crontab": "",
314
+ "once": false,
315
+ "onceDelay": 0.1,
316
+ "topic": "",
317
+ "payload": "{\"entertainment\":{\"action\":\"start\"}}",
318
+ "payloadType": "json",
319
+ "x": 160,
320
+ "y": 740,
321
+ "wires": [
322
+ [
323
+ "ea4668e7.fac4f"
324
+ ]
325
+ ],
326
+ "icon": "node-red-contrib-huemagic/hue-group.svg"
327
+ },
328
+ {
329
+ "id": "f5a1b8d4c7e32e55",
330
+ "type": "inject",
331
+ "z": "bf04a073.be4428",
332
+ "name": "Arrêter la zone de divertissement",
333
+ "props": [
334
+ {
335
+ "p": "payload"
336
+ }
337
+ ],
338
+ "repeat": "",
339
+ "crontab": "",
340
+ "once": false,
341
+ "onceDelay": 0.1,
342
+ "topic": "",
343
+ "payload": "{\"entertainment\":{\"action\":\"stop\"}}",
344
+ "payloadType": "json",
345
+ "x": 160,
346
+ "y": 780,
347
+ "wires": [
348
+ [
349
+ "ea4668e7.fac4f"
350
+ ]
351
+ ],
352
+ "icon": "node-red-contrib-huemagic/hue-group.svg"
255
353
  }
256
354
  ]
@@ -252,5 +252,103 @@
252
252
  ]
253
253
  ],
254
254
  "icon": "node-red/alert.svg"
255
+ },
256
+ {
257
+ "id": "c1a7f4b2d3e08a11",
258
+ "type": "comment",
259
+ "z": "bf04a073.be4428",
260
+ "name": "Cercare nuovi dispositivi",
261
+ "info": "",
262
+ "x": 140,
263
+ "y": 600,
264
+ "wires": []
265
+ },
266
+ {
267
+ "id": "b2c8e5a1f4d09b22",
268
+ "type": "inject",
269
+ "z": "bf04a073.be4428",
270
+ "name": "Avviare la ricerca dei dispositivi",
271
+ "props": [
272
+ {
273
+ "p": "payload"
274
+ }
275
+ ],
276
+ "repeat": "",
277
+ "crontab": "",
278
+ "once": false,
279
+ "onceDelay": 0.1,
280
+ "topic": "",
281
+ "payload": "{\"searchDevices\":true}",
282
+ "payloadType": "json",
283
+ "x": 150,
284
+ "y": 640,
285
+ "wires": [
286
+ [
287
+ "ea4668e7.fac4f"
288
+ ]
289
+ ],
290
+ "icon": "node-red-contrib-huemagic/hue-bridge.svg"
291
+ },
292
+ {
293
+ "id": "d3e9f6b2a5c10c33",
294
+ "type": "comment",
295
+ "z": "bf04a073.be4428",
296
+ "name": "Aree entertainment",
297
+ "info": "",
298
+ "x": 130,
299
+ "y": 700,
300
+ "wires": []
301
+ },
302
+ {
303
+ "id": "e4f0a7c3b6d21d44",
304
+ "type": "inject",
305
+ "z": "bf04a073.be4428",
306
+ "name": "Avviare l'area entertainment",
307
+ "props": [
308
+ {
309
+ "p": "payload"
310
+ }
311
+ ],
312
+ "repeat": "",
313
+ "crontab": "",
314
+ "once": false,
315
+ "onceDelay": 0.1,
316
+ "topic": "",
317
+ "payload": "{\"entertainment\":{\"action\":\"start\"}}",
318
+ "payloadType": "json",
319
+ "x": 160,
320
+ "y": 740,
321
+ "wires": [
322
+ [
323
+ "ea4668e7.fac4f"
324
+ ]
325
+ ],
326
+ "icon": "node-red-contrib-huemagic/hue-group.svg"
327
+ },
328
+ {
329
+ "id": "f5a1b8d4c7e32e55",
330
+ "type": "inject",
331
+ "z": "bf04a073.be4428",
332
+ "name": "Arrestare l'area entertainment",
333
+ "props": [
334
+ {
335
+ "p": "payload"
336
+ }
337
+ ],
338
+ "repeat": "",
339
+ "crontab": "",
340
+ "once": false,
341
+ "onceDelay": 0.1,
342
+ "topic": "",
343
+ "payload": "{\"entertainment\":{\"action\":\"stop\"}}",
344
+ "payloadType": "json",
345
+ "x": 160,
346
+ "y": 780,
347
+ "wires": [
348
+ [
349
+ "ea4668e7.fac4f"
350
+ ]
351
+ ],
352
+ "icon": "node-red-contrib-huemagic/hue-group.svg"
255
353
  }
256
354
  ]