node-red-contrib-huemagic 4.2.2 → 5.0.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 (515) hide show
  1. package/CHANGELOG.md +89 -5
  2. package/README.md +506 -123
  3. package/examples/Deutsch/Hue Automation.json +176 -0
  4. package/examples/Deutsch/Hue Bridge.json +256 -0
  5. package/examples/Deutsch/Hue Brightness.json +150 -0
  6. package/examples/Deutsch/Hue Buttons.json +88 -0
  7. package/examples/Deutsch/Hue Contact.json +150 -0
  8. package/examples/Deutsch/Hue Group.json +658 -0
  9. package/examples/Deutsch/Hue Light.json +893 -0
  10. package/examples/Deutsch/Hue Magic.json +148 -0
  11. package/examples/Deutsch/Hue Motion.json +150 -0
  12. package/examples/Deutsch/Hue Rules.json +150 -0
  13. package/examples/Deutsch/Hue Scene.json +178 -0
  14. package/examples/Deutsch/Hue Speaker.json +274 -0
  15. package/examples/Deutsch/Hue Sync Box.json +378 -0
  16. package/examples/Deutsch/Hue Temperature.json +150 -0
  17. package/examples/English/Hue Automation.json +176 -0
  18. package/examples/{Hue Bridge.json → English/Hue Bridge.json } +1 -1
  19. package/examples/{Hue Brightness.json → English/Hue Brightness.json } +1 -1
  20. package/examples/{Hue Buttons.json → English/Hue Buttons.json } +1 -1
  21. package/examples/English/Hue Contact.json +150 -0
  22. package/examples/{Hue Group.json → English/Hue Group.json } +1 -1
  23. package/examples/{Hue Light.json → English/Hue Light.json } +1 -1
  24. package/examples/{Hue Magic.json → English/Hue Magic.json } +1 -1
  25. package/examples/{Hue Motion.json → English/Hue Motion.json } +1 -1
  26. package/examples/{Hue Rules.json → English/Hue Rules.json } +1 -1
  27. package/examples/{Hue Scene.json → English/Hue Scene.json } +1 -1
  28. package/examples/English/Hue Speaker.json +274 -0
  29. package/examples/English/Hue Sync Box.json +378 -0
  30. package/examples/{Hue Temperature.json → English/Hue Temperature.json } +1 -1
  31. package/examples/Espa/303/261ol/Hue Automation.json" +176 -0
  32. package/examples/Espa/303/261ol/Hue Bridge.json" +256 -0
  33. package/examples/Espa/303/261ol/Hue Brightness.json" +150 -0
  34. package/examples/Espa/303/261ol/Hue Buttons.json" +88 -0
  35. package/examples/Espa/303/261ol/Hue Contact.json" +150 -0
  36. package/examples/Espa/303/261ol/Hue Group.json" +658 -0
  37. package/examples/Espa/303/261ol/Hue Light.json" +893 -0
  38. package/examples/Espa/303/261ol/Hue Magic.json" +148 -0
  39. package/examples/Espa/303/261ol/Hue Motion.json" +150 -0
  40. package/examples/Espa/303/261ol/Hue Rules.json" +150 -0
  41. package/examples/Espa/303/261ol/Hue Scene.json" +178 -0
  42. package/examples/Espa/303/261ol/Hue Speaker.json" +274 -0
  43. package/examples/Espa/303/261ol/Hue Sync Box.json" +378 -0
  44. package/examples/Espa/303/261ol/Hue Temperature.json" +150 -0
  45. package/examples/Fran/303/247ais/Hue Automation.json" +176 -0
  46. package/examples/Fran/303/247ais/Hue Bridge.json" +256 -0
  47. package/examples/Fran/303/247ais/Hue Brightness.json" +150 -0
  48. package/examples/Fran/303/247ais/Hue Buttons.json" +88 -0
  49. package/examples/Fran/303/247ais/Hue Contact.json" +150 -0
  50. package/examples/Fran/303/247ais/Hue Group.json" +658 -0
  51. package/examples/Fran/303/247ais/Hue Light.json" +893 -0
  52. package/examples/Fran/303/247ais/Hue Magic.json" +148 -0
  53. package/examples/Fran/303/247ais/Hue Motion.json" +150 -0
  54. package/examples/Fran/303/247ais/Hue Rules.json" +150 -0
  55. package/examples/Fran/303/247ais/Hue Scene.json" +178 -0
  56. package/examples/Fran/303/247ais/Hue Speaker.json" +274 -0
  57. package/examples/Fran/303/247ais/Hue Sync Box.json" +378 -0
  58. package/examples/Fran/303/247ais/Hue Temperature.json" +150 -0
  59. package/examples/Italiano/Hue Automation.json +176 -0
  60. package/examples/Italiano/Hue Bridge.json +256 -0
  61. package/examples/Italiano/Hue Brightness.json +150 -0
  62. package/examples/Italiano/Hue Buttons.json +88 -0
  63. package/examples/Italiano/Hue Contact.json +150 -0
  64. package/examples/Italiano/Hue Group.json +658 -0
  65. package/examples/Italiano/Hue Light.json +893 -0
  66. package/examples/Italiano/Hue Magic.json +148 -0
  67. package/examples/Italiano/Hue Motion.json +150 -0
  68. package/examples/Italiano/Hue Rules.json +150 -0
  69. package/examples/Italiano/Hue Scene.json +178 -0
  70. package/examples/Italiano/Hue Speaker.json +274 -0
  71. package/examples/Italiano/Hue Sync Box.json +378 -0
  72. package/examples/Italiano/Hue Temperature.json +150 -0
  73. package/examples/Nederlands/Hue Automation.json +176 -0
  74. package/examples/Nederlands/Hue Bridge.json +256 -0
  75. package/examples/Nederlands/Hue Brightness.json +150 -0
  76. package/examples/Nederlands/Hue Buttons.json +88 -0
  77. package/examples/Nederlands/Hue Contact.json +150 -0
  78. package/examples/Nederlands/Hue Group.json +658 -0
  79. package/examples/Nederlands/Hue Light.json +893 -0
  80. package/examples/Nederlands/Hue Magic.json +148 -0
  81. package/examples/Nederlands/Hue Motion.json +150 -0
  82. package/examples/Nederlands/Hue Rules.json +150 -0
  83. package/examples/Nederlands/Hue Scene.json +178 -0
  84. package/examples/Nederlands/Hue Speaker.json +274 -0
  85. package/examples/Nederlands/Hue Sync Box.json +378 -0
  86. package/examples/Nederlands/Hue Temperature.json +150 -0
  87. package/examples/Polski/Hue Automation.json +176 -0
  88. package/examples/Polski/Hue Bridge.json +256 -0
  89. package/examples/Polski/Hue Brightness.json +150 -0
  90. package/examples/Polski/Hue Buttons.json +88 -0
  91. package/examples/Polski/Hue Contact.json +150 -0
  92. package/examples/Polski/Hue Group.json +658 -0
  93. package/examples/Polski/Hue Light.json +893 -0
  94. package/examples/Polski/Hue Magic.json +148 -0
  95. package/examples/Polski/Hue Motion.json +150 -0
  96. package/examples/Polski/Hue Rules.json +150 -0
  97. package/examples/Polski/Hue Scene.json +178 -0
  98. package/examples/Polski/Hue Speaker.json +274 -0
  99. package/examples/Polski/Hue Sync Box.json +378 -0
  100. package/examples/Polski/Hue Temperature.json +150 -0
  101. package/examples/Portugu/303/252s/Hue Automation.json" +176 -0
  102. package/examples/Portugu/303/252s/Hue Bridge.json" +256 -0
  103. package/examples/Portugu/303/252s/Hue Brightness.json" +150 -0
  104. package/examples/Portugu/303/252s/Hue Buttons.json" +88 -0
  105. package/examples/Portugu/303/252s/Hue Contact.json" +150 -0
  106. package/examples/Portugu/303/252s/Hue Group.json" +658 -0
  107. package/examples/Portugu/303/252s/Hue Light.json" +893 -0
  108. package/examples/Portugu/303/252s/Hue Magic.json" +148 -0
  109. package/examples/Portugu/303/252s/Hue Motion.json" +150 -0
  110. package/examples/Portugu/303/252s/Hue Rules.json" +150 -0
  111. package/examples/Portugu/303/252s/Hue Scene.json" +178 -0
  112. package/examples/Portugu/303/252s/Hue Speaker.json" +274 -0
  113. package/examples/Portugu/303/252s/Hue Sync Box.json" +378 -0
  114. package/examples/Portugu/303/252s/Hue Temperature.json" +150 -0
  115. package/examples/T/303/274rk/303/247e/Hue Automation.json" +176 -0
  116. package/examples/T/303/274rk/303/247e/Hue Bridge.json" +256 -0
  117. package/examples/T/303/274rk/303/247e/Hue Brightness.json" +150 -0
  118. package/examples/T/303/274rk/303/247e/Hue Buttons.json" +88 -0
  119. package/examples/T/303/274rk/303/247e/Hue Contact.json" +150 -0
  120. package/examples/T/303/274rk/303/247e/Hue Group.json" +658 -0
  121. package/examples/T/303/274rk/303/247e/Hue Light.json" +893 -0
  122. package/examples/T/303/274rk/303/247e/Hue Magic.json" +148 -0
  123. package/examples/T/303/274rk/303/247e/Hue Motion.json" +150 -0
  124. package/examples/T/303/274rk/303/247e/Hue Rules.json" +150 -0
  125. package/examples/T/303/274rk/303/247e/Hue Scene.json" +178 -0
  126. package/examples/T/303/274rk/303/247e/Hue Speaker.json" +274 -0
  127. package/examples/T/303/274rk/303/247e/Hue Sync Box.json" +378 -0
  128. package/examples/T/303/274rk/303/247e/Hue Temperature.json" +150 -0
  129. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Automation.json" +176 -0
  130. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Bridge.json" +256 -0
  131. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Brightness.json" +150 -0
  132. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Buttons.json" +88 -0
  133. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Contact.json" +150 -0
  134. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Group.json" +658 -0
  135. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Light.json" +893 -0
  136. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Magic.json" +148 -0
  137. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Motion.json" +150 -0
  138. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Rules.json" +150 -0
  139. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Scene.json" +178 -0
  140. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Speaker.json" +274 -0
  141. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Sync Box.json" +378 -0
  142. package/examples//316/225/316/273/316/273/316/267/316/275/316/271/316/272/316/254/Hue Temperature.json" +150 -0
  143. package/huemagic/assets/huemagic-examples.gif +0 -0
  144. package/huemagic/hue-automation.html +218 -0
  145. package/huemagic/hue-automation.js +173 -0
  146. package/huemagic/hue-bridge-config.html +39 -32
  147. package/huemagic/hue-bridge-config.js +290 -99
  148. package/huemagic/hue-bridge.html +8 -8
  149. package/huemagic/hue-bridge.js +29 -4
  150. package/huemagic/hue-brightness.html +21 -9
  151. package/huemagic/hue-brightness.js +20 -10
  152. package/huemagic/hue-buttons.html +16 -9
  153. package/huemagic/hue-buttons.js +90 -27
  154. package/huemagic/hue-contact.html +218 -0
  155. package/huemagic/hue-contact.js +209 -0
  156. package/huemagic/hue-group.html +16 -9
  157. package/huemagic/hue-group.js +141 -179
  158. package/huemagic/hue-light.html +19 -12
  159. package/huemagic/hue-light.js +222 -167
  160. package/huemagic/hue-magic.html +3 -5
  161. package/huemagic/hue-motion.html +16 -9
  162. package/huemagic/hue-motion.js +37 -8
  163. package/huemagic/hue-rules.html +16 -9
  164. package/huemagic/hue-rules.js +16 -8
  165. package/huemagic/hue-scene.html +9 -5
  166. package/huemagic/hue-scene.js +52 -16
  167. package/huemagic/hue-speaker.html +218 -0
  168. package/huemagic/hue-speaker.js +257 -0
  169. package/huemagic/hue-syncbox-config.html +123 -0
  170. package/huemagic/hue-syncbox-config.js +179 -0
  171. package/huemagic/hue-syncbox.html +82 -0
  172. package/huemagic/hue-syncbox.js +274 -0
  173. package/huemagic/hue-temperature.html +21 -9
  174. package/huemagic/hue-temperature.js +18 -10
  175. package/huemagic/icons/hue-automation.png +0 -0
  176. package/huemagic/icons/hue-automation.svg +3 -0
  177. package/huemagic/icons/hue-contact.png +0 -0
  178. package/huemagic/icons/hue-contact.svg +4 -0
  179. package/huemagic/icons/hue-speaker.png +0 -0
  180. package/huemagic/icons/hue-speaker.svg +6 -0
  181. package/huemagic/icons/hue-syncbox.png +0 -0
  182. package/huemagic/icons/hue-syncbox.svg +7 -0
  183. package/huemagic/locales/de/hue-automation.html +59 -0
  184. package/huemagic/locales/de/hue-automation.json +33 -0
  185. package/huemagic/locales/de/hue-bridge-config.json +23 -12
  186. package/huemagic/locales/de/hue-bridge.html +7 -4
  187. package/huemagic/locales/de/hue-bridge.json +9 -10
  188. package/huemagic/locales/de/hue-brightness.html +9 -6
  189. package/huemagic/locales/de/hue-brightness.json +13 -9
  190. package/huemagic/locales/de/hue-buttons.html +5 -4
  191. package/huemagic/locales/de/hue-buttons.json +22 -8
  192. package/huemagic/locales/de/hue-contact.html +67 -0
  193. package/huemagic/locales/de/hue-contact.json +35 -0
  194. package/huemagic/locales/de/hue-group.html +17 -6
  195. package/huemagic/locales/de/hue-group.json +16 -9
  196. package/huemagic/locales/de/hue-light.html +6 -6
  197. package/huemagic/locales/de/hue-light.json +17 -9
  198. package/huemagic/locales/de/hue-magic.html +1 -1
  199. package/huemagic/locales/de/hue-magic.json +6 -8
  200. package/huemagic/locales/de/hue-motion.html +4 -4
  201. package/huemagic/locales/de/hue-motion.json +14 -9
  202. package/huemagic/locales/de/hue-rules.html +2 -2
  203. package/huemagic/locales/de/hue-rules.json +10 -9
  204. package/huemagic/locales/de/hue-scene.html +11 -3
  205. package/huemagic/locales/de/hue-scene.json +9 -9
  206. package/huemagic/locales/de/hue-speaker.html +80 -0
  207. package/huemagic/locales/de/hue-speaker.json +38 -0
  208. package/huemagic/locales/de/hue-syncbox-config.html +19 -0
  209. package/huemagic/locales/de/hue-syncbox-config.json +25 -0
  210. package/huemagic/locales/de/hue-syncbox.html +86 -0
  211. package/huemagic/locales/de/hue-syncbox.json +30 -0
  212. package/huemagic/locales/de/hue-temperature.html +7 -5
  213. package/huemagic/locales/de/hue-temperature.json +13 -9
  214. package/huemagic/locales/el/hue-automation.html +59 -0
  215. package/huemagic/locales/el/hue-automation.json +33 -0
  216. package/huemagic/locales/el/hue-bridge-config.html +31 -0
  217. package/huemagic/locales/el/hue-bridge-config.json +40 -0
  218. package/huemagic/locales/el/hue-bridge.html +96 -0
  219. package/huemagic/locales/el/hue-bridge.json +26 -0
  220. package/huemagic/locales/el/hue-brightness.html +70 -0
  221. package/huemagic/locales/el/hue-brightness.json +37 -0
  222. package/huemagic/locales/el/hue-buttons.html +59 -0
  223. package/huemagic/locales/el/hue-buttons.json +42 -0
  224. package/huemagic/locales/el/hue-contact.html +67 -0
  225. package/huemagic/locales/el/hue-contact.json +35 -0
  226. package/huemagic/locales/el/hue-group.html +87 -0
  227. package/huemagic/locales/el/hue-group.json +46 -0
  228. package/huemagic/locales/el/hue-light.html +97 -0
  229. package/huemagic/locales/el/hue-light.json +44 -0
  230. package/huemagic/locales/el/hue-magic.html +68 -0
  231. package/huemagic/locales/el/hue-magic.json +26 -0
  232. package/huemagic/locales/el/hue-motion.html +64 -0
  233. package/huemagic/locales/el/hue-motion.json +36 -0
  234. package/huemagic/locales/el/hue-rules.html +69 -0
  235. package/huemagic/locales/el/hue-rules.json +30 -0
  236. package/huemagic/locales/el/hue-scene.html +43 -0
  237. package/huemagic/locales/el/hue-scene.json +32 -0
  238. package/huemagic/locales/el/hue-speaker.html +80 -0
  239. package/huemagic/locales/el/hue-speaker.json +38 -0
  240. package/huemagic/locales/el/hue-syncbox-config.html +19 -0
  241. package/huemagic/locales/el/hue-syncbox-config.json +25 -0
  242. package/huemagic/locales/el/hue-syncbox.html +86 -0
  243. package/huemagic/locales/el/hue-syncbox.json +30 -0
  244. package/huemagic/locales/el/hue-temperature.html +69 -0
  245. package/huemagic/locales/el/hue-temperature.json +33 -0
  246. package/huemagic/locales/en/hue-automation.html +59 -0
  247. package/huemagic/locales/en/hue-automation.json +33 -0
  248. package/huemagic/locales/en/hue-bridge-config.json +40 -0
  249. package/huemagic/locales/{en-US → en}/hue-bridge.html +5 -2
  250. package/huemagic/locales/{en-US → en}/hue-bridge.json +8 -9
  251. package/huemagic/locales/{en-US → en}/hue-brightness.html +6 -3
  252. package/huemagic/locales/{en-US → en}/hue-brightness.json +11 -9
  253. package/huemagic/locales/{en-US → en}/hue-buttons.html +4 -3
  254. package/huemagic/locales/en/hue-buttons.json +42 -0
  255. package/huemagic/locales/en/hue-contact.html +67 -0
  256. package/huemagic/locales/en/hue-contact.json +35 -0
  257. package/huemagic/locales/{en-US → en}/hue-group.html +16 -5
  258. package/huemagic/locales/{en-US → en}/hue-group.json +15 -10
  259. package/huemagic/locales/{en-US → en}/hue-light.html +3 -3
  260. package/huemagic/locales/en/hue-light.json +44 -0
  261. package/huemagic/locales/{en-US → en}/hue-magic.html +1 -1
  262. package/huemagic/locales/{en-US → en}/hue-motion.html +2 -2
  263. package/huemagic/locales/{en-US → en}/hue-motion.json +12 -9
  264. package/huemagic/locales/{en-US → en}/hue-rules.html +2 -2
  265. package/huemagic/locales/{en-US → en}/hue-rules.json +10 -9
  266. package/huemagic/locales/{en-US → en}/hue-scene.html +11 -3
  267. package/huemagic/locales/{en-US → en}/hue-scene.json +9 -9
  268. package/huemagic/locales/en/hue-speaker.html +80 -0
  269. package/huemagic/locales/en/hue-speaker.json +38 -0
  270. package/huemagic/locales/en/hue-syncbox-config.html +19 -0
  271. package/huemagic/locales/en/hue-syncbox-config.json +25 -0
  272. package/huemagic/locales/en/hue-syncbox.html +86 -0
  273. package/huemagic/locales/en/hue-syncbox.json +30 -0
  274. package/huemagic/locales/{en-US → en}/hue-temperature.html +4 -2
  275. package/huemagic/locales/{en-US → en}/hue-temperature.json +11 -9
  276. package/huemagic/locales/es/hue-automation.html +59 -0
  277. package/huemagic/locales/es/hue-automation.json +33 -0
  278. package/huemagic/locales/es/hue-bridge-config.html +31 -0
  279. package/huemagic/locales/es/hue-bridge-config.json +40 -0
  280. package/huemagic/locales/es/hue-bridge.html +96 -0
  281. package/huemagic/locales/es/hue-bridge.json +26 -0
  282. package/huemagic/locales/es/hue-brightness.html +70 -0
  283. package/huemagic/locales/es/hue-brightness.json +37 -0
  284. package/huemagic/locales/es/hue-buttons.html +59 -0
  285. package/huemagic/locales/es/hue-buttons.json +42 -0
  286. package/huemagic/locales/es/hue-contact.html +67 -0
  287. package/huemagic/locales/es/hue-contact.json +35 -0
  288. package/huemagic/locales/es/hue-group.html +87 -0
  289. package/huemagic/locales/es/hue-group.json +46 -0
  290. package/huemagic/locales/es/hue-light.html +97 -0
  291. package/huemagic/locales/es/hue-light.json +44 -0
  292. package/huemagic/locales/es/hue-magic.html +68 -0
  293. package/huemagic/locales/es/hue-magic.json +26 -0
  294. package/huemagic/locales/es/hue-motion.html +64 -0
  295. package/huemagic/locales/es/hue-motion.json +36 -0
  296. package/huemagic/locales/es/hue-rules.html +69 -0
  297. package/huemagic/locales/es/hue-rules.json +30 -0
  298. package/huemagic/locales/es/hue-scene.html +43 -0
  299. package/huemagic/locales/es/hue-scene.json +32 -0
  300. package/huemagic/locales/es/hue-speaker.html +80 -0
  301. package/huemagic/locales/es/hue-speaker.json +38 -0
  302. package/huemagic/locales/es/hue-syncbox-config.html +19 -0
  303. package/huemagic/locales/es/hue-syncbox-config.json +25 -0
  304. package/huemagic/locales/es/hue-syncbox.html +86 -0
  305. package/huemagic/locales/es/hue-syncbox.json +30 -0
  306. package/huemagic/locales/es/hue-temperature.html +69 -0
  307. package/huemagic/locales/es/hue-temperature.json +33 -0
  308. package/huemagic/locales/fr/hue-automation.html +59 -0
  309. package/huemagic/locales/fr/hue-automation.json +33 -0
  310. package/huemagic/locales/fr/hue-bridge-config.html +31 -0
  311. package/huemagic/locales/fr/hue-bridge-config.json +40 -0
  312. package/huemagic/locales/fr/hue-bridge.html +96 -0
  313. package/huemagic/locales/fr/hue-bridge.json +26 -0
  314. package/huemagic/locales/fr/hue-brightness.html +70 -0
  315. package/huemagic/locales/fr/hue-brightness.json +37 -0
  316. package/huemagic/locales/fr/hue-buttons.html +59 -0
  317. package/huemagic/locales/fr/hue-buttons.json +42 -0
  318. package/huemagic/locales/fr/hue-contact.html +67 -0
  319. package/huemagic/locales/fr/hue-contact.json +35 -0
  320. package/huemagic/locales/fr/hue-group.html +87 -0
  321. package/huemagic/locales/fr/hue-group.json +46 -0
  322. package/huemagic/locales/fr/hue-light.html +97 -0
  323. package/huemagic/locales/fr/hue-light.json +44 -0
  324. package/huemagic/locales/fr/hue-magic.html +68 -0
  325. package/huemagic/locales/fr/hue-magic.json +26 -0
  326. package/huemagic/locales/fr/hue-motion.html +64 -0
  327. package/huemagic/locales/fr/hue-motion.json +36 -0
  328. package/huemagic/locales/fr/hue-rules.html +69 -0
  329. package/huemagic/locales/fr/hue-rules.json +30 -0
  330. package/huemagic/locales/fr/hue-scene.html +43 -0
  331. package/huemagic/locales/fr/hue-scene.json +32 -0
  332. package/huemagic/locales/fr/hue-speaker.html +80 -0
  333. package/huemagic/locales/fr/hue-speaker.json +38 -0
  334. package/huemagic/locales/fr/hue-syncbox-config.html +19 -0
  335. package/huemagic/locales/fr/hue-syncbox-config.json +25 -0
  336. package/huemagic/locales/fr/hue-syncbox.html +86 -0
  337. package/huemagic/locales/fr/hue-syncbox.json +30 -0
  338. package/huemagic/locales/fr/hue-temperature.html +69 -0
  339. package/huemagic/locales/fr/hue-temperature.json +33 -0
  340. package/huemagic/locales/it/hue-automation.html +59 -0
  341. package/huemagic/locales/it/hue-automation.json +33 -0
  342. package/huemagic/locales/it/hue-bridge-config.html +31 -0
  343. package/huemagic/locales/it/hue-bridge-config.json +40 -0
  344. package/huemagic/locales/it/hue-bridge.html +96 -0
  345. package/huemagic/locales/it/hue-bridge.json +26 -0
  346. package/huemagic/locales/it/hue-brightness.html +70 -0
  347. package/huemagic/locales/it/hue-brightness.json +37 -0
  348. package/huemagic/locales/it/hue-buttons.html +59 -0
  349. package/huemagic/locales/it/hue-buttons.json +42 -0
  350. package/huemagic/locales/it/hue-contact.html +67 -0
  351. package/huemagic/locales/it/hue-contact.json +35 -0
  352. package/huemagic/locales/it/hue-group.html +87 -0
  353. package/huemagic/locales/it/hue-group.json +46 -0
  354. package/huemagic/locales/it/hue-light.html +97 -0
  355. package/huemagic/locales/it/hue-light.json +44 -0
  356. package/huemagic/locales/it/hue-magic.html +68 -0
  357. package/huemagic/locales/it/hue-magic.json +26 -0
  358. package/huemagic/locales/it/hue-motion.html +64 -0
  359. package/huemagic/locales/it/hue-motion.json +36 -0
  360. package/huemagic/locales/it/hue-rules.html +69 -0
  361. package/huemagic/locales/it/hue-rules.json +30 -0
  362. package/huemagic/locales/it/hue-scene.html +43 -0
  363. package/huemagic/locales/it/hue-scene.json +32 -0
  364. package/huemagic/locales/it/hue-speaker.html +80 -0
  365. package/huemagic/locales/it/hue-speaker.json +38 -0
  366. package/huemagic/locales/it/hue-syncbox-config.html +19 -0
  367. package/huemagic/locales/it/hue-syncbox-config.json +25 -0
  368. package/huemagic/locales/it/hue-syncbox.html +86 -0
  369. package/huemagic/locales/it/hue-syncbox.json +30 -0
  370. package/huemagic/locales/it/hue-temperature.html +69 -0
  371. package/huemagic/locales/it/hue-temperature.json +33 -0
  372. package/huemagic/locales/nl/hue-automation.html +59 -0
  373. package/huemagic/locales/nl/hue-automation.json +33 -0
  374. package/huemagic/locales/nl/hue-bridge-config.html +31 -0
  375. package/huemagic/locales/nl/hue-bridge-config.json +40 -0
  376. package/huemagic/locales/nl/hue-bridge.html +96 -0
  377. package/huemagic/locales/nl/hue-bridge.json +26 -0
  378. package/huemagic/locales/nl/hue-brightness.html +70 -0
  379. package/huemagic/locales/nl/hue-brightness.json +37 -0
  380. package/huemagic/locales/nl/hue-buttons.html +59 -0
  381. package/huemagic/locales/nl/hue-buttons.json +42 -0
  382. package/huemagic/locales/nl/hue-contact.html +67 -0
  383. package/huemagic/locales/nl/hue-contact.json +35 -0
  384. package/huemagic/locales/nl/hue-group.html +87 -0
  385. package/huemagic/locales/nl/hue-group.json +46 -0
  386. package/huemagic/locales/nl/hue-light.html +97 -0
  387. package/huemagic/locales/nl/hue-light.json +44 -0
  388. package/huemagic/locales/nl/hue-magic.html +68 -0
  389. package/huemagic/locales/nl/hue-magic.json +26 -0
  390. package/huemagic/locales/nl/hue-motion.html +64 -0
  391. package/huemagic/locales/nl/hue-motion.json +36 -0
  392. package/huemagic/locales/nl/hue-rules.html +69 -0
  393. package/huemagic/locales/nl/hue-rules.json +30 -0
  394. package/huemagic/locales/nl/hue-scene.html +43 -0
  395. package/huemagic/locales/nl/hue-scene.json +32 -0
  396. package/huemagic/locales/nl/hue-speaker.html +80 -0
  397. package/huemagic/locales/nl/hue-speaker.json +38 -0
  398. package/huemagic/locales/nl/hue-syncbox-config.html +19 -0
  399. package/huemagic/locales/nl/hue-syncbox-config.json +25 -0
  400. package/huemagic/locales/nl/hue-syncbox.html +86 -0
  401. package/huemagic/locales/nl/hue-syncbox.json +30 -0
  402. package/huemagic/locales/nl/hue-temperature.html +69 -0
  403. package/huemagic/locales/nl/hue-temperature.json +33 -0
  404. package/huemagic/locales/pl/hue-automation.html +59 -0
  405. package/huemagic/locales/pl/hue-automation.json +33 -0
  406. package/huemagic/locales/pl/hue-bridge-config.html +31 -0
  407. package/huemagic/locales/pl/hue-bridge-config.json +40 -0
  408. package/huemagic/locales/pl/hue-bridge.html +96 -0
  409. package/huemagic/locales/pl/hue-bridge.json +26 -0
  410. package/huemagic/locales/pl/hue-brightness.html +70 -0
  411. package/huemagic/locales/pl/hue-brightness.json +37 -0
  412. package/huemagic/locales/pl/hue-buttons.html +59 -0
  413. package/huemagic/locales/pl/hue-buttons.json +42 -0
  414. package/huemagic/locales/pl/hue-contact.html +67 -0
  415. package/huemagic/locales/pl/hue-contact.json +35 -0
  416. package/huemagic/locales/pl/hue-group.html +87 -0
  417. package/huemagic/locales/pl/hue-group.json +46 -0
  418. package/huemagic/locales/pl/hue-light.html +97 -0
  419. package/huemagic/locales/pl/hue-light.json +44 -0
  420. package/huemagic/locales/pl/hue-magic.html +68 -0
  421. package/huemagic/locales/pl/hue-magic.json +26 -0
  422. package/huemagic/locales/pl/hue-motion.html +64 -0
  423. package/huemagic/locales/pl/hue-motion.json +36 -0
  424. package/huemagic/locales/pl/hue-rules.html +69 -0
  425. package/huemagic/locales/pl/hue-rules.json +30 -0
  426. package/huemagic/locales/pl/hue-scene.html +43 -0
  427. package/huemagic/locales/pl/hue-scene.json +32 -0
  428. package/huemagic/locales/pl/hue-speaker.html +80 -0
  429. package/huemagic/locales/pl/hue-speaker.json +38 -0
  430. package/huemagic/locales/pl/hue-syncbox-config.html +19 -0
  431. package/huemagic/locales/pl/hue-syncbox-config.json +25 -0
  432. package/huemagic/locales/pl/hue-syncbox.html +86 -0
  433. package/huemagic/locales/pl/hue-syncbox.json +30 -0
  434. package/huemagic/locales/pl/hue-temperature.html +69 -0
  435. package/huemagic/locales/pl/hue-temperature.json +33 -0
  436. package/huemagic/locales/pt/hue-automation.html +59 -0
  437. package/huemagic/locales/pt/hue-automation.json +33 -0
  438. package/huemagic/locales/pt/hue-bridge-config.html +31 -0
  439. package/huemagic/locales/pt/hue-bridge-config.json +40 -0
  440. package/huemagic/locales/pt/hue-bridge.html +96 -0
  441. package/huemagic/locales/pt/hue-bridge.json +26 -0
  442. package/huemagic/locales/pt/hue-brightness.html +70 -0
  443. package/huemagic/locales/pt/hue-brightness.json +37 -0
  444. package/huemagic/locales/pt/hue-buttons.html +59 -0
  445. package/huemagic/locales/pt/hue-buttons.json +42 -0
  446. package/huemagic/locales/pt/hue-contact.html +67 -0
  447. package/huemagic/locales/pt/hue-contact.json +35 -0
  448. package/huemagic/locales/pt/hue-group.html +87 -0
  449. package/huemagic/locales/pt/hue-group.json +46 -0
  450. package/huemagic/locales/pt/hue-light.html +97 -0
  451. package/huemagic/locales/pt/hue-light.json +44 -0
  452. package/huemagic/locales/pt/hue-magic.html +68 -0
  453. package/huemagic/locales/pt/hue-magic.json +26 -0
  454. package/huemagic/locales/pt/hue-motion.html +64 -0
  455. package/huemagic/locales/pt/hue-motion.json +36 -0
  456. package/huemagic/locales/pt/hue-rules.html +69 -0
  457. package/huemagic/locales/pt/hue-rules.json +30 -0
  458. package/huemagic/locales/pt/hue-scene.html +43 -0
  459. package/huemagic/locales/pt/hue-scene.json +32 -0
  460. package/huemagic/locales/pt/hue-speaker.html +80 -0
  461. package/huemagic/locales/pt/hue-speaker.json +38 -0
  462. package/huemagic/locales/pt/hue-syncbox-config.html +19 -0
  463. package/huemagic/locales/pt/hue-syncbox-config.json +25 -0
  464. package/huemagic/locales/pt/hue-syncbox.html +86 -0
  465. package/huemagic/locales/pt/hue-syncbox.json +30 -0
  466. package/huemagic/locales/pt/hue-temperature.html +69 -0
  467. package/huemagic/locales/pt/hue-temperature.json +33 -0
  468. package/huemagic/locales/tr/hue-automation.html +59 -0
  469. package/huemagic/locales/tr/hue-automation.json +33 -0
  470. package/huemagic/locales/tr/hue-bridge-config.html +31 -0
  471. package/huemagic/locales/tr/hue-bridge-config.json +40 -0
  472. package/huemagic/locales/tr/hue-bridge.html +96 -0
  473. package/huemagic/locales/tr/hue-bridge.json +26 -0
  474. package/huemagic/locales/tr/hue-brightness.html +70 -0
  475. package/huemagic/locales/tr/hue-brightness.json +37 -0
  476. package/huemagic/locales/tr/hue-buttons.html +59 -0
  477. package/huemagic/locales/tr/hue-buttons.json +42 -0
  478. package/huemagic/locales/tr/hue-contact.html +67 -0
  479. package/huemagic/locales/tr/hue-contact.json +35 -0
  480. package/huemagic/locales/tr/hue-group.html +87 -0
  481. package/huemagic/locales/tr/hue-group.json +46 -0
  482. package/huemagic/locales/tr/hue-light.html +97 -0
  483. package/huemagic/locales/tr/hue-light.json +44 -0
  484. package/huemagic/locales/tr/hue-magic.html +68 -0
  485. package/huemagic/locales/tr/hue-magic.json +26 -0
  486. package/huemagic/locales/tr/hue-motion.html +64 -0
  487. package/huemagic/locales/tr/hue-motion.json +36 -0
  488. package/huemagic/locales/tr/hue-rules.html +69 -0
  489. package/huemagic/locales/tr/hue-rules.json +30 -0
  490. package/huemagic/locales/tr/hue-scene.html +43 -0
  491. package/huemagic/locales/tr/hue-scene.json +32 -0
  492. package/huemagic/locales/tr/hue-speaker.html +80 -0
  493. package/huemagic/locales/tr/hue-speaker.json +38 -0
  494. package/huemagic/locales/tr/hue-syncbox-config.html +19 -0
  495. package/huemagic/locales/tr/hue-syncbox-config.json +25 -0
  496. package/huemagic/locales/tr/hue-syncbox.html +86 -0
  497. package/huemagic/locales/tr/hue-syncbox.json +30 -0
  498. package/huemagic/locales/tr/hue-temperature.html +69 -0
  499. package/huemagic/locales/tr/hue-temperature.json +33 -0
  500. package/huemagic/utils/api.js +158 -54
  501. package/huemagic/utils/color.js +20 -2
  502. package/huemagic/utils/merge.js +3 -2
  503. package/huemagic/utils/messages.js +506 -120
  504. package/huemagic/utils/sse.js +51 -0
  505. package/huemagic/utils/syncbox.js +84 -0
  506. package/package.json +19 -11
  507. package/.github/FUNDING.yml +0 -2
  508. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -30
  509. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  510. package/.github/workflows/npm.yml +0 -18
  511. package/huemagic/locales/en-US/hue-bridge-config.json +0 -29
  512. package/huemagic/locales/en-US/hue-buttons.json +0 -34
  513. package/huemagic/locales/en-US/hue-light.json +0 -38
  514. /package/huemagic/locales/{en-US → en}/hue-bridge-config.html +0 -0
  515. /package/huemagic/locales/{en-US → en}/hue-magic.json +0 -0
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
- [![Hue Magic Logo](https://gist.githubusercontent.com/Foddy/9b647b910d03a31cee40f97c3988dd1c/raw/7ee635bd958ad04d7ba53c6c40ec401f879bffc2/huemagic-logo.svg)](https://flows.nodered.org/node/node-red-contrib-huemagic)
1
+ [![Hue Magic Logo](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/huemagic-logo.svg)](https://flows.nodered.org/node/node-red-contrib-huemagic)
2
2
 
3
3
  # HueMagic - Philips Hue nodes for Node-RED
4
4
 
5
5
  [![npm](https://img.shields.io/npm/v/node-red-contrib-huemagic.svg?style=flat-square)](https://github.com/foddy/node-red-contrib-huemagic/) [![GitHub license](https://img.shields.io/badge/license-Apache%202-blue.svg?style=flat-square)](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/LICENSE) [![Donate via PayPal](https://img.shields.io/badge/Donate-PayPal-blue.svg?style=flat-square)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=LUQ7CWBWQ3Q4U) [![npm](https://img.shields.io/npm/dt/node-red-contrib-huemagic.svg?style=flat-square)](https://www.npmjs.com/package/node-red-contrib-huemagic)
6
6
 
7
- HueMagic provides several input and output nodes for Node-RED and is the most in-depth and easy to use solution to control Philips Hue bridges, lights, groups, scenes, rules, buttons/switches, motion sensors, temperature sensors and light level sensors.
7
+ HueMagic provides several input and output nodes for Node-RED and is the most in-depth and easy to use solution to control Philips Hue bridges, lights, groups, scenes, rules, automations, buttons/switches, dials, doorbells, speakers, motion sensors, cameras, contact sensors, temperature sensors, light level sensors and the Hue Play HDMI Sync Box.
8
8
 
9
9
  ### Features
10
10
  * Simple and comprehensive control of the Hue Bridge and connected devices
@@ -14,17 +14,27 @@ HueMagic provides several input and output nodes for Node-RED and is the most in
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
16
  * Automatic firmware updates to the Hue Bridge and connected devices
17
- * Activating / deactivating of sensors & rules on the Hue Bridge
17
+ * Activating / deactivating of sensors, rules & automations on the Hue Bridge
18
18
  * Extended alarm and colorloop effects on light bulbs and whole groups
19
19
  * A large selection of animations and the option to create custom animations
20
20
  * Additive state settings on all nodes with multiple commands
21
21
  * Change states even if the corresponding devices are offline or turned off
22
22
  * Real-time status messages for each node & in the Node-RED UI (SSE)
23
+ * Nodes can stay passive and only answer the commands you send them
23
24
  * Uses the latest CLIP/v2 API version of the Philips Hue Bridge
24
- * Extensively documented in English & German
25
+ * Supports the Hue Bridge Pro as well as the square-shaped Hue Bridge
26
+ * Supports Hue Secure cameras, video doorbells, contact sensors and speakers
27
+ * Controls the Hue Play HDMI Sync Box over its own local API
28
+ * Turns your lights into motion sensors with MotionAware (Hue Bridge Pro)
29
+ * Plays the built-in light effects and the sunrise / sunset simulation
30
+ * Sets the behaviour of a light after a power cut
31
+ * Switches a Hue wall switch module between rocker and pushbutton mode
32
+ * Recalls scenes with their own transition time and brightness
33
+ * Calibrates temperature sensors and the darkness threshold of light level sensors
34
+ * Available in ten languages, including the complete node documentation
25
35
 
26
36
  ### Installation
27
- HueMagic was written for **Node.js 14+** and **Node-RED v2.1+**. It supports the square-shaped Hue Bridge with the **firmware 1948086000+** or higher. 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).
37
+ 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).
28
38
 
29
39
  `npm install node-red-contrib-huemagic`
30
40
 
@@ -39,20 +49,24 @@ _Please make sure that you deactivate other Hue-related nodes in Node-RED and me
39
49
  - [Hue Scenes](#hue-scene)
40
50
  - [Hue Buttons](#hue-buttons)
41
51
  - [Hue Motion](#hue-motion)
52
+ - [Hue Contact](#hue-contact)
42
53
  - [Hue Temperature](#hue-temperature)
43
54
  - [Hue Brightness](#hue-brightness)
55
+ - [Hue Speaker](#hue-speaker)
56
+ - [Hue Automation](#hue-automation)
44
57
  - [Hue Rule](#hue-rule)
58
+ - [Hue Sync Box](#hue-sync-box)
45
59
 
46
60
  ### Examples
47
61
 
48
- HueMagic provides a large selection of full featured sample flows for all nodes. You can find these examples in the [examples folder on GitHub](https://github.com/Foddy/node-red-contrib-huemagic/tree/master/examples) or directly in Node-RED. To import a full featured example into your Node-RED interface, click on the Node-RED menu icon, then select "Import" and navigate to "Examples" in the sidebar of the popup. Then select the HueMagic folder and your desired node to import a sample flow.
62
+ HueMagic provides a large selection of full featured sample flows for all nodes. You can find these examples in the [examples folder on GitHub](https://github.com/Foddy/node-red-contrib-huemagic/tree/master/examples) or directly in Node-RED. To import a full featured example into your Node-RED interface, click on the Node-RED menu icon, then select "Import" and navigate to "Examples" in the sidebar of the popup. Then select the HueMagic folder, the language you are most comfortable with and your desired node to import a sample flow. The examples are translated into all ten languages, with one folder per language.
49
63
 
50
- <a href="https://github.com/Foddy/node-red-contrib-huemagic/tree/master/examples"><img alt="Instructions to import examples in Node-RED" src="https://user-images.githubusercontent.com/5302050/148696808-f730ad36-8d0b-4b5b-99b2-1917831f8916.gif" width="100%"></a>
64
+ <a href="https://github.com/Foddy/node-red-contrib-huemagic/tree/master/examples"><img alt="Instructions to import examples in Node-RED" src="https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/import-examples.gif" width="100%"></a>
51
65
 
52
66
  ## Hue Bridge
53
67
  The "Hue Bridge" node is a universal node that can output all settings of the bridge and status messages from other nodes.
54
68
 
55
- ![Hue Bridge Example](https://user-images.githubusercontent.com/5302050/148696503-428cf1d0-8376-49fe-b677-979070fc92b9.png)
69
+ ![Hue Bridge Example](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/nodes/hue-bridge.png)
56
70
 
57
71
  ### Node-RED Setup Instructions
58
72
 
@@ -82,7 +96,7 @@ With the "fetch" command you can output a list of specific devices that are curr
82
96
 
83
97
  |Property|Description|
84
98
  |--|--|
85
- | fetch (string / array [string, ...]) | Can accept `light`, `group`, `button`, `motion`, `temperature`, `light_level` or `rule` as value(s) |
99
+ | fetch (string / array [string, ...]) | Can accept `light`, `group`, `button`, `motion`, `contact`, `temperature`, `light_level` or `rule` as value(s) |
86
100
 
87
101
  ### Change Hue Bridge settings
88
102
 
@@ -151,7 +165,7 @@ If the status of the node has changed via a certain command, the entire command
151
165
  ## Hue Magic
152
166
  The "Hue Magic" node can apply complex and custom animations to lights and groups.
153
167
 
154
- ![Hue Magic Example](https://user-images.githubusercontent.com/5302050/148696508-51db24ea-722e-402c-9c49-8d728e036488.png)
168
+ ![Hue Magic Example](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/nodes/hue-magic.png)
155
169
 
156
170
  ### Node-RED Setup Instructions
157
171
 
@@ -162,7 +176,7 @@ Below you can choose from pre-made animations from HueMagic. Click on your desir
162
176
  ### Included animations
163
177
  Choose one of the included animations to apply to a Hue Light or Hue Group node.
164
178
 
165
- ![Some included animations](https://user-images.githubusercontent.com/5302050/71556018-30e16d00-2a33-11ea-8c03-45211767ee98.gif)
179
+ ![Some included animations](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/animations.gif)
166
180
 
167
181
  ### Start / stop animation
168
182
 
@@ -228,11 +242,11 @@ This node does not output any status messages. Please connect the output of the
228
242
  ## Hue Light
229
243
  The "Hue Light" node can control lights connected to the bridge and receive their status messages.
230
244
 
231
- ![Hue Light Example](https://user-images.githubusercontent.com/5302050/148696507-bea62f97-e9ec-496a-b7a2-8bf1942a3192.png)
245
+ ![Hue Light Example](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/nodes/hue-light.png)
232
246
 
233
247
  ### Node-RED Setup Instructions
234
248
 
235
- Select the pre-configured Hue Bridge and hit the search button to find all the available lights. If you already know the ID of a light, you can also enter it here manually. You can either assign a new name for the light internally or choose the predefined name. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue device updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected light after each deployment.
249
+ Select the pre-configured Hue Bridge and hit the search button to find all the available lights. If you already know the ID of a light, you can also enter it here manually. You can either assign a new name for the light internally or choose the predefined name. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue device updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected light after each deployment. If you would rather have the node stay silent until you send it something, activate "Only report after a command". It then ignores changes from the app or a switch and only answers your own commands.
236
250
 
237
251
  If you activate the setting "Activate color naming", the node will try to describe the currently set light color for each status message. You will then receive an additional parameter with the English description of the currently set color in the output.
238
252
 
@@ -270,7 +284,7 @@ In addition to simply switching it on and off, there are also many other options
270
284
  | hex (string) | Color value in hexadecimal in the form of a string |
271
285
  | rgb (array [0,0,0]) | Color value in RGB format in the form of an array |
272
286
  | xyColor (object {x [float], y [float]}) | Color value in the XY color format in the form of an object |
273
- | gradient (object {hex […]}) | An object with a supported color object (e.g. `hex`,` rgb`, ...) and several colors to set a gradient to supported lights |
287
+ | 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` |
274
288
  | 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 |
275
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 |
276
290
  | saturation (int) | Percentage of the saturation of the current color (beta) |
@@ -278,6 +292,11 @@ In addition to simply switching it on and off, there are also many other options
278
292
  | 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 |
279
293
  | decrementColorTemp (int / boolean) | Value by how much the color temperature should be colder or `true` to make the color temperature colder in steps of 50 |
280
294
  | transitionTime (float) | Transition time of the current setting in seconds. If `0` is entered, the light changes to the desired setting immediately. If `3` is entered, the light changes to the desired setting with a slight transition in the next 3 seconds |
295
+ | effect (string / boolean) | Plays one of the built-in effects of the light, e.g. `candle`, `fire`, `sparkle` or `prism`. `false` stops it again. Which effects a light knows is listed under `msg.info.model.effects` |
296
+ | effectSpeed (float) | Speed of the effect between `0` and `1` (only on lights that support the newer `effects_v2`) |
297
+ | timedEffect (string / boolean) | Plays a `sunrise` or `sunset` simulation, `false` stops it again. Which of them a light knows is listed under `msg.info.model.timedEffects` |
298
+ | duration (float) | Duration of the timed effect in seconds (maximum 6 hours) |
299
+ | powerUp (string / object) | Behaviour of the light after a power cut. Either one of `safety`, `powerfail`, `last_on_state` or `custom` as a string, or an object with `preset: "custom"` and `on`, `brightness`, `colorTemp` or `xyColor` |
281
300
  | colorloop (float) | Plays a "colorloop" animation for the selected duration in seconds and then switches back to the original state of the light |
282
301
  | alert (float) | Plays an "alert" animation for the selected duration in seconds and then switches back to the original state of the light |
283
302
 
@@ -301,6 +320,9 @@ As soon as a change in the light settings has been detected (regardless of wheth
301
320
  | gradient (object / optional) | Current gradient setting with all available color units in the form of an array, if the light supports gradient settings, where `colors` outputs the colors, `numColors` the number of set colors in the gradient and `totalColors` the maximum possible Number of colors the resource can support in the gradient |
302
321
  | colorTemp (int / boolean / optional) | Current color temperature of the light, if the light can display color temperatures and a color temperature has been set |
303
322
  | colorTempName (string / optional) | Current color temperature of the light in the form of a descriptive string with the values `cold`,`normal`, `warm` or `hot`, if the light can display color temperatures and a color temperature has been set. Otherwise `unknown` is output |
323
+ | effect (string / optional) | The effect that is currently playing on the light or `no_effect`, if the light supports effects |
324
+ | timedEffect (string / optional) | The timed effect that is currently playing or `no_effect`, if the light supports a sunrise / sunset simulation |
325
+ | powerUp (string / optional) | The currently set behaviour of the light after a power cut, if the light supports it |
304
326
  | updated (string) | Time of the last update of the resource by HueMagic (ISO 8601) |
305
327
 
306
328
  #### Information about the light under `msg.info`
@@ -331,11 +353,11 @@ If the status of the node has changed via a certain command, the entire command
331
353
  ## Hue Group
332
354
  The "Hue Group" node can control several lights behind a group on the bridge at the same time.
333
355
 
334
- ![Hue Group Example](https://user-images.githubusercontent.com/5302050/148696506-e5c52750-39e1-43bc-a749-056d7a8718fc.png)
356
+ ![Hue Group Example](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/nodes/hue-group.png)
335
357
 
336
358
  ### Node-RED Setup Instructions
337
359
 
338
- Select the pre-configured Hue Bridge and hit the search button to find all available groups. If you already know the ID of a group, you can also enter it here manually. You can either assign a new name for the group internally or choose the predefined name. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue any updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected group after each deployment.
360
+ Select the pre-configured Hue Bridge and hit the search button to find all available groups. If you already know the ID of a group, you can also enter it here manually. You can either assign a new name for the group internally or choose the predefined name. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue any updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected group after each deployment. If you would rather have the node stay silent until you send it something, activate "Only report after a command". It then ignores changes from the app or a switch and only answers your own commands.
339
361
 
340
362
  If you do not select a group and use the node configuration in this way, the node works in the so-called "universal mode". In this mode, the node receives and outputs all status messages of the same type. You can also apply settings in universal mode to a specific group by transferring the corresponding group ID as a string in `msg.topic` together with your settings.
341
363
 
@@ -349,7 +371,7 @@ Outputs the current status of the group as soon as a `msg.payload` object with t
349
371
 
350
372
  ### Turn on / off (simple)
351
373
 
352
- To quickly turn an entire group on or off in simple mode, pass an object with the following content to the node. Please note that the command will only be executed if the current status of the group does not match your desired status. This means that all lights have to be switched off before you can switch them on with the `true` command.
374
+ To quickly turn an entire group on or off in simple mode, pass an object with the following content to the node.
353
375
 
354
376
  |Property|Description|
355
377
  |--|--|
@@ -361,10 +383,12 @@ In addition to simply switching it on and off, there are also many other options
361
383
 
362
384
  |Property|Description|
363
385
  |--|--|
364
- | on (boolean) | `true` switches the entire group on, `false` switches it off (please note the note above) |
386
+ | on (boolean) | `true` switches the entire group on, `false` switches it off |
365
387
  | toggle (boolean / any) | Toggles between switching on and off, depending on the previous status of the group |
366
388
  | brightness (int / string) | Percentage value of the light brightness (0-100) or a string with the value `auto` to automatically set the light brightness based on the current time |
367
389
  | brightnessLevel (int) | Numerical value of the light brightness (0-254) |
390
+ | incrementBrightness (int / boolean) | Specifies by how many percent the group should be made brighter or `true` to make the group brighter in 10% steps |
391
+ | decrementBrightness (int / boolean) | Specifies the percentage by which the group should be made darker or `true` to make the group darker in 10% steps |
368
392
  | color (string) | `random` to set a random color or an English color name (e.g. `red`) |
369
393
  | hex (string) | Color value in hexadecimal in the form of a string |
370
394
  | rgb (array [0,0,0]) | Color value in RGB format in the form of an array |
@@ -377,15 +401,22 @@ In addition to simply switching it on and off, there are also many other options
377
401
 
378
402
  ### Status messages from the node
379
403
 
380
- If a change in the group is detected, the following status message is returned from the node. Please note that the group only outputs status messages when either the last light is switched off or when the first light is switched on (if all were switched off beforehand).
404
+ If a change in the group is detected, the following status message is returned from the node.
381
405
 
382
- In contrast to the "Hue Light" node, you have much less status information available here, as a group can contain many different device types with different values that cannot be combined.
406
+ In contrast to the "Hue Light" node, you have less status information available here, as a group can contain many different device types with different values that cannot be combined. Color information is therefore only reported if all lights of the group agree on it.
383
407
 
384
408
  #### Status object under `msg.payload`
385
409
 
386
410
  |Property|Description|
387
411
  |--|--|
388
412
  | on (boolean) | State of the group, where `true` stands for on and `false` for off |
413
+ | brightness (float / boolean) | Brightness of the group in percent or `false` if the group cannot be dimmed |
414
+ | brightnessLevel (int / boolean) | Brightness of the group as a numerical value (0-254) or `false` if the group cannot be dimmed |
415
+ | rgb (array [0,0,0]) | Current color of the group in RGB format (only if available) |
416
+ | hex (string) | Current color of the group in hexadecimal format (only if available) |
417
+ | color (string) | Human readable name of the current color (only if "Colornamer" is activated) |
418
+ | xyColor (object {x [float], y [float]}) | Current color of the group in the XY color format (only if available) |
419
+ | colorTemp (int) | Currently set color temperature of the group (only if available) |
389
420
  | updated (string) | Time of the last update of the resource by HueMagic (ISO 8601) |
390
421
 
391
422
  #### Information about the group under `msg.info`
@@ -413,11 +444,11 @@ If the status of the node has changed via a certain command, the entire command
413
444
  ## Hue Scene
414
445
  The "Hue Scene" node can resume scenes saved in the bridge and apply them to certain groups.
415
446
 
416
- ![Hue Scene Example](https://user-images.githubusercontent.com/5302050/148696512-c9cf3800-935f-44b3-a5e6-8c5e70a71357.png)
447
+ ![Hue Scene Example](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/nodes/hue-scene.png)
417
448
 
418
449
  ### Node-RED Setup Instructions
419
450
 
420
- Select the pre-configured Hue Bridge and hit the search button to find all the available scenes. If you already know the ID of the scene, you can also enter it here manually. Alternatively, you can also assign an internal name for the scene or choose the predefined name of the scene.
451
+ Select the pre-configured Hue Bridge and hit the search button to find all the available scenes. The scenes are sorted by room or zone first and then by their name, so the scenes of one room always stay together in the list. If you already know the ID of the scene, you can also enter it here manually. Alternatively, you can also assign an internal name for the scene or choose the predefined name of the scene.
421
452
 
422
453
  ### Activate scene
423
454
 
@@ -426,6 +457,10 @@ You can activate a predefined scene by transferring an object with the following
426
457
  |Property|Description|
427
458
  |--|--|
428
459
  | payload (boolean) | Activates a preconfigured scene |
460
+ | transitionTime (float) | Transition time of the scene in seconds. If `0` is passed, the scene is applied immediately. If you pass it to `3`, the lights fade into the scene within the next 3 seconds. The bridge accepts up to 6000 seconds |
461
+ | brightness (float) | Brightness of the whole scene in percent (`0` – `100`), so you can recall one and the same scene brighter or dimmer depending on the time of day |
462
+
463
+ _Both settings are only available for normal scenes. A smart scene follows the times you have defined for it in the Philips Hue app._
429
464
 
430
465
  ### Activate scene in universal mode
431
466
 
@@ -448,13 +483,13 @@ Connect the output of this node to one or more groups to apply a scene to specif
448
483
  This node does not issue any status messages. Please also note that you can only apply scenes to groups if these are already linked to the respective scene on the bridge. Otherwise nothing will be applied.
449
484
 
450
485
  ## Hue Buttons
451
- The "Hue Buttons" node receives switching events from input devices connected to the bridge.
486
+ The "Hue Buttons" node receives switching events from input devices connected to the bridge. Besides switches and dials it also covers the Hue Secure video doorbell.
452
487
 
453
- ![Hue Buttons Example](https://user-images.githubusercontent.com/5302050/148696505-026a3eaf-b5a6-4438-ad71-57d62830799f.png)
488
+ ![Hue Buttons Example](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/nodes/hue-buttons.png)
454
489
 
455
490
  ### Node-RED Setup Instructions
456
491
 
457
- Select the pre-configured Hue Bridge and hit the search button to find all the available switches/buttons. If you already know the ID of the switches/buttons, you can also enter it here manually. You can either assign a new name for the switches/buttons internally or keep the predefined name of the device. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer output any switching events. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected switches/buttons after each deployment.
492
+ Select the pre-configured Hue Bridge and hit the search button to find all the available switches/buttons. If you already know the ID of the switches/buttons, you can also enter it here manually. You can either assign a new name for the switches/buttons internally or keep the predefined name of the device. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer output any switching events. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected switches/buttons after each deployment. If you would rather have the node stay silent until you send it something, activate "Only report after a command". It then ignores changes from the app or a switch and only answers your own commands.
458
493
 
459
494
  If you do not select a switch/button and use the node configuration in this way, the node works in the so-called "universal mode". In this mode, the node receives and outputs all status messages of the same type.
460
495
 
@@ -466,9 +501,17 @@ Outputs the current status of the switch/button as soon as a `msg.payload` objec
466
501
  |--|--|
467
502
  | status (boolean) | Returns the current status of the switch/button |
468
503
 
504
+ ### Change the switch mode
505
+
506
+ A Hue wall switch module can either work as a rocker or as a pushbutton. Which modes your device supports is reported under `msg.info.switchModes`. To change it, pass an object with the following content:
507
+
508
+ |Property|Description|
509
+ |--|--|
510
+ | switchMode (string) | One of the supported modes, e.g. `switch_dual_rocker` or `switch_dual_pushbutton` |
511
+
469
512
  ### Status messages from the node
470
513
 
471
- As soon as a key has been pressed, the following status message is returned by the node:
514
+ As soon as a key has been pressed or a dial has been turned, the following status message is returned by the node:
472
515
 
473
516
  #### Status object under `msg.payload`
474
517
 
@@ -477,9 +520,24 @@ As soon as a key has been pressed, the following status message is returned by t
477
520
  | reachable (boolean / string) | `true` if the switch/button is connected to the bridge, `unknown` if the connection status deviates |
478
521
  | connectionStatus (string) | The current connection status with the bridge in the form of a string. Can contain `connected`, `disconnected`, `connectivity_issue` or `unidirectional_incoming` as a value |
479
522
  | button (int / boolean) | Numeric ID of the key that was last pressed or `false` if no key was pressed |
480
- | action (string / boolean) | `false` if no key was pressed or `initial_press`, `repeat` , `short_release`, `long_release` or `double_short_release` in the form of a string |
523
+ | action (string / boolean) | `false` if no key was pressed or `initial_press`, `repeat` , `short_release`, `long_press`, `long_release` or `double_short_release` in the form of a string |
524
+ | rotation (object / boolean) | `false` if the device has no dial or was not turned, otherwise an object describing the last rotation (see below) |
525
+ | doorbell (boolean) | `true` if the press came from a Hue Secure video doorbell |
481
526
  | updated (string) | Time of the last update of the resource by HueMagic (ISO 8601) |
482
527
 
528
+ #### The rotation of a dial under `msg.payload.rotation`
529
+
530
+ Devices with a rotating bezel like the Hue Tap Dial Switch or the Lutron Aurora report their movement here.
531
+
532
+ |Property|Description|
533
+ |--|--|
534
+ | action (string) | `start` for the beginning of a movement or `repeat` while it continues |
535
+ | direction (string) | `clock_wise` or `counter_clock_wise` |
536
+ | clockwise (boolean) | `true` if the dial was turned clockwise |
537
+ | steps (int) | Number of steps that were turned, where 1000 steps correspond to a full rotation |
538
+ | degrees (int) | The turned steps converted into degrees |
539
+ | duration (int) | Duration of the movement in milliseconds |
540
+
483
541
  #### Information about the switch/button under `msg.info`
484
542
 
485
543
  |Property|Description|
@@ -493,6 +551,8 @@ As soon as a key has been pressed, the following status message is returned by t
493
551
  | softwareVersion (string) | The current firmware of the switch/button |
494
552
  | battery (float / boolean) | The current battery level of the switch/button, `false`, when there is no battery |
495
553
  | batteryState (string / boolean) | The current status of the battery level. Can contain `normal`, `low` or `critical` as a value, `false`, when there is no battery |
554
+ | switchMode (string / boolean) | Currently set mode of a wall switch module or `false`. Can contain `switch_single_rocker`, `switch_single_pushbutton`, `switch_dual_rocker` or `switch_dual_pushbutton` as a value |
555
+ | switchModes (array / boolean) | All modes the device supports or `false` |
496
556
  | model (object) | Contains the model information of the switch/button under `id` , `manufacturer`, `name`, `type` and `certified` |
497
557
 
498
558
  #### Status changes under `msg.updated`
@@ -508,13 +568,13 @@ Contains the complete status object (see output values above) of the last status
508
568
  If the status of the node has changed via a certain command, the entire command that was executed is also output. Otherwise this object will not be output by the node.
509
569
 
510
570
  ## Hue Motion
511
- The "Hue motion" node can register and report movements from a suitable sensor on the bridge.
571
+ The "Hue motion" node can register and report movements from a suitable sensor on the bridge. Besides the classic motion sensor it also covers Hue Secure cameras and, on the Hue Bridge Pro, the MotionAware areas that turn your lights into motion sensors.
512
572
 
513
- ![Hue Motion Example](https://user-images.githubusercontent.com/5302050/148696510-c6bfcad3-cd4e-4b6a-a73f-29bef1ac6961.png)
573
+ ![Hue Motion Example](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/nodes/hue-motion.png)
514
574
 
515
575
  ### Node-RED Setup Instructions
516
576
 
517
- Select the pre-configured Hue Bridge and click the search button to find all the available sensors. If you already know the ID of the sensor, you can also enter it here manually. You can either assign a new name for the sensor internally or choose the predefined name of the sensor. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue device updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected sensor after each deployment.
577
+ Select the pre-configured Hue Bridge and click the search button to find all the available sensors. If you already know the ID of the sensor, you can also enter it here manually. You can either assign a new name for the sensor internally or choose the predefined name of the sensor. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue device updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected sensor after each deployment. If you would rather have the node stay silent until you send it something, activate "Only report after a command". It then ignores changes from the app or a switch and only answers your own commands.
518
578
 
519
579
  If you do not select a sensor and use the node configuration in this way, the node works in the so-called "universal mode". In this mode, the node receives and outputs all status messages of the same type. You can also apply settings in universal mode to a specific sensor by transferring the corresponding sensor ID as a string in `msg.topic` together with your settings.
520
580
 
@@ -534,6 +594,14 @@ If necessary, the sensor can be turned on and off remotely. If the sensor has be
534
594
  |--|--|
535
595
  | payload (boolean) | `true` turns the sensor on, `false` turns it off |
536
596
 
597
+ ### Change the sensitivity
598
+
599
+ Cameras and MotionAware areas can be made more or less sensitive. The highest value your device accepts is reported under `sensitivityMax`. To do this, pass an object with the following content:
600
+
601
+ |Property|Description|
602
+ |--|--|
603
+ | sensitivity (int) | Sensitivity between `0` and the reported maximum |
604
+
537
605
  ### Status messages from the node
538
606
 
539
607
  As soon as the sensor has registered a movement, the following status message is returned by the node:
@@ -546,6 +614,8 @@ As soon as the sensor has registered a movement, the following status message is
546
614
  | reachable (boolean / string) | `true` if the sensor is connected to the bridge, `unknown` if the connection status deviates |
547
615
  | connectionStatus (string) | The current connection status with the bridge in the form of a string. Can contain `connected`, `disconnected`, `connectivity_issue` or `unidirectional_incoming` as a value |
548
616
  | motion (boolean) | Indicates whether a motion has been registered |
617
+ | sensitivity (int / optional) | Currently set sensitivity, if the source supports it |
618
+ | sensitivityMax (int / optional) | Highest sensitivity the source accepts, if it supports it |
549
619
  | updated (string) | Time of the last update of the resource by HueMagic (ISO 8601) |
550
620
 
551
621
  #### Information about the sensor under `msg.info`
@@ -557,7 +627,7 @@ As soon as the sensor has registered a movement, the following status message is
557
627
  | uniqueId (string) | The unique ID of the sensor |
558
628
  | deviceId (string) | The unique ID of the device |
559
629
  | name (string) | The currently set name of the sensor |
560
- | type (string) | The type of the sensor (always `motion`) |
630
+ | type (string) | The type of the source. Can contain `motion`, `camera_motion`, `grouped_motion`, `convenience_area_motion` or `security_area_motion` as a value |
561
631
  | softwareVersion (string) | The current firmware of the sensor |
562
632
  | battery (float) | The current battery level of the sensor |
563
633
  | batteryState (string) | The current status of the battery level. Can contain `normal`, `low` or `critical` as a value |
@@ -575,14 +645,86 @@ Contains the complete status object (see output values above) of the last status
575
645
 
576
646
  If the status of the node has changed via a certain command, the entire command that was executed is also output. Otherwise this object will not be output by the node.
577
647
 
648
+ ## Hue Contact
649
+ The "Hue Contact" node reports whether a contact sensor (e.g. Hue Secure) is currently open or closed.
650
+
651
+ ![Hue Contact Example](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/nodes/hue-contact.png)
652
+
653
+ ### Node-RED Setup Instructions
654
+
655
+ Select the pre-configured Hue Bridge and click the search button to find all the available sensors. If you already know the ID of the sensor, you can also enter it here manually. You can either assign a new name for the sensor internally or choose the predefined name of the sensor. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue device updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected sensor after each deployment. If you would rather have the node stay silent until you send it something, activate "Only report after a command". It then ignores changes from the app or a switch and only answers your own commands.
656
+
657
+ If you do not select a sensor and use the node configuration in this way, the node works in the so-called "universal mode". In this mode, the node receives and outputs all status messages of the same type. You can also apply settings in universal mode to a specific sensor by transferring the corresponding sensor ID as a string in `msg.topic` together with your settings.
658
+
659
+ ### Get status
660
+
661
+ Outputs the current status of the sensor as soon as a `msg.payload` object with the following content has been transferred to the node. Alternatively, you can also press the button in the Node-RED interface without having to pass a message to the node beforehand.
662
+
663
+ |Property|Description|
664
+ |--|--|
665
+ | status (boolean) | Returns the current status of the sensor |
666
+
667
+ ### Turn the sensor on / off
668
+
669
+ If necessary, the sensor can be turned on and off remotely. If the sensor has been turned off, it no longer registers any contact changes and accordingly no longer outputs them. To do this, pass an object with the following content:
670
+
671
+ |Property|Description|
672
+ |--|--|
673
+ | payload (boolean) | `true` turns the sensor on, `false` turns it off |
674
+
675
+ ### Status messages from the node
676
+
677
+ As soon as the contact changes, the following status message is returned by the node:
678
+
679
+ #### Status object under `msg.payload`
680
+
681
+ |Property|Description|
682
+ |--|--|
683
+ | active (boolean) | Indicates whether the sensor is switched on or off |
684
+ | reachable (boolean / string) | `true` if the sensor is connected to the bridge, `unknown` if the connection status deviates |
685
+ | connectionStatus (string) | The current connection status with the bridge in the form of a string. Can contain `connected`, `disconnected`, `connectivity_issue` or `unidirectional_incoming` as a value |
686
+ | contact (string / boolean) | `contact` if the contact is closed, `no_contact` if it is open or `false` if the sensor has not reported yet |
687
+ | changed (string / boolean) | Time of the last contact change (ISO 8601) or `false` if the sensor has not reported yet |
688
+ | tampered (boolean) | Only available on sensors with tamper detection, `true` if the sensor has been tampered with |
689
+ | updated (string) | Time of the last update of the resource by HueMagic (ISO 8601) |
690
+
691
+ #### Information about the sensor under `msg.info`
692
+
693
+ |Property|Description|
694
+ |--|--|
695
+ | id (string) | Indicates the new ID of the sensor |
696
+ | idV1 (string / boolean) | Indicates the old ID of the sensor |
697
+ | uniqueId (string) | The unique ID of the sensor |
698
+ | deviceId (string) | The unique ID of the device |
699
+ | name (string) | The currently set name of the sensor |
700
+ | type (string) | The type of the sensor (always `contact`) |
701
+ | softwareVersion (string) | The current firmware of the sensor |
702
+ | battery (float / boolean) | The current battery level of the sensor, `false` when there is no battery |
703
+ | batteryState (string / boolean) | The current status of the battery level. Can contain `normal`, `low` or `critical` as a value, `false` when there is no battery |
704
+ | model (object) | Contains the model information of the sensor under `id`, `manufacturer`, `name`, `type` and `certified` |
705
+
706
+ #### Status changes under `msg.updated`
707
+
708
+ Lists individual parameters in the form of an object that have changed compared to the last state of the sensor. If no changes have been registered, this object is empty.
709
+
710
+ #### Last status of the sensor under `msg.lastState`
711
+
712
+ Contains the complete status object (see output values above) of the last status before the last registered change. If the last state of HueMagic has not yet been registered, it will output `false`.
713
+
714
+ #### Last command under `msg.command` (optional)
715
+
716
+ If the status of the node has changed via a certain command, the entire command that was executed is also output. Otherwise this object will not be output by the node.
717
+
578
718
  ## Hue Temperature
579
719
  The "Hue Temperature" node can call up and report the current ambient temperature from a suitable sensor on the bridge.
580
720
 
581
- ![Hue Temperature Example](https://user-images.githubusercontent.com/5302050/148696513-0a3afec5-e85b-40fb-be77-1fbfdc1fad35.png)
721
+ ![Hue Temperature Example](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/nodes/hue-temperature.png)
582
722
 
583
723
  ### Node-RED Setup Instructions
584
724
 
585
- Select the pre-configured Hue Bridge and click the search button to find all the available sensors. If you already know the ID of the sensor, you can also enter it here manually. You can either assign a new name for the sensor internally or choose the predefined name of the sensor. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue device updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected sensor after each deployment.
725
+ Select the pre-configured Hue Bridge and click the search button to find all the available sensors. If you already know the ID of the sensor, you can also enter it here manually. You can either assign a new name for the sensor internally or choose the predefined name of the sensor. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue device updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected sensor after each deployment. If you would rather have the node stay silent until you send it something, activate "Only report after a command". It then ignores changes from the app or a switch and only answers your own commands.
726
+
727
+ Motion sensors are usually mounted in a corner of the room and often measure a little too warm because of their own electronics. With the setting "Offset" you can calibrate the sensor without any detours: the value you enter here (e.g. `-1.5`) is added to every measured value before the node outputs it. The offset applies to all temperature units at the same time.
586
728
 
587
729
  If you do not select a sensor and use the node configuration in this way, the node works in the so-called "universal mode". In this mode, the node receives and outputs all status messages of the same type. You can also apply settings in universal mode to a specific sensor by transferring the corresponding sensor ID as a string in `msg.topic` together with your settings.
588
730
 
@@ -649,11 +791,13 @@ If the status of the node has changed via a certain command, the entire command
649
791
  ## Hue Brightness
650
792
  The "Hue Brightness" node can read the current light level from a suitable sensor on the bridge.
651
793
 
652
- ![Hue Brightness Example](https://user-images.githubusercontent.com/5302050/148696504-7d447ea8-bbe3-41e3-9a69-ac8e97ac8d90.png)
794
+ ![Hue Brightness Example](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/nodes/hue-brightness.png)
653
795
 
654
796
  ### Node-RED Setup Instructions
655
797
 
656
- Select the pre-configured Hue Bridge and click the search button to find all the available sensors. If you already know the ID of the sensor, you can also enter it here manually. You can either assign a new name for the sensor internally or choose the predefined name of the sensor. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue device updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected sensor after each deployment.
798
+ Select the pre-configured Hue Bridge and click the search button to find all the available sensors. If you already know the ID of the sensor, you can also enter it here manually. You can either assign a new name for the sensor internally or choose the predefined name of the sensor. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue device updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected sensor after each deployment. If you would rather have the node stay silent until you send it something, activate "Only report after a command". It then ignores changes from the app or a switch and only answers your own commands.
799
+
800
+ The setting "Dark below" determines from which light level the node considers a room to be dark. A room with a bright lamp needs a completely different value than a hallway without a window, so simply enter the number of lux that suits your room. The values `dark` and `daylight` then follow your setting instead of the default of 90 lux.
657
801
 
658
802
  If you do not select a sensor and use the node configuration in this way, the node works in the so-called "universal mode". In this mode, the node receives and outputs all status messages of the same type. You can also apply settings in universal mode to a specific sensor by transferring the corresponding sensor ID as a string in `msg.topic` together with your settings.
659
803
 
@@ -683,11 +827,12 @@ As soon as the sensor has detected a change in the light level, the following st
683
827
  |--|--|
684
828
  | active (boolean) | Indicates whether the sensor is turned on or off |
685
829
  | reachable (boolean / string) | `true` if the sensor is connected to the bridge, `unknown` if the connection status deviates |
686
- | connectionStatus (string) | The current connection status with the bridge in the form of a string. Can contain `connected`,` disconnected`, `connectivity_issue` or `unidirectional_incoming` as a value |
830
+ | connectionStatus (string) | The current connection status with the bridge in the form of a string. Can contain `connected`, `disconnected`, `connectivity_issue` or `unidirectional_incoming` as a value |
687
831
  | lux (int) | Indicates the real LUX value of the light level |
688
832
  | lightLevel (int) | Indicates the light intensity of the sensor |
689
833
  | dark (boolean) | `true`, if darkness was registered |
690
834
  | daylight (boolean) | `true`, if daylight was registered |
835
+ | darkThreshold (int) | The light level in lux below which the node reports darkness |
691
836
  | updated (string) | Time of the last update of the resource by HueMagic (ISO 8601) |
692
837
 
693
838
  #### Information about the sensor under `msg.info`
@@ -717,14 +862,158 @@ Contains the complete status object (see output values above) of the last status
717
862
 
718
863
  If the status of the node has changed via a certain command, the entire command that was executed is also output. Otherwise this object will not be output by the node.
719
864
 
865
+ ## Hue Speaker
866
+ The "Hue Speaker" node can play the sounds of a Hue Secure chime and use it as an indoor siren.
867
+
868
+ ![Hue Speaker Example](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/nodes/hue-speaker.png)
869
+
870
+ ### Node-RED Setup Instructions
871
+
872
+ Select the pre-configured Hue Bridge and click the search button to find all the available speakers. If you already know the ID of the speaker, you can also enter it here manually. You can either assign a new name for the speaker internally or choose the predefined name of the speaker. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue device updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected speaker after each deployment. If you would rather have the node stay silent until you send it something, activate "Only report after a command". It then ignores changes from the app or a switch and only answers your own commands.
873
+
874
+ If you do not select a speaker and use the node configuration in this way, the node works in the so-called "universal mode". In this mode, the node receives and outputs all status messages of the same type. You can also apply settings in universal mode to a specific speaker by transferring the corresponding speaker ID as a string in `msg.topic` together with your settings.
875
+
876
+ ### Get status
877
+
878
+ Outputs the current status of the speaker as soon as a `msg.payload` object with the following content has been transferred to the node. Alternatively, you can also press the button in the Node-RED interface without having to pass a message to the node beforehand.
879
+
880
+ |Property|Description|
881
+ |--|--|
882
+ | status (boolean) | Returns the current status of the speaker |
883
+
884
+ ### Play a sound
885
+
886
+ A speaker knows three separate channels. The `chime` is the doorbell sound, the `alarm` is the siren and the `alert` is a short notification. Which sounds a device actually knows is listed under `msg.info.sounds`. Transfer the following parameters to an `msg.payload` object:
887
+
888
+ |Property|Description|
889
+ |--|--|
890
+ | chime (string / object / boolean) | Name of the doorbell sound, `false` stops it again |
891
+ | alarm (string / object / boolean) | Name of the siren sound, `false` stops it again |
892
+ | alert (string / object / boolean) | Name of the notification sound, `false` stops it again |
893
+ | mute (boolean) | `true` mutes the speaker, `false` unmutes it again |
894
+
895
+ Instead of a plain sound name you can also pass an object to control volume and duration:
896
+
897
+ |Property|Description|
898
+ |--|--|
899
+ | sound (string) | Name of the sound, e.g. `ding_dong_classic` or `siren` |
900
+ | volume (int) | Volume in percent (0-100) |
901
+ | duration (float) | Playback time in seconds |
902
+
903
+ ### Status messages from the node
904
+
905
+ As soon as the speaker starts or stops playing, the following status message is returned by the node. Please note that the bridge reports the sound that was played last and only clears it well after playback has finished, so these values lag a little behind the audio.
906
+
907
+ #### Status object under `msg.payload`
908
+
909
+ |Property|Description|
910
+ |--|--|
911
+ | reachable (boolean / string) | `true` if the speaker is connected to the bridge, `unknown` if the connection status deviates |
912
+ | connectionStatus (string) | The current connection status with the bridge in the form of a string. Can contain `connected`, `disconnected`, `connectivity_issue` or `unidirectional_incoming` as a value |
913
+ | playing (boolean) | `true` while the speaker is playing any sound |
914
+ | chime (string / boolean) | Name of the doorbell sound that is playing or `false` |
915
+ | alarm (string / boolean) | Name of the siren sound that is playing or `false` |
916
+ | alert (string / boolean) | Name of the notification sound that is playing or `false` |
917
+ | muted (boolean) | Indicates whether the speaker is muted |
918
+ | updated (string) | Time of the last update of the resource by HueMagic (ISO 8601) |
919
+
920
+ #### Information about the speaker under `msg.info`
921
+
922
+ |Property|Description|
923
+ |--|--|
924
+ | id (string) | Indicates the new ID of the speaker |
925
+ | idV1 (string / boolean) | Indicates the old ID of the speaker |
926
+ | uniqueId (string) | The unique ID of the speaker |
927
+ | deviceId (string) | The unique ID of the device |
928
+ | name (string) | The currently set name of the speaker |
929
+ | type (string) | The type of the device (always `speaker`) |
930
+ | softwareVersion (string) | The current firmware of the speaker |
931
+ | battery (float / boolean) | The current battery level of the speaker, `false` when there is no battery |
932
+ | batteryState (string / boolean) | The current status of the battery level. Can contain `normal`, `low` or `critical` as a value, `false` when there is no battery |
933
+ | sounds (object) | Contains the sounds this device knows under `chime`, `alarm` and `alert` |
934
+ | model (object) | Contains the model information of the speaker under `id`, `manufacturer`, `name`, `type` and `certified` |
935
+
936
+ #### Status changes under `msg.updated`
937
+
938
+ Lists individual parameters in the form of an object that have changed compared to the last state of the speaker. If no changes have been registered, this object is empty.
939
+
940
+ #### Last status of the speaker under `msg.lastState`
941
+
942
+ Contains the complete status object (see output values above) of the last status before the last registered change. If the last state of HueMagic has not yet been registered, it will output `false`.
943
+
944
+ #### Last command under `msg.command` (optional)
945
+
946
+ If the status of the node has changed via a certain command, the entire command that was executed is also output. Otherwise this object will not be output by the node.
947
+
948
+ ## Hue Automation
949
+ The "Hue Automation" node can enable and disable the automations you have created in the Philips Hue app.
950
+
951
+ ![Hue Automation Example](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/nodes/hue-automation.png)
952
+
953
+ ### Node-RED Setup Instructions
954
+
955
+ Select the pre-configured Hue Bridge and click the search button to find all the available automations. If you already know the ID of the automation, you can also enter it here manually. You can either assign a new name for the automation internally or choose the predefined name. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue any updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you activate this setting, you will receive a status message for the currently selected automation after each deployment. If you would rather have the node stay silent until you send it something, activate "Only report after a command". It then ignores changes from the app or a switch and only answers your own commands.
956
+
957
+ If you do not select an automation and use the node configuration in this way, the node works in the so-called "universal mode". In this mode, the node receives and outputs all status messages of the same type. You can also apply settings in universal mode to a specific automation by transferring the corresponding automation ID as a string in `msg.topic` together with your settings.
958
+
959
+ ### Enable / disable the automation
960
+
961
+ An automation that has been disabled stays on the bridge and can be enabled again at any time. To do this, pass an object with the following content:
962
+
963
+ |Property|Description|
964
+ |--|--|
965
+ | payload (boolean) | `true` enables the automation, `false` disables it |
966
+ | enabled (boolean) | Same as above, if you prefer to pass an object |
967
+ | toggle (boolean / any) | Toggles between enabled and disabled, depending on the previous status |
968
+
969
+ ### Status messages from the node
970
+
971
+ As soon as the automation changes, the following status message is returned by the node:
972
+
973
+ #### Status object under `msg.payload`
974
+
975
+ |Property|Description|
976
+ |--|--|
977
+ | enabled (boolean) | Indicates whether the automation is enabled |
978
+ | running (boolean) | `true` while the bridge is actually executing the automation |
979
+ | status (string / boolean) | The current status. Can contain `initializing`, `running`, `disabled` or `errored` as a value |
980
+ | lastError (string / boolean) | The last error reported by the bridge or `false` |
981
+ | updated (string) | Time of the last update of the resource by HueMagic (ISO 8601) |
982
+
983
+ #### Information about the automation under `msg.info`
984
+
985
+ |Property|Description|
986
+ |--|--|
987
+ | id (string) | Indicates the ID of the automation |
988
+ | idV1 (string / boolean) | Indicates the old ID of the automation |
989
+ | name (string / boolean) | The name you gave the automation in the Philips Hue app |
990
+ | type (string) | The type of the resource (always `automation`) |
991
+ | script (string / boolean) | The ID of the behaviour script behind the automation |
992
+
993
+ #### Configuration under `msg.configuration`
994
+
995
+ Contains the settings of the automation as they were stored by the Philips Hue app. The structure depends on the type of the automation and is passed through unchanged.
996
+
997
+ #### Status changes under `msg.updated`
998
+
999
+ Lists individual parameters in the form of an object that have changed compared to the last state of the automation. If no changes have been registered, this object is empty.
1000
+
1001
+ #### Last status of the automation under `msg.lastState`
1002
+
1003
+ Contains the complete status object (see output values above) of the last status before the last registered change. If the last state of HueMagic has not yet been registered, it will output `false`.
1004
+
1005
+ #### Last command under `msg.command` (optional)
1006
+
1007
+ If the status of the node has changed via a certain command, the entire command that was executed is also output. Otherwise this object will not be output by the node.
1008
+
720
1009
  ## Hue Rule
721
1010
  The "Hue Rule" node can activate or deactivate rules saved in the bridge and call up their settings.
722
1011
 
723
- ![Hue Rule Example](https://user-images.githubusercontent.com/5302050/148696511-2bbd6940-2b38-40a0-a68a-ad52631add26.png)
1012
+ ![Hue Rule Example](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/nodes/hue-rules.png)
724
1013
 
725
1014
  ### Node-RED Setup Instructions
726
1015
 
727
- Select the pre-configured Hue Bridge and hit the search button to find all the available rules. If you already know the ID of the rule, you can also enter it here manually. Alternatively, you can also assign a new name or choose the predefined name of the rule.
1016
+ Select the pre-configured Hue Bridge and hit the search button to find all the available rules. If you already know the ID of the rule, you can also enter it here manually. Alternatively, you can also assign a new name or choose the predefined name of the rule. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue any updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you would rather have the node stay silent until you send it something, activate "Only report after a command". It then ignores changes from the app or a switch and only answers your own commands.
728
1017
 
729
1018
  If you do not select a rule and use the node configuration in this way, the node works in the so-called "universal mode". In this mode, the node receives and outputs all status messages of the same type. You can also apply settings in universal mode to a specific rule by transferring the corresponding rule ID as a string in `msg.topic` together with your settings.
730
1019
 
@@ -794,96 +1083,190 @@ Contains the complete object (see output values above) of the last status before
794
1083
 
795
1084
  If the status of the node has changed via a certain command, the entire command that was executed is also output. Otherwise this object will not be output by the node.
796
1085
 
1086
+ ## Hue Sync Box
1087
+ The "Hue Sync Box" node controls a Philips Hue Play HDMI Sync Box and reports what it is currently doing.
1088
+
1089
+ ![Hue Sync Box Example](https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/nodes/hue-syncbox.png)
1090
+
1091
+ ### Node-RED Setup Instructions
1092
+
1093
+ The sync box is not connected to your Hue Bridge but speaks its own local API, so it needs its own configuration. Enter the IP address of your sync box and click the button next to the access token field. Then press and hold the button on the sync box until its LED blinks green — HueMagic keeps asking the box for a minute and stores the token as soon as it answers.
1094
+
1095
+ Since the sync box does not push its state, HueMagic asks it regularly. You can set how often in the configuration, the default is every 10 seconds. Optionally, you can also deactivate all automatic status messages for this node by clicking the setting "Skip events from node". The node will then no longer issue any updates. Alternatively, you can also choose whether the node's initialization message should not be suppressed when Node-RED is started. If you would rather have the node stay silent until you send it something, activate "Only report after a command". It then ignores changes from the app or a switch and only answers your own commands.
1096
+
1097
+ ### Get status
1098
+
1099
+ Outputs the current status of the sync box as soon as a `msg.payload` object with the following content has been transferred to the node. Alternatively, you can also press the button in the Node-RED interface without having to pass a message to the node beforehand.
1100
+
1101
+ |Property|Description|
1102
+ |--|--|
1103
+ | status (boolean) | Returns the current status of the sync box |
1104
+
1105
+ ### Turn on / off (simple)
1106
+
1107
+ To quickly switch the sync box on or off, pass an object with the following content to the node. Switching it on returns to the sync mode that was used last.
1108
+
1109
+ |Property|Description|
1110
+ |--|--|
1111
+ | payload (boolean) | `true` starts syncing, `false` puts the box into power save |
1112
+
1113
+ ### Sync box commands (extended)
1114
+
1115
+ Transfer the following parameters to an `msg.payload` object to control the sync box in more detail:
1116
+
1117
+ |Property|Description|
1118
+ |--|--|
1119
+ | mode (string) | One of `powersave`, `passthrough`, `video`, `game`, `music` or `ambient` |
1120
+ | sync (boolean) | `true` starts the synchronisation, `false` stops it |
1121
+ | toggle (boolean / any) | Toggles the synchronisation, depending on the previous state |
1122
+ | passthrough (boolean) | `true` passes the picture through to your TV without syncing |
1123
+ | intensity (string) | How strongly the lights follow the picture. One of `subtle`, `moderate`, `high` or `intense` |
1124
+ | brightness (int) | Percentage value of the brightness (0-100) |
1125
+ | brightnessLevel (int) | Numerical value of the brightness as the box counts it (0-200, where 100 is the baseline) |
1126
+ | incrementBrightness (int / boolean) | Specifies by how many percent the sync box should be made brighter or `true` for 10% steps |
1127
+ | decrementBrightness (int / boolean) | Specifies by how many percent the sync box should be made darker or `true` for 10% steps |
1128
+ | input (string / int) | The HDMI input to show, either `input1` to `input4` or simply `1` to `4` |
1129
+ | entertainmentArea (string) | The entertainment area the box should drive, e.g. `groups/13` |
1130
+
1131
+ ### Status messages from the node
1132
+
1133
+ Whenever the state of the sync box changes, the following status message is returned by the node:
1134
+
1135
+ #### Status object under `msg.payload`
1136
+
1137
+ |Property|Description|
1138
+ |--|--|
1139
+ | on (boolean) | `false` while the box is in power save |
1140
+ | syncing (boolean) | `true` while the lights follow the picture |
1141
+ | passthrough (boolean) | `true` while the box passes the picture through |
1142
+ | mode (string) | The currently active mode |
1143
+ | lastSyncMode (string) | The sync mode that was used last |
1144
+ | intensity (string / boolean) | Intensity of the currently active mode |
1145
+ | brightness (int / boolean) | Brightness in percent |
1146
+ | brightnessLevel (int / boolean) | Brightness as the box counts it (0-200) |
1147
+ | input (string / boolean) | The HDMI input that is currently shown |
1148
+ | inputs (object) | All four HDMI inputs with their `name`, `type`, `status` (`unplugged`, `plugged`, `linked` or `unknown`) and whether they are `active` |
1149
+ | entertainmentArea (string / boolean) | The entertainment area the box drives |
1150
+ | updated (string) | Time of the last update of the resource by HueMagic (ISO 8601) |
1151
+
1152
+ #### Information about the sync box under `msg.info`
1153
+
1154
+ |Property|Description|
1155
+ |--|--|
1156
+ | id (string / boolean) | The unique ID of the sync box |
1157
+ | name (string / boolean) | The currently set name of the sync box |
1158
+ | type (string) | The type of the device (always `syncbox`) |
1159
+ | ipAddress (string / boolean) | The IP address the box reports for itself |
1160
+ | softwareVersion (string / boolean) | The current firmware of the sync box |
1161
+ | apiLevel (int / boolean) | The API level of the sync box |
1162
+ | ledMode (int / boolean) | The currently set LED mode |
1163
+ | wifi (object / boolean) | Contains `ssid` and `strength` of the wireless connection |
1164
+ | model (object) | Contains the model information of the sync box under `id`, `manufacturer` and `name` |
1165
+
1166
+ #### Status changes under `msg.updated`
1167
+
1168
+ Lists individual parameters in the form of an object that have changed compared to the last state of the sync box. If no changes have been registered, this object is empty.
1169
+
1170
+ #### Last status of the sync box under `msg.lastState`
1171
+
1172
+ Contains the complete status object (see output values above) of the last status before the last registered change. If the last state of HueMagic has not yet been registered, it will output `false`.
1173
+
1174
+ #### Last command under `msg.command` (optional)
1175
+
1176
+ If the status of the node has changed via a certain command, the entire command that was executed is also output. Otherwise this object will not be output by the node.
1177
+
797
1178
  # Changelog
798
1179
 
799
- ### v4.2.2 (latest)
1180
+ ### v5.0.0 (latest)
1181
+
1182
+ > **Attention!** HueMagic v5 requires **Node.js 18+** and **Node-RED v3+**. The "Hue Group" node now speaks the CLIP/v2 API instead of the legacy API, and the alert effect on the "Hue Light" & "Hue Group" nodes is now played by the bridge itself, which also restores the previous state on its own. Your existing flows keep working as they are — no reconfiguration needed.
1183
+
1184
+ **New devices and features**
1185
+
1186
+ * New "Hue Speaker" node plays the sounds of a Hue Secure chime and can use it as an indoor siren
1187
+ * New "Hue Automation" node enables and disables the automations you created in the Philips Hue app — the modern successor to the rules of the legacy API
1188
+ * The "Hue Motion" node now also covers Hue Secure cameras and, on the Hue Bridge Pro, the MotionAware areas that turn your lights into motion sensors
1189
+ * Cameras and MotionAware areas can be made more or less sensitive
1190
+ * The "Hue Buttons" node now also reports the Hue Secure video doorbell
1191
+ * The Hue wall switch module can be switched between rocker and pushbutton mode ([#331](https://github.com/Foddy/node-red-contrib-huemagic/issues/331)) (thx @KGS501)
1192
+ * The "Hue Light" node can play the built-in effects of a light (`candle`, `fire`, `sparkle`, `prism` and more)
1193
+ * The "Hue Light" node can play the `sunrise` and `sunset` simulation of a light for up to six hours
1194
+ * The behaviour of a light after a power cut can now be configured (`safety`, `powerfail`, `last_on_state` or `custom`)
1195
+ * The mode of a gradient can now be set, so the colors are spread as an interpolated, mirrored, pixelated or segmented palette
1196
+ * The "Hue Motion" and "Hue Brightness" nodes now also read the grouped sensors the bridge aggregates for a room or zone
1197
+ * New "Hue Sync Box" node controls a Philips Hue Play HDMI Sync Box over its own local API — modes, intensity, brightness, HDMI input and entertainment area ([#195](https://github.com/Foddy/node-red-contrib-huemagic/issues/195)) (thx @masterfish1)
1198
+ * The "Hue Scene" node can now recall a scene with its own transition time and brightness, so the same scene can be applied slowly or dimmed depending on the time of day ([#392](https://github.com/Foddy/node-red-contrib-huemagic/issues/392)) (thx @guenter-ms)
1199
+ * Scenes in the node configuration are now sorted by room or zone first and then by name, so the scenes of one room stay together ([#259](https://github.com/Foddy/node-red-contrib-huemagic/issues/259)) (thx @hendersj)
1200
+ * The "Hue Brightness" node lets you set the light level below which a room counts as dark instead of insisting on a fixed value ([#279](https://github.com/Foddy/node-red-contrib-huemagic/issues/279)) (thx @kazzyUK)
1201
+ * The "Hue Temperature" node can correct the measured value with an offset, so a sensor that reads too warm can finally be calibrated ([#205](https://github.com/Foddy/node-red-contrib-huemagic/issues/205)) (thx @tutenchamun)
1202
+ * Every node that reports events can now be set to "Only report after a command", so it stays silent when a light is changed in the app or by a switch and only answers your own commands ([#247](https://github.com/Foddy/node-red-contrib-huemagic/issues/247)) (thx @adams-family)
1203
+ * New example flows for the "Hue Speaker", "Hue Automation" and "Hue Sync Box" nodes
1204
+
1205
+ **Philips Hue Bridge Pro**
1206
+
1207
+ * Support for the Philips Hue Bridge Pro: the API key is now requested over HTTPS, because modern bridges no longer answer on plain HTTP ([#454](https://github.com/Foddy/node-red-contrib-huemagic/issues/454)) ([#452](https://github.com/Foddy/node-red-contrib-huemagic/issues/452)) (thx @ozdeadmeat & @JGoor)
1208
+ * Requesting the API key now keeps asking the bridge for a minute instead of guessing a single moment
1209
+ * Fixed a crash that took down the whole Node-RED instance as soon as a Bridge Pro streamed an unknown service type ([#453](https://github.com/Foddy/node-red-contrib-huemagic/issues/453)) (thx @lmuser22)
1210
+ * Bridges are now also discovered when they run on a port other than 443
1211
+
1212
+ **Stability**
1213
+
1214
+ * HueMagic no longer takes Node-RED down with it — all known uncaught exceptions and unhandled promise rejections have been closed ([#435](https://github.com/Foddy/node-red-contrib-huemagic/issues/435)) ([#398](https://github.com/Foddy/node-red-contrib-huemagic/issues/398)) ([#388](https://github.com/Foddy/node-red-contrib-huemagic/issues/388)) ([#366](https://github.com/Foddy/node-red-contrib-huemagic/issues/366)) ([#336](https://github.com/Foddy/node-red-contrib-huemagic/issues/336)) ([#326](https://github.com/Foddy/node-red-contrib-huemagic/issues/326)) ([#321](https://github.com/Foddy/node-red-contrib-huemagic/issues/321)) ([#312](https://github.com/Foddy/node-red-contrib-huemagic/issues/312)) ([#306](https://github.com/Foddy/node-red-contrib-huemagic/issues/306)) ([#304](https://github.com/Foddy/node-red-contrib-huemagic/issues/304)) ([#270](https://github.com/Foddy/node-red-contrib-huemagic/issues/270)) (thx @MarkRoks, @TerryMcgurk, @CyrielRct, @Wombosvideo, @Zootopie-LG, @ddlsmurf, @nibbsification, @Darkman1900, @bmdevx & @McFozzy75)
1215
+ * Commands are now paced to what the bridge actually accepts (about 10 light and 1 group command per second), so the worker setting no longer has to be turned down to 1 to avoid 429/503 errors ([#295](https://github.com/Foddy/node-red-contrib-huemagic/issues/295)) ([#350](https://github.com/Foddy/node-red-contrib-huemagic/issues/350)) ([#404](https://github.com/Foddy/node-red-contrib-huemagic/issues/404)) ([#431](https://github.com/Foddy/node-red-contrib-huemagic/issues/431)) ([#276](https://github.com/Foddy/node-red-contrib-huemagic/issues/276)) (thx @Brewj, @ralfhille, @hazymat, @bevrat & @hurenkam)
1216
+ * The connection to the bridge is now rebuilt with a backoff instead of a reconnect storm, and a single failed request no longer restarts the whole bridge ([#372](https://github.com/Foddy/node-red-contrib-huemagic/issues/372)) ([#353](https://github.com/Foddy/node-red-contrib-huemagic/issues/353)) (thx @develmac & @Jai-Gogineni)
1217
+ * The watchdog no longer tears down the event subscription every ten seconds, which stopped sensors and switches from reporting after a short while ([#384](https://github.com/Foddy/node-red-contrib-huemagic/issues/384)) ([#396](https://github.com/Foddy/node-red-contrib-huemagic/issues/396)) ([#358](https://github.com/Foddy/node-red-contrib-huemagic/issues/358)) ([#344](https://github.com/Foddy/node-red-contrib-huemagic/issues/344)) (thx @spacewalker0815, @bobhobelman, @otoivanen & @isaac-the-newt)
1218
+ * Nodes now detach from the bridge when they are removed, so a re-deploy no longer makes them receive every event twice, three times, … ([#297](https://github.com/Foddy/node-red-contrib-huemagic/issues/297)) ([#301](https://github.com/Foddy/node-red-contrib-huemagic/issues/301)) ([#412](https://github.com/Foddy/node-red-contrib-huemagic/pull/412)) (thx @FreeTechNick, @ScottBevin & @FredBlo)
1219
+ * One event in a batch that could not be assigned no longer discards all the following ones
1220
+ * Devices that are added to or removed from the bridge are now picked up without restarting Node-RED
1221
+ * Requests to the bridge never go through a configured HTTP proxy anymore, which broke the TLS connection on some setups ([#436](https://github.com/Foddy/node-red-contrib-huemagic/issues/436)) ([#265](https://github.com/Foddy/node-red-contrib-huemagic/issues/265)) (thx @rsch90 & @HonestJohn61)
1222
+ * Timers and event listeners are properly cleaned up when a node is removed
1223
+
1224
+ **Nodes**
1225
+
1226
+ * The "Hue Group" node now speaks CLIP/v2, which brings back `incrementBrightness` & `decrementBrightness` and fixes groups without a legacy identifier ([#380](https://github.com/Foddy/node-red-contrib-huemagic/issues/380)) ([#400](https://github.com/Foddy/node-red-contrib-huemagic/issues/400)) ([#405](https://github.com/Foddy/node-red-contrib-huemagic/issues/405)) (thx @peterbaker, @SierraLimaOscar & @guenter-ms)
1227
+ * The "Hue Group" node now also reports `brightness`, `brightnessLevel` and the current color ([#292](https://github.com/Foddy/node-red-contrib-huemagic/issues/292)) (thx @Schmetterfliege)
1228
+ * Universal mode no longer fails on every other message and the "Hue Group" node finally receives messages in it ([#300](https://github.com/Foddy/node-red-contrib-huemagic/issues/300)) ([#305](https://github.com/Foddy/node-red-contrib-huemagic/issues/305)) ([#418](https://github.com/Foddy/node-red-contrib-huemagic/issues/418)) (thx @oxivanisher, @aL1aL7 & @vongomben)
1229
+ * "The group is not yet available" is gone — groups, zones and third party devices are resolved correctly again ([#373](https://github.com/Foddy/node-red-contrib-huemagic/issues/373)) ([#374](https://github.com/Foddy/node-red-contrib-huemagic/issues/374)) ([#376](https://github.com/Foddy/node-red-contrib-huemagic/issues/376)) ([#314](https://github.com/Foddy/node-red-contrib-huemagic/issues/314)) ([#378](https://github.com/Foddy/node-red-contrib-huemagic/issues/378)) ([#377](https://github.com/Foddy/node-red-contrib-huemagic/issues/377)) ([#407](https://github.com/Foddy/node-red-contrib-huemagic/issues/407)) ([#395](https://github.com/Foddy/node-red-contrib-huemagic/issues/395)) (thx @Eggn1n3, @MarkRoks, @marsjupiter1, @andesse, @djiwondee, @Stieger81, @McFozzy75, @otoivanen & @traverseda)
1230
+ * Turning a light or group off now always reaches the bridge, even if the cached state claimed it was already off ([#334](https://github.com/Foddy/node-red-contrib-huemagic/issues/334)) (thx @dewenni)
1231
+ * Nodes no longer get stuck on "executing command…" after a command that changed nothing ([#315](https://github.com/Foddy/node-red-contrib-huemagic/issues/315)) ([#345](https://github.com/Foddy/node-red-contrib-huemagic/issues/345)) ([#382](https://github.com/Foddy/node-red-contrib-huemagic/issues/382)) ([#394](https://github.com/Foddy/node-red-contrib-huemagic/issues/394)) (thx @BlaM, @NodeRedFan & @adb336)
1232
+ * The alert effect is no longer capped at 15 seconds and the bridge now restores the previous state itself, so groups no longer stay dark afterwards ([#451](https://github.com/Foddy/node-red-contrib-huemagic/issues/451)) ([#294](https://github.com/Foddy/node-red-contrib-huemagic/issues/294)) (thx @biosmanager & @spudje)
1233
+ * The "Hue Buttons" node now reports the rotation of the Hue Tap Dial Switch and the Lutron Aurora ([#385](https://github.com/Foddy/node-red-contrib-huemagic/issues/385)) ([#275](https://github.com/Foddy/node-red-contrib-huemagic/issues/275)) (thx @WhiteSockedDancer & @hurenkam)
1234
+ * The "Hue Buttons" node now also recognizes `long_press`, `long_release` and `double_short_release` ([#129](https://github.com/Foddy/node-red-contrib-huemagic/issues/129)) (thx @Tscherno)
1235
+ * Sensors read their values from the reports of the current API, so motion, temperature and brightness stay correct on new firmwares ([#384](https://github.com/Foddy/node-red-contrib-huemagic/issues/384)) ([#396](https://github.com/Foddy/node-red-contrib-huemagic/issues/396)) ([#279](https://github.com/Foddy/node-red-contrib-huemagic/issues/279)) (thx @spacewalker0815, @bobhobelman & @kazzyUK)
1236
+ * Devices without a battery (e.g. mains powered sensors) no longer break their node ([#446](https://github.com/Foddy/node-red-contrib-huemagic/issues/446)) (thx @DangersTR)
1237
+ * The "Hue Contact" node now also reports whether the sensor has been tampered with and finally got its documentation and example flow
1238
+ * The "Hue Scene" node supports smart scenes and no longer fails on scenes whose group has been deleted ([#447](https://github.com/Foddy/node-red-contrib-huemagic/issues/447)) ([#386](https://github.com/Foddy/node-red-contrib-huemagic/issues/386)) ([#449](https://github.com/Foddy/node-red-contrib-huemagic/issues/449)) ([#316](https://github.com/Foddy/node-red-contrib-huemagic/issues/316)) (thx @Himola, @danieldaeschle, @stijnbrocker & @andesse)
1239
+ * The searches in the node configuration now report the real error instead of a generic one ([#449](https://github.com/Foddy/node-red-contrib-huemagic/issues/449)) ([#274](https://github.com/Foddy/node-red-contrib-huemagic/issues/274)) (thx @stijnbrocker & @TomGeoDK)
1240
+ * `msg.lastState` now really contains the previous state instead of a reference to the current one ([#322](https://github.com/Foddy/node-red-contrib-huemagic/issues/322)) (thx @valiquette)
1241
+ * Fixed the random color option, which threw an error instead of picking a color
1242
+ * Fixed `brightnessLevel: 0` not turning a light or group off
1243
+ * Fixed the state restoration after an animation on the "Hue Group" node
1244
+ * Lights and groups no longer flicker when an animation restores their previous state
1245
+
1246
+ **Localization**
1247
+
1248
+ * All error messages, node states and log outputs are now translated instead of being hardcoded in English
1249
+ * HueMagic now speaks ten languages: English, German, Spanish, French, Italian, Dutch, Portuguese, Polish, Turkish and Greek — node configuration, status texts, error messages and the complete node documentation
1250
+ * The example flows are translated as well and live in one folder per language, so you can import them in your own language
1251
+ * Completed the German translation, which was missing several texts in the node configuration
1252
+ * The node icons are now rendered from the SVG versions that have been shipped since v4 but were never used
1253
+
1254
+ **Under the hood**
1255
+
1256
+ * Requires Node.js 18+ and Node-RED v3+, tested against Node-RED v5 on Node.js 24
1257
+ * The event stream is now spoken directly instead of through the `eventsource` dependency, which had dropped support for older Node.js versions
1258
+ * Connections to the bridge are kept alive instead of renegotiating TLS for every single request
1259
+ * The HTTP endpoints of the node configuration now require an authenticated Node-RED editor session
1260
+ * Updated all dependencies to their latest versions
1261
+ * Added a test suite (`npm test`) that also guards the translations
1262
+ * Published again, so all the fixes that were sitting on master since 2022 finally reach everyone ([#414](https://github.com/Foddy/node-red-contrib-huemagic/issues/414)) (thx @AleksCee)
1263
+
1264
+ ### v4.2.2
800
1265
 
801
1266
  * HueMagic can now be installed again on older Node-RED versions without official support
802
1267
  * Fixed an issue for Hue Group nodes not getting/updating their current status ([#342](https://github.com/Foddy/node-red-contrib-huemagic/issues/342)) (thx @bmdevx)
803
1268
  * Fixed an error with non-functioning node configurations
804
1269
 
805
- ### v4.2.1
806
-
807
- * Commands are now re-executed up to three times if they fail due to a bridge timeout
808
- * The "image" option on the "Hue Light" node will now set the corresponding gradient colors on supported resources
809
- * Better handling of broken connections to the bridge ([#309](https://github.com/Foddy/node-red-contrib-huemagic/pull/309)) (thx)
810
- * Fixed an error with the "Hue Scenes" node on newer bridge firmwares ([#335](https://github.com/Foddy/node-red-contrib-huemagic/issues/335)) ([#339](https://github.com/Foddy/node-red-contrib-huemagic/pull/339)) (thx)
811
- * Fixed an uncaught exception on newer bridge firmwares ([#302](https://github.com/Foddy/node-red-contrib-huemagic/issues/302)) ([#309](https://github.com/Foddy/node-red-contrib-huemagic/pull/309)) (thx)
812
- * Updated dependencies to the latest versions
813
- * Fixed some typos here and there
814
-
815
- ### v4.1.0
816
-
817
- * New queue worker throttles the number of parallel requests to the bridge to avoid 503 API limit errors (can be configured in the Bridge configuration)
818
- * Resources are now alphabetically sorted in the node´s configuration interface ([#282](https://github.com/Foddy/node-red-contrib-huemagic/pull/282)) (thx)
819
- * "Hue Brightness" node was optimized to output more accurate "dark" and "dayLight" values
820
- * Several optimizations in the documentation of some nodes
821
-
822
- ### v4.0.5
823
-
824
- * The "Hue Group" node now contains the "resources" information with all linked resources behind the group/zone
825
- * Fixed an issue that caused Node-RED to restart if a command was sent before a node was initialized
826
-
827
- ### v4.0.4
828
-
829
- * Fixed an issue with the bridge config node checking for updates too frequently ([#246](https://github.com/Foddy/node-red-contrib-huemagic/issues/246#issuecomment-1009376442))
830
- * Fixed an issue with multiple bridges configured
831
-
832
- ### v4.0.3
833
-
834
- > **Attention!** HueMagic v4+ has been almost completely rewritten under the hood and requires at least the (square-shaped) Philips Hue Bridge firmware 1948086000+ from November 1st, 2021 ([Upgrade instructions](https://www.lighting.philips.com/content/B2C/en_US/microsites/meethue/marketing-catalog/huewireless_ca/support/security-advisory/general/where-and-how-can-i-update-my-hue-system-with-the-latest-software.html)) and Node-RED v1+ ([Upgrade instructions](https://nodered.org/docs/getting-started/local#upgrading-node-red)). If you are upgrading from a previous HueMagic version to the v4, you will have to reconfigure (not completely rebuild) all nodes by clicking them and selecting the appropriate device from the list. This also applies to nodes / functions that are operated in universal mode, as the numeric identifiers of the latest Philips Hue API version have been replaced in UUIDs. The nodes "Hue Switch", "Hue Button" & "Hue Tap" have been replaced in v4 by the universal and uniform node "Hue Buttons", which works with all button / switch devices that are connected to the Hue Bridge (please note here also the new API in the documentation). The request and return objects of the individual nodes are largely compatible with older HueMagic versions - with the exception of the nodes "Hue Bridge", "Hue Buttons", "Hue Scene" & "Hue Group". These need to be adjusted in the v4. Make sure that you meet the minimum technical requirements and have a quiet minute for the migration before upgrading to the v4.
835
-
836
- * HueMagic speaks now directly with the bridge without any submodules *(huejay dependency removed)*
837
- * Migrated to the newest CLIP/v2 API version from the Philips Hue bridge
838
- * Nodes are now updated via push notifications (SSE) from the bridge instead of periodic polling
839
- * Instant "current status" queries on each node with no loading time
840
- * "Hue Buttons" node supports all new Philips Hue buttons/switches (e.g. Dimmer Switch v2, Hue Wall Switch…)
841
- * All nodes provide additional property information in the output (check docs)
842
- * New universal node "Hue Buttons" replaces the following nodes: "Hue Switch", "Hue Button", "Hue Tap"
843
- * New "updated" object for all nodes, which only contains the properties that have been updated since the last state
844
- * New configuration option to suppress first message after node initialization (for all nodes)
845
- * New gradient color setting for compatible light sources (in "Hue Light" node)
846
- * New inject button for almost all nodes, which triggers the current status of a node
847
- * New "universal mode" support for the "Hue Rule" node
848
- * New SVG-version of each node icon for higher quality rendering in the Node-RED UI
849
- * New and full featured examples for each node right inside Node-RED
850
- * New color mix feature in "Hue Light" nodes with the ability to mix the current light color with another
851
- * New automatic brightness support based on the current time for "Hue Light" & "Hue Group" nodes
852
- * New "Superhero", "Neon City" & "Christmas" (for next year, sorry) animations in "Hue Magic" node
853
- * The custom alert effect on "Hue Light" & "Hue Group" nodes can now also be configured in brightness
854
- * All nodes will now also forward the last command that has been applied ([#249](https://github.com/Foddy/node-red-contrib-huemagic/issues/249))
855
- * "Hue Temperature" & "Hue Brightness" nodes can now also be activated & deactivated
856
- * "Hue Light" & "Hue Group" nodes can now also receive XY color settings
857
- * "Hue Light" & "Hue Group" can now also receive a named color temperature setting
858
- * "Hue Light" & "Hue Group" nodes can now receive future brightness states in "turned off" mode ([#244](https://github.com/Foddy/node-red-contrib-huemagic/issues/244))
859
- * Automatic light temperature setting outputs now values from 153 (coldest) to 500 (warmest)
860
- * Automatic color correction based on the light´s capabilities for more accurate color settings
861
- * Optimized node editor configuration UI to better match the current Node-RED´s UI
862
- * The option for "automatic firmware updates" on the bridge moved to the bridge configuration node
863
- * "Hue Group" node does no longer contain the "msg.info.model" & "msg.info.class" property
864
- * Fixed timeout connection issues to the bridge
865
- * Fixed an issue with non stopping custom animations ([#222](https://github.com/Foddy/node-red-contrib-huemagic/issues/222)), ([#224](https://github.com/Foddy/node-red-contrib-huemagic/issues/224)) & ([#226](https://github.com/Foddy/node-red-contrib-huemagic/pull/226)) (thx)
866
- * Node-RED will no longer crash if there is no active connection to the bridge ([#237](https://github.com/Foddy/node-red-contrib-huemagic/issues/237))
867
- * Fixed an issue that prevented the light / group from not reporting its own status when queried & node events were deactivated ([#248](https://github.com/Foddy/node-red-contrib-huemagic/issues/248))
868
- * Fixed an issue with nodes in universal mode ([#245](https://github.com/Foddy/node-red-contrib-huemagic/issues/245))
869
- * A possible attack target has been fixed ([#217](https://github.com/Foddy/node-red-contrib-huemagic/issues/217))
870
- * Moved away from "moment.js" to "Day.js" for date/time formatting inside the nodes
871
- * Updated README and help section on each node
872
- * Updated dependencies to the latest version
873
-
874
- ### v3.0.0
875
- * Hue Motion, Hue Brightness, Hue Tap, Hue Switch & Hue Button nodes can now receive a status request
876
- * New "Universal Mode" for the Hue Motion, Hue Brightness, Hue Tap, Hue Switch & Hue Button nodes
877
- * The "colorTemp" property for Hue Light & Hue Group nodes can now also be set to "cold", "normal", "warm" or "auto"
878
- * New dynamic and automatically calculated color temperature based on the current time ("auto" mode in "colorTemp" property)
879
- * Nodes in "Universal Mode" are now also able to receive all events from devices of its type (optional)
880
- * Hue Magic animations are now prerendered to improve performance
881
- * 3 new Hue Magic animations ("Milkyway", "Beach" & "Forest")
882
- * New (simple) Hue Button example flow
883
- * Updated docs for almost all nodes and README
884
- * Fixed an error with future states and the HTTP request node ([#200](https://github.com/Foddy/node-red-contrib-huemagic/pull/200))
885
- * Other optimizations, dependency updates and clean up
886
-
887
1270
  ### Previous versions
888
1271
  The full changelog [changelog](https://github.com/Foddy/node-red-contrib-huemagic/blob/master/CHANGELOG.md) can be viewed here…
889
1272
 
@@ -896,7 +1279,7 @@ If you like HueMagic, I appreciate a star or rating on this page! HueMagic is an
896
1279
  Alternatively, you can support the project if you have an old device that is compatible with the Philips Hue bridge (or a device that is not officially supported by HueMagic) and want to get rid of it. Please contact me at huemagic@foddy.io to get an address where you can send your old device. The following devices could currently be considered: Gradient lights, Tap / Button devices or table / floor lights. These types of devices have not been extensively tested during HueMagic's development.
897
1280
 
898
1281
  ***
899
- <a href="https://www.jetbrains.com/?from=HueMagic"><img src="https://gistcdn.githack.com/Foddy/062045775c28f5993ad646aba80e678c/raw/c84ea4ad31c72dde0883638fc9eaa2b51bba9962/jb.svg" height="50"></a> <a href="https://www.browserstack.com?from=HueMagic"><img src="https://gistcdn.githack.com/Foddy/062045775c28f5993ad646aba80e678c/raw/c84ea4ad31c72dde0883638fc9eaa2b51bba9962/browserstack.svg" height="50"></a>
1282
+ <a href="https://www.jetbrains.com/?from=HueMagic"><img src="https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/sponsors/jetbrains.svg" height="50"></a><a href="https://dgtl.one/?from=HueMagic"><img src="https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/sponsors/dgtl-one.svg" height="50"> <a href="https://www.browserstack.com?from=HueMagic"><img src="https://raw.githubusercontent.com/Foddy/node-red-contrib-huemagic/master/docs/images/sponsors/browserstack.svg" height="50"></a>
900
1283
 
901
- HueMagic for Node-RED is sponsored by [JetBrains](https://www.jetbrains.com/?from=HueMagic) and [BrowserStack](https://www.browserstack.com?from=HueMagic).<br>
1284
+ HueMagic for Node-RED is sponsored by [DGTL.ONE](https://dgtl.one/?from=HueMagic), [JetBrains](https://www.jetbrains.com/?from=HueMagic) and [BrowserStack](https://www.browserstack.com?from=HueMagic).<br>
902
1285
  *Released under the [Apache License 2.0](https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)).*