node-red-contrib-knx-ultimate 7.1.4 → 8.0.2

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 (657) hide show
  1. package/CHANGELOG.md +20 -10
  2. package/MIGRATION.md +40 -0
  3. package/README.md +32 -6
  4. package/docs/README.md +34 -0
  5. package/docs/assets/brand/made-in-italy.svg +12 -0
  6. package/examples/Alerter - Device Alert Aggregation.json +5 -2
  7. package/examples/Auto Responder - Read Request Defaults.json +5 -2
  8. package/examples/Garage - Door Controller.json +5 -2
  9. package/examples/Global Context - Expose KNX Values.json +5 -2
  10. package/examples/KNX DateTime - Set Date and Time to Bus.json +111 -89
  11. package/examples/Load Control - Manual Shedding Mode.json +5 -2
  12. package/examples/Logger ETS File and Telegram Count.json +10 -2
  13. package/examples/Scene Controller Recall and Save.json +33 -6
  14. package/examples/Staircase - Timer, Override and Block.json +5 -2
  15. package/examples/WatchDog Connect Disconnect.json +98 -70
  16. package/nodes/commonFunctions.js +0 -587
  17. package/nodes/knxUltimate-config.html +0 -14
  18. package/nodes/knxUltimate-config.js +1 -18
  19. package/nodes/knxUltimate.html +1 -6
  20. package/nodes/knxUltimateIoTBridge.html +0 -14
  21. package/nodes/knxUltimateLegacyMigration.js +75 -0
  22. package/nodes/knxUltimateMultiRouting.html +1 -7
  23. package/nodes/knxUltimateRouterFilter.html +1 -7
  24. package/nodes/knxUltimateUtility.html +0 -6
  25. package/nodes/knxUltimateViewer.html +0 -6
  26. package/nodes/locales/de/knxUltimate-config.html +0 -8
  27. package/nodes/locales/de/knxUltimate.html +0 -8
  28. package/nodes/locales/de/knxUltimateIoTBridge.html +0 -8
  29. package/nodes/locales/de/knxUltimateMultiRouting.html +0 -8
  30. package/nodes/locales/de/knxUltimateRouterFilter.html +0 -8
  31. package/nodes/locales/de/knxUltimateUtility.html +0 -8
  32. package/nodes/locales/de/knxUltimateUtility.json +16 -1
  33. package/nodes/locales/de/knxUltimateViewer.html +0 -8
  34. package/nodes/locales/en/knxUltimate-config.html +0 -8
  35. package/nodes/locales/en/knxUltimate.html +0 -8
  36. package/nodes/locales/en/knxUltimateIoTBridge.html +0 -8
  37. package/nodes/locales/en/knxUltimateMultiRouting.html +0 -8
  38. package/nodes/locales/en/knxUltimateRouterFilter.html +0 -8
  39. package/nodes/locales/en/knxUltimateUtility.html +0 -8
  40. package/nodes/locales/en/knxUltimateUtility.json +16 -1
  41. package/nodes/locales/en/knxUltimateViewer.html +0 -8
  42. package/nodes/locales/es/knxUltimate-config.html +0 -8
  43. package/nodes/locales/es/knxUltimate.html +0 -8
  44. package/nodes/locales/es/knxUltimateIoTBridge.html +0 -8
  45. package/nodes/locales/es/knxUltimateMultiRouting.html +0 -8
  46. package/nodes/locales/es/knxUltimateRouterFilter.html +0 -8
  47. package/nodes/locales/es/knxUltimateUtility.html +0 -8
  48. package/nodes/locales/es/knxUltimateUtility.json +17 -2
  49. package/nodes/locales/es/knxUltimateViewer.html +0 -8
  50. package/nodes/locales/fr/knxUltimate-config.html +0 -8
  51. package/nodes/locales/fr/knxUltimate.html +0 -8
  52. package/nodes/locales/fr/knxUltimateIoTBridge.html +0 -8
  53. package/nodes/locales/fr/knxUltimateMultiRouting.html +0 -8
  54. package/nodes/locales/fr/knxUltimateRouterFilter.html +0 -8
  55. package/nodes/locales/fr/knxUltimateUtility.html +0 -8
  56. package/nodes/locales/fr/knxUltimateUtility.json +16 -1
  57. package/nodes/locales/fr/knxUltimateViewer.html +0 -8
  58. package/nodes/locales/it/knxUltimate-config.html +0 -8
  59. package/nodes/locales/it/knxUltimate.html +0 -8
  60. package/nodes/locales/it/knxUltimateIoTBridge.html +0 -8
  61. package/nodes/locales/it/knxUltimateMultiRouting.html +0 -8
  62. package/nodes/locales/it/knxUltimateRouterFilter.html +0 -8
  63. package/nodes/locales/it/knxUltimateUtility.html +0 -8
  64. package/nodes/locales/it/knxUltimateUtility.json +16 -1
  65. package/nodes/locales/it/knxUltimateViewer.html +0 -8
  66. package/nodes/locales/zh-CN/knxUltimate-config.html +0 -8
  67. package/nodes/locales/zh-CN/knxUltimate.html +0 -8
  68. package/nodes/locales/zh-CN/knxUltimateIoTBridge.html +0 -8
  69. package/nodes/locales/zh-CN/knxUltimateMultiRouting.html +0 -8
  70. package/nodes/locales/zh-CN/knxUltimateRouterFilter.html +0 -8
  71. package/nodes/locales/zh-CN/knxUltimateUtility.html +0 -8
  72. package/nodes/locales/zh-CN/knxUltimateUtility.json +16 -1
  73. package/nodes/locales/zh-CN/knxUltimateViewer.html +0 -8
  74. package/nodes/plugins/knxUltimate-v8-migration-recovery-plugin.html +140 -0
  75. package/package.json +22 -69
  76. package/resources/11f26b4500.js +2 -2
  77. package/resources/KNXAIChatAdapterMappings.js +2 -416
  78. package/resources/configNodeEditorSelection.js +2 -32
  79. package/resources/hueControllerEditorSelection.js +2 -32
  80. package/resources/hueControllerMigrationDialog.js +2 -254
  81. package/resources/hueControllerProfiles.js +2 -9319
  82. package/resources/knxUtilityProfiles.js +2041 -2082
  83. package/resources/legacyMigrationNotice.js +23 -111
  84. package/resources/matterQrScanner.js +2 -98
  85. package/resources/upgradeToV8.js +94 -26
  86. package/scripts/check-legacy-flows.js +142 -0
  87. package/examples/Hue Area Motion - Zone Presence.json +0 -77
  88. package/examples/Hue Battery - Level Status.json +0 -77
  89. package/examples/Hue Button - Short and Dim Commands.json +0 -83
  90. package/examples/Hue Camera Motion - Presence.json +0 -77
  91. package/examples/Hue Config - Bridge Template.json +0 -27
  92. package/examples/Hue Contact Sensor - Open Closed.json +0 -75
  93. package/examples/Hue Device Software Update - Availability.json +0 -77
  94. package/examples/Hue Humidity Sensor - Relative Humidity.json +0 -77
  95. package/examples/Hue Light - Switch and Brightness.json +0 -67
  96. package/examples/Hue Light Sensor - Lux to KNX.json +0 -77
  97. package/examples/Hue Motion - Presence Sensor.json +0 -76
  98. package/examples/Hue Plug - Switch and State.json +0 -63
  99. package/examples/Hue Scene - Recall from KNX.json +0 -63
  100. package/examples/Hue Tap Dial - Relative Dimming.json +0 -76
  101. package/examples/Hue Temperature Sensor - Celsius to KNX.json +0 -77
  102. package/examples/Hue Zigbee Connectivity - Online Status.json +0 -77
  103. package/examples/Matter Controller - Semantic Flow Input.json +0 -248
  104. package/nodes/hue-config.html +0 -378
  105. package/nodes/hue-config.js +0 -846
  106. package/nodes/icons/node-alerter-icon.png +0 -0
  107. package/nodes/icons/node-homekit-icon.png +0 -0
  108. package/nodes/icons/node-homekit-icon.svg +0 -10
  109. package/nodes/icons/node-hue-icon.svg +0 -10
  110. package/nodes/icons/node-knx-icon.png +0 -0
  111. package/nodes/icons/node-logger-icon.png +0 -0
  112. package/nodes/icons/node-logger2-icon.png +0 -0
  113. package/nodes/icons/node-logger2-icon.svg +0 -32
  114. package/nodes/icons/node-matter-bridge-icon.svg +0 -6
  115. package/nodes/icons/node-matter-controller-icon.svg +0 -6
  116. package/nodes/icons/node-matter-icon.svg +0 -12
  117. package/nodes/icons/node-scene-icon.png +0 -0
  118. package/nodes/icons/node-watchdog-icon.png +0 -0
  119. package/nodes/knxUltimateAI.html +0 -1826
  120. package/nodes/knxUltimateAI.js +0 -16797
  121. package/nodes/knxUltimateAIHomeAssistant.html +0 -54
  122. package/nodes/knxUltimateAIHomeAssistant.js +0 -152
  123. package/nodes/knxUltimateAlerter.html +0 -267
  124. package/nodes/knxUltimateAlerter.js +0 -300
  125. package/nodes/knxUltimateAutoResponder.html +0 -128
  126. package/nodes/knxUltimateAutoResponder.js +0 -264
  127. package/nodes/knxUltimateDateTime.html +0 -579
  128. package/nodes/knxUltimateDateTime.js +0 -282
  129. package/nodes/knxUltimateGarage.html +0 -337
  130. package/nodes/knxUltimateGarage.js +0 -504
  131. package/nodes/knxUltimateGlobalContext.html +0 -145
  132. package/nodes/knxUltimateGlobalContext.js +0 -208
  133. package/nodes/knxUltimateHATranslator.html +0 -85
  134. package/nodes/knxUltimateHATranslator.js +0 -83
  135. package/nodes/knxUltimateHueAreaMotion.html +0 -670
  136. package/nodes/knxUltimateHueAreaMotion.js +0 -218
  137. package/nodes/knxUltimateHueBattery.html +0 -646
  138. package/nodes/knxUltimateHueBattery.js +0 -182
  139. package/nodes/knxUltimateHueButton.html +0 -804
  140. package/nodes/knxUltimateHueButton.js +0 -292
  141. package/nodes/knxUltimateHueCameraMotion.html +0 -671
  142. package/nodes/knxUltimateHueCameraMotion.js +0 -218
  143. package/nodes/knxUltimateHueContactSensor.html +0 -609
  144. package/nodes/knxUltimateHueContactSensor.js +0 -188
  145. package/nodes/knxUltimateHueController.html +0 -1765
  146. package/nodes/knxUltimateHueController.js +0 -28
  147. package/nodes/knxUltimateHueHumiditySensor.html +0 -641
  148. package/nodes/knxUltimateHueHumiditySensor.js +0 -201
  149. package/nodes/knxUltimateHueLight.html +0 -2516
  150. package/nodes/knxUltimateHueLight.js +0 -1582
  151. package/nodes/knxUltimateHueLightSensor.html +0 -636
  152. package/nodes/knxUltimateHueLightSensor.js +0 -177
  153. package/nodes/knxUltimateHueMotion.html +0 -634
  154. package/nodes/knxUltimateHueMotion.js +0 -182
  155. package/nodes/knxUltimateHuePlug.html +0 -576
  156. package/nodes/knxUltimateHuePlug.js +0 -341
  157. package/nodes/knxUltimateHueScene.html +0 -967
  158. package/nodes/knxUltimateHueScene.js +0 -349
  159. package/nodes/knxUltimateHueTapDial.html +0 -640
  160. package/nodes/knxUltimateHueTapDial.js +0 -268
  161. package/nodes/knxUltimateHueTemperatureSensor.html +0 -639
  162. package/nodes/knxUltimateHueTemperatureSensor.js +0 -184
  163. package/nodes/knxUltimateHueZigbeeConnectivity.html +0 -648
  164. package/nodes/knxUltimateHueZigbeeConnectivity.js +0 -182
  165. package/nodes/knxUltimateHuedevice_software_update.html +0 -650
  166. package/nodes/knxUltimateHuedevice_software_update.js +0 -182
  167. package/nodes/knxUltimateLoadControl.html +0 -425
  168. package/nodes/knxUltimateLoadControl.js +0 -443
  169. package/nodes/knxUltimateLogger.html +0 -197
  170. package/nodes/knxUltimateLogger.js +0 -224
  171. package/nodes/knxUltimateMatterBridge.html +0 -689
  172. package/nodes/knxUltimateMatterBridge.js +0 -464
  173. package/nodes/knxUltimateMatterControllerDevice.html +0 -2851
  174. package/nodes/knxUltimateMatterControllerDevice.js +0 -1747
  175. package/nodes/knxUltimateSceneController.html +0 -529
  176. package/nodes/knxUltimateSceneController.js +0 -437
  177. package/nodes/knxUltimateStaircase.html +0 -346
  178. package/nodes/knxUltimateStaircase.js +0 -463
  179. package/nodes/knxUltimateWatchDog.html +0 -241
  180. package/nodes/knxUltimateWatchDog.js +0 -230
  181. package/nodes/locales/de/hue-config.html +0 -33
  182. package/nodes/locales/de/hue-config.json +0 -21
  183. package/nodes/locales/de/knxUltimateAI.html +0 -13
  184. package/nodes/locales/de/knxUltimateAI.json +0 -231
  185. package/nodes/locales/de/knxUltimateAIHomeAssistant.html +0 -11
  186. package/nodes/locales/de/knxUltimateAlerter.html +0 -159
  187. package/nodes/locales/de/knxUltimateAlerter.json +0 -27
  188. package/nodes/locales/de/knxUltimateAutoResponder.html +0 -96
  189. package/nodes/locales/de/knxUltimateAutoResponder.json +0 -8
  190. package/nodes/locales/de/knxUltimateDateTime.html +0 -45
  191. package/nodes/locales/de/knxUltimateDateTime.json +0 -32
  192. package/nodes/locales/de/knxUltimateGarage.html +0 -79
  193. package/nodes/locales/de/knxUltimateGarage.json +0 -51
  194. package/nodes/locales/de/knxUltimateGlobalContext.html +0 -76
  195. package/nodes/locales/de/knxUltimateGlobalContext.json +0 -24
  196. package/nodes/locales/de/knxUltimateHATranslator.html +0 -25
  197. package/nodes/locales/de/knxUltimateHATranslator.json +0 -8
  198. package/nodes/locales/de/knxUltimateHueAreaMotion.html +0 -44
  199. package/nodes/locales/de/knxUltimateHueAreaMotion.json +0 -31
  200. package/nodes/locales/de/knxUltimateHueBattery.html +0 -37
  201. package/nodes/locales/de/knxUltimateHueBattery.json +0 -30
  202. package/nodes/locales/de/knxUltimateHueButton.html +0 -52
  203. package/nodes/locales/de/knxUltimateHueButton.json +0 -34
  204. package/nodes/locales/de/knxUltimateHueCameraMotion.html +0 -38
  205. package/nodes/locales/de/knxUltimateHueCameraMotion.json +0 -30
  206. package/nodes/locales/de/knxUltimateHueContactSensor.html +0 -35
  207. package/nodes/locales/de/knxUltimateHueContactSensor.json +0 -26
  208. package/nodes/locales/de/knxUltimateHueController.html +0 -690
  209. package/nodes/locales/de/knxUltimateHueController.json +0 -64
  210. package/nodes/locales/de/knxUltimateHueHumiditySensor.html +0 -38
  211. package/nodes/locales/de/knxUltimateHueHumiditySensor.json +0 -30
  212. package/nodes/locales/de/knxUltimateHueLight.html +0 -121
  213. package/nodes/locales/de/knxUltimateHueLight.json +0 -94
  214. package/nodes/locales/de/knxUltimateHueLightSensor.html +0 -38
  215. package/nodes/locales/de/knxUltimateHueLightSensor.json +0 -19
  216. package/nodes/locales/de/knxUltimateHueMotion.html +0 -41
  217. package/nodes/locales/de/knxUltimateHueMotion.json +0 -27
  218. package/nodes/locales/de/knxUltimateHuePlug.html +0 -50
  219. package/nodes/locales/de/knxUltimateHuePlug.json +0 -33
  220. package/nodes/locales/de/knxUltimateHueScene.html +0 -45
  221. package/nodes/locales/de/knxUltimateHueScene.json +0 -41
  222. package/nodes/locales/de/knxUltimateHueTapDial.html +0 -40
  223. package/nodes/locales/de/knxUltimateHueTapDial.json +0 -28
  224. package/nodes/locales/de/knxUltimateHueTemperatureSensor.html +0 -38
  225. package/nodes/locales/de/knxUltimateHueTemperatureSensor.json +0 -30
  226. package/nodes/locales/de/knxUltimateHueZigbeeConnectivity.html +0 -39
  227. package/nodes/locales/de/knxUltimateHueZigbeeConnectivity.json +0 -30
  228. package/nodes/locales/de/knxUltimateHuedevice_software_update.html +0 -36
  229. package/nodes/locales/de/knxUltimateHuedevice_software_update.json +0 -30
  230. package/nodes/locales/de/knxUltimateLoadControl.html +0 -69
  231. package/nodes/locales/de/knxUltimateLoadControl.json +0 -28
  232. package/nodes/locales/de/knxUltimateLogger.html +0 -126
  233. package/nodes/locales/de/knxUltimateLogger.json +0 -31
  234. package/nodes/locales/de/knxUltimateMatterBridge.html +0 -65
  235. package/nodes/locales/de/knxUltimateMatterBridge.json +0 -123
  236. package/nodes/locales/de/knxUltimateMatterControllerDevice.html +0 -57
  237. package/nodes/locales/de/knxUltimateMatterControllerDevice.json +0 -146
  238. package/nodes/locales/de/knxUltimateSceneController.html +0 -98
  239. package/nodes/locales/de/knxUltimateSceneController.json +0 -32
  240. package/nodes/locales/de/knxUltimateStaircase.html +0 -77
  241. package/nodes/locales/de/knxUltimateStaircase.json +0 -62
  242. package/nodes/locales/de/knxUltimateWatchDog.html +0 -178
  243. package/nodes/locales/de/knxUltimateWatchDog.json +0 -27
  244. package/nodes/locales/de/matter-config.html +0 -47
  245. package/nodes/locales/de/matter-config.json +0 -47
  246. package/nodes/locales/de/matterbridge-config.html +0 -45
  247. package/nodes/locales/de/matterbridge-config.json +0 -25
  248. package/nodes/locales/en/hue-config.html +0 -31
  249. package/nodes/locales/en/hue-config.json +0 -21
  250. package/nodes/locales/en/knxUltimateAI.html +0 -13
  251. package/nodes/locales/en/knxUltimateAI.json +0 -234
  252. package/nodes/locales/en/knxUltimateAIHomeAssistant.html +0 -11
  253. package/nodes/locales/en/knxUltimateAlerter.html +0 -164
  254. package/nodes/locales/en/knxUltimateAlerter.json +0 -27
  255. package/nodes/locales/en/knxUltimateAutoResponder.html +0 -94
  256. package/nodes/locales/en/knxUltimateAutoResponder.json +0 -8
  257. package/nodes/locales/en/knxUltimateDateTime.html +0 -67
  258. package/nodes/locales/en/knxUltimateDateTime.json +0 -32
  259. package/nodes/locales/en/knxUltimateGarage.html +0 -79
  260. package/nodes/locales/en/knxUltimateGarage.json +0 -51
  261. package/nodes/locales/en/knxUltimateGlobalContext.html +0 -124
  262. package/nodes/locales/en/knxUltimateGlobalContext.json +0 -24
  263. package/nodes/locales/en/knxUltimateHATranslator.html +0 -25
  264. package/nodes/locales/en/knxUltimateHATranslator.json +0 -8
  265. package/nodes/locales/en/knxUltimateHueAreaMotion.html +0 -44
  266. package/nodes/locales/en/knxUltimateHueAreaMotion.json +0 -31
  267. package/nodes/locales/en/knxUltimateHueBattery.html +0 -37
  268. package/nodes/locales/en/knxUltimateHueBattery.json +0 -30
  269. package/nodes/locales/en/knxUltimateHueButton.html +0 -52
  270. package/nodes/locales/en/knxUltimateHueButton.json +0 -34
  271. package/nodes/locales/en/knxUltimateHueCameraMotion.html +0 -38
  272. package/nodes/locales/en/knxUltimateHueCameraMotion.json +0 -30
  273. package/nodes/locales/en/knxUltimateHueContactSensor.html +0 -35
  274. package/nodes/locales/en/knxUltimateHueContactSensor.json +0 -26
  275. package/nodes/locales/en/knxUltimateHueController.html +0 -691
  276. package/nodes/locales/en/knxUltimateHueController.json +0 -64
  277. package/nodes/locales/en/knxUltimateHueHumiditySensor.html +0 -38
  278. package/nodes/locales/en/knxUltimateHueHumiditySensor.json +0 -30
  279. package/nodes/locales/en/knxUltimateHueLight.html +0 -124
  280. package/nodes/locales/en/knxUltimateHueLight.json +0 -94
  281. package/nodes/locales/en/knxUltimateHueLightSensor.html +0 -38
  282. package/nodes/locales/en/knxUltimateHueLightSensor.json +0 -19
  283. package/nodes/locales/en/knxUltimateHueMotion.html +0 -41
  284. package/nodes/locales/en/knxUltimateHueMotion.json +0 -27
  285. package/nodes/locales/en/knxUltimateHuePlug.html +0 -50
  286. package/nodes/locales/en/knxUltimateHuePlug.json +0 -33
  287. package/nodes/locales/en/knxUltimateHueScene.html +0 -45
  288. package/nodes/locales/en/knxUltimateHueScene.json +0 -41
  289. package/nodes/locales/en/knxUltimateHueTapDial.html +0 -40
  290. package/nodes/locales/en/knxUltimateHueTapDial.json +0 -28
  291. package/nodes/locales/en/knxUltimateHueTemperatureSensor.html +0 -38
  292. package/nodes/locales/en/knxUltimateHueTemperatureSensor.json +0 -30
  293. package/nodes/locales/en/knxUltimateHueZigbeeConnectivity.html +0 -39
  294. package/nodes/locales/en/knxUltimateHueZigbeeConnectivity.json +0 -30
  295. package/nodes/locales/en/knxUltimateHuedevice_software_update.html +0 -36
  296. package/nodes/locales/en/knxUltimateHuedevice_software_update.json +0 -30
  297. package/nodes/locales/en/knxUltimateLoadControl.html +0 -76
  298. package/nodes/locales/en/knxUltimateLoadControl.json +0 -28
  299. package/nodes/locales/en/knxUltimateLogger.html +0 -161
  300. package/nodes/locales/en/knxUltimateLogger.json +0 -31
  301. package/nodes/locales/en/knxUltimateMatterBridge.html +0 -65
  302. package/nodes/locales/en/knxUltimateMatterBridge.json +0 -123
  303. package/nodes/locales/en/knxUltimateMatterControllerDevice.html +0 -57
  304. package/nodes/locales/en/knxUltimateMatterControllerDevice.json +0 -146
  305. package/nodes/locales/en/knxUltimateSceneController.html +0 -117
  306. package/nodes/locales/en/knxUltimateSceneController.json +0 -32
  307. package/nodes/locales/en/knxUltimateStaircase.html +0 -77
  308. package/nodes/locales/en/knxUltimateStaircase.json +0 -62
  309. package/nodes/locales/en/knxUltimateWatchDog.html +0 -244
  310. package/nodes/locales/en/knxUltimateWatchDog.json +0 -27
  311. package/nodes/locales/en/matter-config.html +0 -47
  312. package/nodes/locales/en/matter-config.json +0 -48
  313. package/nodes/locales/en/matterbridge-config.html +0 -45
  314. package/nodes/locales/en/matterbridge-config.json +0 -25
  315. package/nodes/locales/es/hue-config.html +0 -31
  316. package/nodes/locales/es/hue-config.json +0 -21
  317. package/nodes/locales/es/knxUltimateAI.html +0 -13
  318. package/nodes/locales/es/knxUltimateAI.json +0 -231
  319. package/nodes/locales/es/knxUltimateAIHomeAssistant.html +0 -11
  320. package/nodes/locales/es/knxUltimateAlerter.html +0 -164
  321. package/nodes/locales/es/knxUltimateAlerter.json +0 -27
  322. package/nodes/locales/es/knxUltimateAutoResponder.html +0 -81
  323. package/nodes/locales/es/knxUltimateAutoResponder.json +0 -8
  324. package/nodes/locales/es/knxUltimateDateTime.html +0 -45
  325. package/nodes/locales/es/knxUltimateDateTime.json +0 -32
  326. package/nodes/locales/es/knxUltimateGarage.html +0 -79
  327. package/nodes/locales/es/knxUltimateGarage.json +0 -51
  328. package/nodes/locales/es/knxUltimateGlobalContext.html +0 -128
  329. package/nodes/locales/es/knxUltimateGlobalContext.json +0 -24
  330. package/nodes/locales/es/knxUltimateHATranslator.html +0 -25
  331. package/nodes/locales/es/knxUltimateHATranslator.json +0 -8
  332. package/nodes/locales/es/knxUltimateHueAreaMotion.html +0 -44
  333. package/nodes/locales/es/knxUltimateHueAreaMotion.json +0 -31
  334. package/nodes/locales/es/knxUltimateHueBattery.html +0 -37
  335. package/nodes/locales/es/knxUltimateHueBattery.json +0 -30
  336. package/nodes/locales/es/knxUltimateHueButton.html +0 -52
  337. package/nodes/locales/es/knxUltimateHueButton.json +0 -34
  338. package/nodes/locales/es/knxUltimateHueCameraMotion.html +0 -38
  339. package/nodes/locales/es/knxUltimateHueCameraMotion.json +0 -30
  340. package/nodes/locales/es/knxUltimateHueContactSensor.html +0 -35
  341. package/nodes/locales/es/knxUltimateHueContactSensor.json +0 -26
  342. package/nodes/locales/es/knxUltimateHueController.html +0 -691
  343. package/nodes/locales/es/knxUltimateHueController.json +0 -64
  344. package/nodes/locales/es/knxUltimateHueHumiditySensor.html +0 -38
  345. package/nodes/locales/es/knxUltimateHueHumiditySensor.json +0 -30
  346. package/nodes/locales/es/knxUltimateHueLight.html +0 -124
  347. package/nodes/locales/es/knxUltimateHueLight.json +0 -94
  348. package/nodes/locales/es/knxUltimateHueLightSensor.html +0 -38
  349. package/nodes/locales/es/knxUltimateHueLightSensor.json +0 -19
  350. package/nodes/locales/es/knxUltimateHueMotion.html +0 -41
  351. package/nodes/locales/es/knxUltimateHueMotion.json +0 -27
  352. package/nodes/locales/es/knxUltimateHuePlug.html +0 -50
  353. package/nodes/locales/es/knxUltimateHuePlug.json +0 -33
  354. package/nodes/locales/es/knxUltimateHueScene.html +0 -45
  355. package/nodes/locales/es/knxUltimateHueScene.json +0 -41
  356. package/nodes/locales/es/knxUltimateHueTapDial.html +0 -40
  357. package/nodes/locales/es/knxUltimateHueTapDial.json +0 -28
  358. package/nodes/locales/es/knxUltimateHueTemperatureSensor.html +0 -38
  359. package/nodes/locales/es/knxUltimateHueTemperatureSensor.json +0 -30
  360. package/nodes/locales/es/knxUltimateHueZigbeeConnectivity.html +0 -39
  361. package/nodes/locales/es/knxUltimateHueZigbeeConnectivity.json +0 -30
  362. package/nodes/locales/es/knxUltimateHuedevice_software_update.html +0 -36
  363. package/nodes/locales/es/knxUltimateHuedevice_software_update.json +0 -30
  364. package/nodes/locales/es/knxUltimateLoadControl.html +0 -76
  365. package/nodes/locales/es/knxUltimateLoadControl.json +0 -28
  366. package/nodes/locales/es/knxUltimateLogger.html +0 -162
  367. package/nodes/locales/es/knxUltimateLogger.json +0 -31
  368. package/nodes/locales/es/knxUltimateMatterBridge.html +0 -65
  369. package/nodes/locales/es/knxUltimateMatterBridge.json +0 -123
  370. package/nodes/locales/es/knxUltimateMatterControllerDevice.html +0 -57
  371. package/nodes/locales/es/knxUltimateMatterControllerDevice.json +0 -146
  372. package/nodes/locales/es/knxUltimateSceneController.html +0 -115
  373. package/nodes/locales/es/knxUltimateSceneController.json +0 -32
  374. package/nodes/locales/es/knxUltimateStaircase.html +0 -77
  375. package/nodes/locales/es/knxUltimateStaircase.json +0 -62
  376. package/nodes/locales/es/knxUltimateWatchDog.html +0 -230
  377. package/nodes/locales/es/knxUltimateWatchDog.json +0 -27
  378. package/nodes/locales/es/matter-config.html +0 -47
  379. package/nodes/locales/es/matter-config.json +0 -47
  380. package/nodes/locales/es/matterbridge-config.html +0 -45
  381. package/nodes/locales/es/matterbridge-config.json +0 -25
  382. package/nodes/locales/fr/hue-config.html +0 -31
  383. package/nodes/locales/fr/hue-config.json +0 -21
  384. package/nodes/locales/fr/knxUltimateAI.html +0 -13
  385. package/nodes/locales/fr/knxUltimateAI.json +0 -231
  386. package/nodes/locales/fr/knxUltimateAIHomeAssistant.html +0 -11
  387. package/nodes/locales/fr/knxUltimateAlerter.html +0 -164
  388. package/nodes/locales/fr/knxUltimateAlerter.json +0 -27
  389. package/nodes/locales/fr/knxUltimateAutoResponder.html +0 -92
  390. package/nodes/locales/fr/knxUltimateAutoResponder.json +0 -8
  391. package/nodes/locales/fr/knxUltimateDateTime.html +0 -45
  392. package/nodes/locales/fr/knxUltimateDateTime.json +0 -32
  393. package/nodes/locales/fr/knxUltimateGarage.html +0 -79
  394. package/nodes/locales/fr/knxUltimateGarage.json +0 -51
  395. package/nodes/locales/fr/knxUltimateGlobalContext.html +0 -122
  396. package/nodes/locales/fr/knxUltimateGlobalContext.json +0 -24
  397. package/nodes/locales/fr/knxUltimateHATranslator.html +0 -25
  398. package/nodes/locales/fr/knxUltimateHATranslator.json +0 -8
  399. package/nodes/locales/fr/knxUltimateHueAreaMotion.html +0 -44
  400. package/nodes/locales/fr/knxUltimateHueAreaMotion.json +0 -31
  401. package/nodes/locales/fr/knxUltimateHueBattery.html +0 -37
  402. package/nodes/locales/fr/knxUltimateHueBattery.json +0 -30
  403. package/nodes/locales/fr/knxUltimateHueButton.html +0 -52
  404. package/nodes/locales/fr/knxUltimateHueButton.json +0 -34
  405. package/nodes/locales/fr/knxUltimateHueCameraMotion.html +0 -38
  406. package/nodes/locales/fr/knxUltimateHueCameraMotion.json +0 -30
  407. package/nodes/locales/fr/knxUltimateHueContactSensor.html +0 -35
  408. package/nodes/locales/fr/knxUltimateHueContactSensor.json +0 -26
  409. package/nodes/locales/fr/knxUltimateHueController.html +0 -691
  410. package/nodes/locales/fr/knxUltimateHueController.json +0 -64
  411. package/nodes/locales/fr/knxUltimateHueHumiditySensor.html +0 -38
  412. package/nodes/locales/fr/knxUltimateHueHumiditySensor.json +0 -30
  413. package/nodes/locales/fr/knxUltimateHueLight.html +0 -124
  414. package/nodes/locales/fr/knxUltimateHueLight.json +0 -86
  415. package/nodes/locales/fr/knxUltimateHueLightSensor.html +0 -38
  416. package/nodes/locales/fr/knxUltimateHueLightSensor.json +0 -19
  417. package/nodes/locales/fr/knxUltimateHueMotion.html +0 -41
  418. package/nodes/locales/fr/knxUltimateHueMotion.json +0 -27
  419. package/nodes/locales/fr/knxUltimateHuePlug.html +0 -50
  420. package/nodes/locales/fr/knxUltimateHuePlug.json +0 -33
  421. package/nodes/locales/fr/knxUltimateHueScene.html +0 -45
  422. package/nodes/locales/fr/knxUltimateHueScene.json +0 -41
  423. package/nodes/locales/fr/knxUltimateHueTapDial.html +0 -40
  424. package/nodes/locales/fr/knxUltimateHueTapDial.json +0 -28
  425. package/nodes/locales/fr/knxUltimateHueTemperatureSensor.html +0 -38
  426. package/nodes/locales/fr/knxUltimateHueTemperatureSensor.json +0 -30
  427. package/nodes/locales/fr/knxUltimateHueZigbeeConnectivity.html +0 -39
  428. package/nodes/locales/fr/knxUltimateHueZigbeeConnectivity.json +0 -30
  429. package/nodes/locales/fr/knxUltimateHuedevice_software_update.html +0 -36
  430. package/nodes/locales/fr/knxUltimateHuedevice_software_update.json +0 -30
  431. package/nodes/locales/fr/knxUltimateLoadControl.html +0 -76
  432. package/nodes/locales/fr/knxUltimateLoadControl.json +0 -28
  433. package/nodes/locales/fr/knxUltimateLogger.html +0 -160
  434. package/nodes/locales/fr/knxUltimateLogger.json +0 -31
  435. package/nodes/locales/fr/knxUltimateMatterBridge.html +0 -65
  436. package/nodes/locales/fr/knxUltimateMatterBridge.json +0 -123
  437. package/nodes/locales/fr/knxUltimateMatterControllerDevice.html +0 -57
  438. package/nodes/locales/fr/knxUltimateMatterControllerDevice.json +0 -146
  439. package/nodes/locales/fr/knxUltimateSceneController.html +0 -117
  440. package/nodes/locales/fr/knxUltimateSceneController.json +0 -32
  441. package/nodes/locales/fr/knxUltimateStaircase.html +0 -77
  442. package/nodes/locales/fr/knxUltimateStaircase.json +0 -62
  443. package/nodes/locales/fr/knxUltimateWatchDog.html +0 -228
  444. package/nodes/locales/fr/knxUltimateWatchDog.json +0 -27
  445. package/nodes/locales/fr/matter-config.html +0 -47
  446. package/nodes/locales/fr/matter-config.json +0 -47
  447. package/nodes/locales/fr/matterbridge-config.html +0 -45
  448. package/nodes/locales/fr/matterbridge-config.json +0 -25
  449. package/nodes/locales/it/hue-config.html +0 -33
  450. package/nodes/locales/it/hue-config.json +0 -21
  451. package/nodes/locales/it/knxUltimateAI.html +0 -13
  452. package/nodes/locales/it/knxUltimateAI.json +0 -234
  453. package/nodes/locales/it/knxUltimateAIHomeAssistant.html +0 -11
  454. package/nodes/locales/it/knxUltimateAlerter.html +0 -159
  455. package/nodes/locales/it/knxUltimateAlerter.json +0 -27
  456. package/nodes/locales/it/knxUltimateAutoResponder.html +0 -96
  457. package/nodes/locales/it/knxUltimateAutoResponder.json +0 -8
  458. package/nodes/locales/it/knxUltimateDateTime.html +0 -67
  459. package/nodes/locales/it/knxUltimateDateTime.json +0 -32
  460. package/nodes/locales/it/knxUltimateGarage.html +0 -79
  461. package/nodes/locales/it/knxUltimateGarage.json +0 -51
  462. package/nodes/locales/it/knxUltimateGlobalContext.html +0 -81
  463. package/nodes/locales/it/knxUltimateGlobalContext.json +0 -24
  464. package/nodes/locales/it/knxUltimateHATranslator.html +0 -24
  465. package/nodes/locales/it/knxUltimateHATranslator.json +0 -8
  466. package/nodes/locales/it/knxUltimateHueAreaMotion.html +0 -44
  467. package/nodes/locales/it/knxUltimateHueAreaMotion.json +0 -31
  468. package/nodes/locales/it/knxUltimateHueBattery.html +0 -37
  469. package/nodes/locales/it/knxUltimateHueBattery.json +0 -30
  470. package/nodes/locales/it/knxUltimateHueButton.html +0 -52
  471. package/nodes/locales/it/knxUltimateHueButton.json +0 -34
  472. package/nodes/locales/it/knxUltimateHueCameraMotion.html +0 -38
  473. package/nodes/locales/it/knxUltimateHueCameraMotion.json +0 -30
  474. package/nodes/locales/it/knxUltimateHueContactSensor.html +0 -35
  475. package/nodes/locales/it/knxUltimateHueContactSensor.json +0 -26
  476. package/nodes/locales/it/knxUltimateHueController.html +0 -690
  477. package/nodes/locales/it/knxUltimateHueController.json +0 -64
  478. package/nodes/locales/it/knxUltimateHueHumiditySensor 2.html +0 -11
  479. package/nodes/locales/it/knxUltimateHueHumiditySensor.html +0 -38
  480. package/nodes/locales/it/knxUltimateHueHumiditySensor.json +0 -30
  481. package/nodes/locales/it/knxUltimateHueLight.html +0 -124
  482. package/nodes/locales/it/knxUltimateHueLight.json +0 -94
  483. package/nodes/locales/it/knxUltimateHueLightSensor.html +0 -38
  484. package/nodes/locales/it/knxUltimateHueLightSensor.json +0 -19
  485. package/nodes/locales/it/knxUltimateHueMotion.html +0 -41
  486. package/nodes/locales/it/knxUltimateHueMotion.json +0 -27
  487. package/nodes/locales/it/knxUltimateHuePlug.html +0 -50
  488. package/nodes/locales/it/knxUltimateHuePlug.json +0 -33
  489. package/nodes/locales/it/knxUltimateHueScene.html +0 -45
  490. package/nodes/locales/it/knxUltimateHueScene.json +0 -41
  491. package/nodes/locales/it/knxUltimateHueTapDial.html +0 -40
  492. package/nodes/locales/it/knxUltimateHueTapDial.json +0 -28
  493. package/nodes/locales/it/knxUltimateHueTemperatureSensor.html +0 -38
  494. package/nodes/locales/it/knxUltimateHueTemperatureSensor.json +0 -30
  495. package/nodes/locales/it/knxUltimateHueZigbeeConnectivity.html +0 -39
  496. package/nodes/locales/it/knxUltimateHueZigbeeConnectivity.json +0 -30
  497. package/nodes/locales/it/knxUltimateHuedevice_software_update.html +0 -35
  498. package/nodes/locales/it/knxUltimateHuedevice_software_update.json +0 -30
  499. package/nodes/locales/it/knxUltimateLoadControl.html +0 -76
  500. package/nodes/locales/it/knxUltimateLoadControl.json +0 -28
  501. package/nodes/locales/it/knxUltimateLogger.html +0 -132
  502. package/nodes/locales/it/knxUltimateLogger.json +0 -31
  503. package/nodes/locales/it/knxUltimateMatterBridge.html +0 -65
  504. package/nodes/locales/it/knxUltimateMatterBridge.json +0 -123
  505. package/nodes/locales/it/knxUltimateMatterControllerDevice.html +0 -57
  506. package/nodes/locales/it/knxUltimateMatterControllerDevice.json +0 -146
  507. package/nodes/locales/it/knxUltimateSceneController.html +0 -101
  508. package/nodes/locales/it/knxUltimateSceneController.json +0 -32
  509. package/nodes/locales/it/knxUltimateStaircase.html +0 -77
  510. package/nodes/locales/it/knxUltimateStaircase.json +0 -62
  511. package/nodes/locales/it/knxUltimateWatchDog.html +0 -194
  512. package/nodes/locales/it/knxUltimateWatchDog.json +0 -27
  513. package/nodes/locales/it/matter-config.html +0 -47
  514. package/nodes/locales/it/matter-config.json +0 -48
  515. package/nodes/locales/it/matterbridge-config.html +0 -45
  516. package/nodes/locales/it/matterbridge-config.json +0 -25
  517. package/nodes/locales/zh-CN/hue-config.html +0 -33
  518. package/nodes/locales/zh-CN/hue-config.json +0 -21
  519. package/nodes/locales/zh-CN/knxUltimateAI.html +0 -13
  520. package/nodes/locales/zh-CN/knxUltimateAI.json +0 -231
  521. package/nodes/locales/zh-CN/knxUltimateAIHomeAssistant.html +0 -11
  522. package/nodes/locales/zh-CN/knxUltimateAlerter.html +0 -159
  523. package/nodes/locales/zh-CN/knxUltimateAlerter.json +0 -27
  524. package/nodes/locales/zh-CN/knxUltimateAutoResponder.html +0 -94
  525. package/nodes/locales/zh-CN/knxUltimateAutoResponder.json +0 -8
  526. package/nodes/locales/zh-CN/knxUltimateDateTime.html +0 -45
  527. package/nodes/locales/zh-CN/knxUltimateDateTime.json +0 -32
  528. package/nodes/locales/zh-CN/knxUltimateGarage.html +0 -79
  529. package/nodes/locales/zh-CN/knxUltimateGarage.json +0 -51
  530. package/nodes/locales/zh-CN/knxUltimateGlobalContext.html +0 -77
  531. package/nodes/locales/zh-CN/knxUltimateGlobalContext.json +0 -24
  532. package/nodes/locales/zh-CN/knxUltimateHATranslator.html +0 -25
  533. package/nodes/locales/zh-CN/knxUltimateHATranslator.json +0 -8
  534. package/nodes/locales/zh-CN/knxUltimateHueAreaMotion.html +0 -44
  535. package/nodes/locales/zh-CN/knxUltimateHueAreaMotion.json +0 -31
  536. package/nodes/locales/zh-CN/knxUltimateHueBattery.html +0 -37
  537. package/nodes/locales/zh-CN/knxUltimateHueBattery.json +0 -30
  538. package/nodes/locales/zh-CN/knxUltimateHueButton.html +0 -52
  539. package/nodes/locales/zh-CN/knxUltimateHueButton.json +0 -34
  540. package/nodes/locales/zh-CN/knxUltimateHueCameraMotion.html +0 -38
  541. package/nodes/locales/zh-CN/knxUltimateHueCameraMotion.json +0 -30
  542. package/nodes/locales/zh-CN/knxUltimateHueContactSensor.html +0 -35
  543. package/nodes/locales/zh-CN/knxUltimateHueContactSensor.json +0 -26
  544. package/nodes/locales/zh-CN/knxUltimateHueController.html +0 -693
  545. package/nodes/locales/zh-CN/knxUltimateHueController.json +0 -64
  546. package/nodes/locales/zh-CN/knxUltimateHueHumiditySensor.html +0 -38
  547. package/nodes/locales/zh-CN/knxUltimateHueHumiditySensor.json +0 -30
  548. package/nodes/locales/zh-CN/knxUltimateHueLight.html +0 -126
  549. package/nodes/locales/zh-CN/knxUltimateHueLight.json +0 -86
  550. package/nodes/locales/zh-CN/knxUltimateHueLightSensor.html +0 -38
  551. package/nodes/locales/zh-CN/knxUltimateHueLightSensor.json +0 -9
  552. package/nodes/locales/zh-CN/knxUltimateHueMotion.html +0 -41
  553. package/nodes/locales/zh-CN/knxUltimateHueMotion.json +0 -27
  554. package/nodes/locales/zh-CN/knxUltimateHuePlug.html +0 -50
  555. package/nodes/locales/zh-CN/knxUltimateHuePlug.json +0 -33
  556. package/nodes/locales/zh-CN/knxUltimateHueScene.html +0 -45
  557. package/nodes/locales/zh-CN/knxUltimateHueScene.json +0 -41
  558. package/nodes/locales/zh-CN/knxUltimateHueTapDial.html +0 -40
  559. package/nodes/locales/zh-CN/knxUltimateHueTapDial.json +0 -28
  560. package/nodes/locales/zh-CN/knxUltimateHueTemperatureSensor.html +0 -38
  561. package/nodes/locales/zh-CN/knxUltimateHueTemperatureSensor.json +0 -30
  562. package/nodes/locales/zh-CN/knxUltimateHueZigbeeConnectivity.html +0 -39
  563. package/nodes/locales/zh-CN/knxUltimateHueZigbeeConnectivity.json +0 -30
  564. package/nodes/locales/zh-CN/knxUltimateHuedevice_software_update.html +0 -36
  565. package/nodes/locales/zh-CN/knxUltimateHuedevice_software_update.json +0 -30
  566. package/nodes/locales/zh-CN/knxUltimateLoadControl.html +0 -76
  567. package/nodes/locales/zh-CN/knxUltimateLoadControl.json +0 -28
  568. package/nodes/locales/zh-CN/knxUltimateLogger.html +0 -126
  569. package/nodes/locales/zh-CN/knxUltimateLogger.json +0 -31
  570. package/nodes/locales/zh-CN/knxUltimateMatterBridge.html +0 -65
  571. package/nodes/locales/zh-CN/knxUltimateMatterBridge.json +0 -123
  572. package/nodes/locales/zh-CN/knxUltimateMatterControllerDevice.html +0 -57
  573. package/nodes/locales/zh-CN/knxUltimateMatterControllerDevice.json +0 -146
  574. package/nodes/locales/zh-CN/knxUltimateSceneController.html +0 -98
  575. package/nodes/locales/zh-CN/knxUltimateSceneController.json +0 -32
  576. package/nodes/locales/zh-CN/knxUltimateStaircase.html +0 -77
  577. package/nodes/locales/zh-CN/knxUltimateStaircase.json +0 -62
  578. package/nodes/locales/zh-CN/knxUltimateWatchDog.html +0 -178
  579. package/nodes/locales/zh-CN/knxUltimateWatchDog.json +0 -27
  580. package/nodes/locales/zh-CN/matter-config.html +0 -47
  581. package/nodes/locales/zh-CN/matter-config.json +0 -47
  582. package/nodes/locales/zh-CN/matterbridge-config.html +0 -45
  583. package/nodes/locales/zh-CN/matterbridge-config.json +0 -25
  584. package/nodes/matter-config.html +0 -578
  585. package/nodes/matter-config.js +0 -387
  586. package/nodes/matterbridge-config.html +0 -198
  587. package/nodes/matterbridge-config.js +0 -261
  588. package/nodes/plugins/knxUltimate-cerebrum-runtime-plugin.js +0 -79
  589. package/nodes/plugins/knxUltimate-migration-notice-plugin.html +0 -44
  590. package/nodes/plugins/knxUltimateAI-vue/assets/app.css +0 -1
  591. package/nodes/plugins/knxUltimateAI-vue/assets/app.js +0 -13
  592. package/nodes/plugins/knxUltimateAI-vue/assets/chunk-html2canvas.esm.js +0 -5
  593. package/nodes/plugins/knxUltimateAI-vue/assets/chunk-index.es.js +0 -5
  594. package/nodes/plugins/knxUltimateAI-vue/assets/chunk-jspdf.es.min.js +0 -79
  595. package/nodes/plugins/knxUltimateAI-vue/assets/chunk-purify.es.js +0 -3
  596. package/nodes/plugins/knxUltimateAI-vue/index.html +0 -13
  597. package/nodes/utils/HueEventStream.mjs +0 -176
  598. package/nodes/utils/colorManipulators/XYFromRGB_Supergiovane.js +0 -113
  599. package/nodes/utils/colorManipulators/hueColorConverter.js +0 -521
  600. package/nodes/utils/http.js +0 -291
  601. package/nodes/utils/hueControllerProfileAdapter.js +0 -104
  602. package/nodes/utils/hueControllerProfiles/runtime/area_motion.js +0 -221
  603. package/nodes/utils/hueControllerProfiles/runtime/button.js +0 -295
  604. package/nodes/utils/hueControllerProfiles/runtime/camera_motion.js +0 -221
  605. package/nodes/utils/hueControllerProfiles/runtime/contact.js +0 -191
  606. package/nodes/utils/hueControllerProfiles/runtime/device_power.js +0 -185
  607. package/nodes/utils/hueControllerProfiles/runtime/device_software_update.js +0 -185
  608. package/nodes/utils/hueControllerProfiles/runtime/humidity.js +0 -204
  609. package/nodes/utils/hueControllerProfiles/runtime/light.js +0 -1585
  610. package/nodes/utils/hueControllerProfiles/runtime/light_level.js +0 -180
  611. package/nodes/utils/hueControllerProfiles/runtime/motion.js +0 -185
  612. package/nodes/utils/hueControllerProfiles/runtime/plug.js +0 -344
  613. package/nodes/utils/hueControllerProfiles/runtime/relative_rotary.js +0 -271
  614. package/nodes/utils/hueControllerProfiles/runtime/scene.js +0 -352
  615. package/nodes/utils/hueControllerProfiles/runtime/temperature.js +0 -187
  616. package/nodes/utils/hueControllerProfiles/runtime/zigbee_connectivity.js +0 -185
  617. package/nodes/utils/hueControllerResourceCatalog.js +0 -71
  618. package/nodes/utils/hueEngine.mjs +0 -469
  619. package/nodes/utils/knxAiCamera.js +0 -302
  620. package/nodes/utils/knxAiCatalogRetrieval.js +0 -349
  621. package/nodes/utils/knxAiCerebrum.js +0 -406
  622. package/nodes/utils/knxAiChatContext.js +0 -496
  623. package/nodes/utils/knxAiEventHistory.js +0 -521
  624. package/nodes/utils/knxAiHomeMemory.js +0 -1021
  625. package/nodes/utils/knxAiScheduler.js +0 -445
  626. package/nodes/utils/knxAiSemanticContext.js +0 -662
  627. package/nodes/utils/knxAiTelegramVoice.js +0 -545
  628. package/nodes/utils/knxAiWebAccess.js +0 -631
  629. package/nodes/utils/lightEngines/canonicalLight.js +0 -75
  630. package/nodes/utils/lightEngines/hueLightEngine.js +0 -51
  631. package/nodes/utils/lightEngines/index.js +0 -25
  632. package/nodes/utils/lightEngines/knxLightCommand.js +0 -79
  633. package/nodes/utils/lightEngines/lightEngine.js +0 -46
  634. package/nodes/utils/lightEngines/matterHueShim.js +0 -59
  635. package/nodes/utils/lightEngines/matterLightEngine.js +0 -117
  636. package/nodes/utils/matterBridgeDeviceFactory.mjs +0 -780
  637. package/nodes/utils/matterBridgeEngine.mjs +0 -297
  638. package/nodes/utils/matterControllerCommandGate.js +0 -47
  639. package/nodes/utils/matterControllerProfiles/doorLock.js +0 -258
  640. package/nodes/utils/matterControllerProfiles/fan.js +0 -19
  641. package/nodes/utils/matterControllerProfiles/index.js +0 -34
  642. package/nodes/utils/matterControllerProfiles/mappedEndpoint.js +0 -217
  643. package/nodes/utils/matterControllerProfiles/switch.js +0 -13
  644. package/nodes/utils/matterControllerProfiles/thermostat.js +0 -19
  645. package/nodes/utils/matterControllerProfiles/universal.js +0 -462
  646. package/nodes/utils/matterControllerProfiles/windowCovering.js +0 -19
  647. package/nodes/utils/matterControllerSemanticInput.js +0 -212
  648. package/nodes/utils/matterEngine.mjs +0 -894
  649. package/nodes/utils/matterEnvironmentLock.mjs +0 -32
  650. package/nodes/utils/matterKnxConverter.js +0 -204
  651. package/nodes/utils/matterStorageBackup.js +0 -100
  652. package/resources/HA-icon.png +0 -0
  653. package/resources/dim.png +0 -0
  654. package/resources/rgb.png +0 -0
  655. package/resources/tunablewhite.png +0 -0
  656. package/resources/zxing-browser-0.2.0.min.js +0 -1
  657. package/resources/zxing-browser-LICENSE.txt +0 -21
@@ -1,28 +0,0 @@
1
- 'use strict'
2
-
3
- const { setupHueControllerRuntime } = require('./utils/hueControllerProfileAdapter')
4
-
5
- module.exports = function (RED) {
6
- // Keep the public wrapper intentionally boring. Device-specific behavior lives
7
- // in the Controller-owned private profiles; this file owns only selection,
8
- // startup containment and the single public Node-RED registration.
9
- function knxUltimateHueController (config) {
10
- try {
11
- // The selected profile performs RED.nodes.createNode itself. Calling it
12
- // here as a constructor-on-this preserves its complete, proven lifecycle.
13
- setupHueControllerRuntime(RED, this, config)
14
- } catch (error) {
15
- // If a profile cannot start, still create a valid Node-RED node and surface
16
- // the operational failure without allowing it to stop the runtime.
17
- // Avoid a second createNode call when the profile failed after creating it.
18
- if (!this.id) RED.nodes.createNode(this, config)
19
- const message = error && error.message ? error.message : String(error)
20
- RED.log.error(`knxUltimateHueController: ${message}`)
21
- this.status({ fill: 'red', shape: 'dot', text: message })
22
- this.error(message)
23
- }
24
- }
25
-
26
- // This is the only registration produced by the Controller architecture.
27
- RED.nodes.registerType('knxUltimateHueController', knxUltimateHueController)
28
- }
@@ -1,641 +0,0 @@
1
- <script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/11f26b4500.js"></script>
2
-
3
- <script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/htmlUtils.js"></script>
4
-
5
- <script type="text/javascript">
6
- (function () {
7
- let $tabs = null;
8
- let $requiresBridgeElems = null;
9
- let $knxSections = null;
10
- let $readStatusRow = null;
11
- let $deviceName = null;
12
- let $refreshButton = null;
13
- let $loadingIndicator = null;
14
- let $dptSelect = null;
15
- let cachedDevices = [];
16
- let defaultDevicePlaceholder = '';
17
- let showingNoDevicesPlaceholder = false;
18
- let currentNode = null;
19
- let $outputInfo = null;
20
- let $enablePinsSelect = null;
21
- const EMPTY_SERVER_VALUES = new Set(['', 'none', '_add_', '__none__', '__null__', 'null', 'undefined']);
22
-
23
- const ensureVerticalTabsStyle = () => {
24
- if ($('#knxUltimateHueLightVerticalTabs').length) return;
25
- const style = `
26
- <style id="knxUltimateHueLightVerticalTabs">
27
- .hue-vertical-tabs.ui-tabs.ui-widget.ui-widget-content.ui-corner-all {
28
- display: flex;
29
- border: none;
30
- padding: 0;
31
- }
32
- .hue-vertical-tabs > ul.ui-tabs-nav {
33
- flex: 0 0 144px;
34
- border-right: 1px solid #ccc;
35
- border-left: none;
36
- border-top: none;
37
- border-bottom: none;
38
- padding: 0.5em 0.3em;
39
- }
40
- .hue-vertical-tabs > ul.ui-tabs-nav li {
41
- float: none;
42
- width: 100%;
43
- margin: 0 0 2px 0;
44
- }
45
- .hue-vertical-tabs > ul.ui-tabs-nav li a {
46
- display: block;
47
- width: 100%;
48
- white-space: nowrap;
49
- position: relative;
50
- border-bottom: none !important;
51
- }
52
- .hue-vertical-tabs > ul.ui-tabs-nav li.ui-tabs-active {
53
- border-bottom: none !important;
54
- }
55
- .hue-vertical-tabs > ul.ui-tabs-nav li.ui-tabs-active a::after {
56
- content: "";
57
- position: absolute;
58
- left: 0;
59
- bottom: 0;
60
- width: 50%;
61
- height: 3px;
62
- background: currentColor;
63
- }
64
- .hue-vertical-tabs .ui-tabs-panel {
65
- flex: 1;
66
- padding: 0.8em 1em;
67
- box-sizing: border-box;
68
- border: none;
69
- background: transparent;
70
- }
71
- .hue-vertical-tabs .form-row {
72
- display: flex;
73
- flex-wrap: nowrap;
74
- align-items: center;
75
- gap: 4px;
76
- }
77
- .hue-vertical-tabs .form-row > dt {
78
- flex: 1 1 auto;
79
- margin: 0;
80
- }
81
- .hue-vertical-tabs hr {
82
- width: 100%;
83
- border: 0;
84
- border-top: 1px solid #ccc;
85
- margin: 8px 0;
86
- }
87
- .hue-vertical-tabs .hue-form-tip {
88
- display: flex;
89
- align-items: center;
90
- gap: 6px;
91
- width: 100%;
92
- margin-left: 0 !important;
93
- max-width: none;
94
- color: #1b7d33;
95
- margin-bottom: 6px;
96
- padding: 6px 10px;
97
- box-sizing: border-box;
98
- }
99
- .hue-vertical-tabs .hue-form-tip .fa {
100
- color: forestgreen;
101
- flex: 0 0 auto;
102
- }
103
- .hue-vertical-tabs .hue-form-tip span {
104
- flex: 1 1 auto;
105
- min-width: 0;
106
- white-space: normal;
107
- }
108
- </style>`;
109
- $('head').append(style);
110
- };
111
-
112
- const detachHandlers = () => {
113
- $('#node-input-server').off('.knxUltimateHueHumiditySensor');
114
- $('#node-input-serverHue').off('.knxUltimateHueHumiditySensor');
115
- $('.hue-refresh-devices').off('.knxUltimateHueHumiditySensor');
116
- const $gaInput = $('#node-input-GAhumiditysensor');
117
- $gaInput.off('.knxUltimateHueHumiditySensor');
118
- if ($gaInput.data('ui-autocomplete')) {
119
- try { $gaInput.autocomplete('destroy'); } catch (error) { /* empty */ }
120
- }
121
- if ($deviceName) {
122
- $deviceName.off('.knxUltimateHueHumiditySensor');
123
- if ($deviceName.data('ui-autocomplete')) {
124
- try { $deviceName.autocomplete('destroy'); } catch (error) { /* empty */ }
125
- }
126
- }
127
- if ($enablePinsSelect) {
128
- $enablePinsSelect.off('.knxUltimateHueHumiditySensor');
129
- }
130
- };
131
-
132
- const ensureConfigSelection = (selector) => {
133
- if ($(selector).val() !== '_ADD_') return;
134
- try { $(selector).prop('selectedIndex', 0); } catch (error) { /* empty */ }
135
- };
136
-
137
- const resolveServerId = (value) => {
138
- if (value === undefined || value === null) return null;
139
- if (value === false) return null;
140
- if (typeof value === 'string') {
141
- const trimmed = value.trim();
142
- if (trimmed === '') return null;
143
- if (EMPTY_SERVER_VALUES.has(trimmed.toLowerCase())) return null;
144
- return trimmed;
145
- }
146
- const asString = String(value).trim();
147
- if (asString === '' || EMPTY_SERVER_VALUES.has(asString.toLowerCase())) return null;
148
- return value;
149
- };
150
-
151
- const normalizePinsValue = (value) => {
152
- if (value === undefined || value === null || value === '') return 'no';
153
- if (value === true || value === 'true') return 'yes';
154
- if (value === false || value === 'false') return 'no';
155
- return value;
156
- };
157
-
158
- const applyNoDevicesPlaceholder = (hasDevices) => {
159
- if (!$deviceName) return;
160
- if (hasDevices) {
161
- if (showingNoDevicesPlaceholder) {
162
- showingNoDevicesPlaceholder = false;
163
- $deviceName.attr('placeholder', defaultDevicePlaceholder);
164
- }
165
- return;
166
- }
167
- const message = RED._('node-red-contrib-knx-ultimate/knxUltimateHueHumiditySensor:knxUltimateHueHumiditySensor.no_devices');
168
- showingNoDevicesPlaceholder = true;
169
- $deviceName.attr('placeholder', message);
170
- if (($deviceName.val() || '').trim() === '') {
171
- $deviceName.val('');
172
- }
173
- };
174
-
175
- const filterDevices = (devices, term) => {
176
- const cleaned = (term || '').replace(/exactmatch/gi, '').trim();
177
- return $.map(devices, (value) => {
178
- const sSearch = value.name;
179
- if (cleaned === '' || htmlUtilsfullCSVSearch(sSearch, cleaned)) {
180
- return {
181
- hueDevice: value.id,
182
- value: value.name,
183
- deviceObject: value.deviceObject || value,
184
- };
185
- }
186
- return null;
187
- });
188
- };
189
-
190
- const loadDPTOptions = (serverId, node) => {
191
- if (!$dptSelect) return;
192
- $dptSelect.empty();
193
- const validId = resolveServerId(serverId);
194
- if (!validId) {
195
- return;
196
- }
197
- $.getJSON(`knxUltimateDpts?serverId=${validId}`, (data) => {
198
- data.forEach((dpt) => {
199
- if (dpt.value.startsWith('9.007')) {
200
- $dptSelect.append($('<option></option>').attr('value', dpt.value).text(dpt.text));
201
- }
202
- });
203
- const referenceNode = node || currentNode || {};
204
- const targetDpt = (referenceNode.dpthumiditysensor && referenceNode.dpthumiditysensor !== '') ? referenceNode.dpthumiditysensor : '9.007';
205
- if (targetDpt) {
206
- $dptSelect.val(targetDpt);
207
- }
208
- });
209
- };
210
-
211
- const hasKNXServerSelected = () => {
212
- let domValue = $('#node-input-server').val();
213
- if (domValue === undefined) {
214
- domValue = currentNode ? currentNode.server : null;
215
- }
216
- const knxServerId = resolveServerId(domValue);
217
- return Boolean(knxServerId);
218
- };
219
-
220
- const getGroupAddress = ($sourceWidget, $nameWidget, $dptWidget) => {
221
- $sourceWidget.off('.knxUltimateHueHumiditySensor');
222
- $sourceWidget.autocomplete({
223
- minLength: 0,
224
- source(request, response) {
225
- const serverId = $('#node-input-server').val();
226
- const knxServerId = resolveServerId(serverId);
227
- if (!knxServerId) { response([]); return; }
228
- const server = RED.nodes.node(knxServerId);
229
- if (!server) { response([]); return; }
230
- $.getJSON(`knxUltimatecsv?nodeID=${server.id}`, (data) => {
231
- response($.map(data, (value) => {
232
- const sSearch = `${value.ga} (${value.devicename}) DPT${value.dpt}`;
233
- if (htmlUtilsfullCSVSearch(sSearch, `${request.term} 9.007`)) {
234
- return {
235
- label: `${value.ga} # ${value.devicename} # ${value.dpt}`,
236
- value: value.ga,
237
- };
238
- }
239
- return null;
240
- }));
241
- });
242
- },
243
- select(event, ui) {
244
- let sDevName = ui.item.label.split('#')[1].trim();
245
- try {
246
- sDevName = sDevName.substr(sDevName.indexOf(')') + 1).trim();
247
- } catch (error) { /* empty */ }
248
- $nameWidget.val(sDevName);
249
- const optVal = $dptWidget.find(`option:contains('${ui.item.label.split('#')[2].trim()}')`).attr('value');
250
- if (optVal !== undefined && optVal !== null) {
251
- $dptWidget.val(optVal).trigger('change');
252
- } else {
253
- $dptWidget.trigger('change');
254
- }
255
- },
256
- });
257
- $sourceWidget.on('focus.knxUltimateHueHumiditySensor', function () {
258
- $(this).autocomplete('search', `${$(this).val()}exactmatch`);
259
- });
260
- try {
261
- const serverId = $('#node-input-server').val();
262
- const server = RED.nodes.node(serverId);
263
- if (server && server.id) KNX_enableSecureFormatting($sourceWidget, server.id);
264
- } catch (error) { /* empty */ }
265
- };
266
-
267
- const fetchDevices = (hueServer, term, response, { forceRefresh = false } = {}) => {
268
- if (!hueServer) {
269
- applyNoDevicesPlaceholder(true);
270
- response([]);
271
- return;
272
- }
273
- if (!forceRefresh && cachedDevices.length > 0) {
274
- applyNoDevicesPlaceholder(cachedDevices.length > 0);
275
- response(filterDevices(cachedDevices, term));
276
- return;
277
- }
278
- if ($loadingIndicator) $loadingIndicator.show();
279
- const refreshQuery = forceRefresh ? '&forceRefresh=1' : '';
280
- $.getJSON(`KNXUltimateGetResourcesHUE?rtype=humidity&serverId=${encodeURIComponent(hueServer.id)}${refreshQuery}&_=${Date.now()}`, (data) => {
281
- const listCandidates = Array.isArray(data) ? data : (Array.isArray(data?.devices) ? data.devices : []);
282
- cachedDevices = listCandidates.map((value) => {
283
- if (value.deviceObject) return value;
284
- return {
285
- id: value.id || value.rid,
286
- name: value.name || value.metadata?.name || '',
287
- deviceObject: value,
288
- };
289
- });
290
- if (currentNode) currentNode._cachedHumidityDevices = cachedDevices;
291
- applyNoDevicesPlaceholder(cachedDevices.length > 0);
292
- response(filterDevices(cachedDevices, term));
293
- }).always(() => {
294
- if ($loadingIndicator) $loadingIndicator.hide();
295
- }).fail(() => {
296
- cachedDevices = [];
297
- if (currentNode) currentNode._cachedHumidityDevices = cachedDevices;
298
- applyNoDevicesPlaceholder(false);
299
- response([]);
300
- });
301
- };
302
-
303
- const updateTabsVisibility = () => {
304
- if (!$tabs) return;
305
- const hueServerId = resolveServerId($('#node-input-serverHue').val());
306
- const knxSelected = hasKNXServerSelected();
307
- if (hueServerId) {
308
- $requiresBridgeElems.show();
309
- } else {
310
- $requiresBridgeElems.hide();
311
- }
312
-
313
- if (hueServerId && knxSelected) {
314
- $tabs.show();
315
- $tabs.tabs('refresh');
316
- } else {
317
- $tabs.hide();
318
- }
319
-
320
- if ($outputInfo) {
321
- if (knxSelected) {
322
- $outputInfo.hide();
323
- } else {
324
- $outputInfo.show();
325
- }
326
- }
327
- if ($enablePinsSelect && $enablePinsSelect.length) {
328
- const desiredPins = knxSelected ? 'no' : 'yes';
329
- if ($enablePinsSelect.val() !== desiredPins) {
330
- $enablePinsSelect.val(desiredPins).trigger('change');
331
- }
332
- }
333
- };
334
-
335
- const updateKNXVisibility = () => {
336
- const knxSelected = hasKNXServerSelected();
337
- if (knxSelected) {
338
- $knxSections.show();
339
- if ($readStatusRow) $readStatusRow.show();
340
- } else {
341
- $knxSections.hide();
342
- if ($readStatusRow) $readStatusRow.hide();
343
- }
344
- if ($outputInfo) {
345
- if (knxSelected) {
346
- $outputInfo.hide();
347
- } else {
348
- $outputInfo.show();
349
- }
350
- }
351
- updateTabsVisibility();
352
- };
353
-
354
- RED.nodes.registerType('knxUltimateHueHumiditySensor', {
355
- category: 'deprecated',
356
- color: '#E7E9F6',
357
- defaults: {
358
- server: { type: 'knxUltimate-config', required: false },
359
- serverHue: { type: 'hue-config', required: true },
360
- name: { value: '' },
361
-
362
- namehumiditysensor: { value: '' },
363
- GAhumiditysensor: { value: '' },
364
- dpthumiditysensor: { value: '' },
365
- readStatusAtStartup: { value: 'yes' },
366
- enableNodePINS: { value: 'yes' },
367
-
368
- hueDevice: { value: '' },
369
- outputs: { value: 1 },
370
- },
371
- inputs: 0,
372
- outputs: 1,
373
- icon: 'node-hue-icon.svg',
374
- label() {
375
- return `${this.name || 'Hue Humidity Sensor'} (deprecated)`;
376
- },
377
- paletteLabel: 'Hue Humidity Sensor (deprecated)',
378
- oneditprepare() {
379
- try { RED.sidebar.show('help'); } catch (error) { /* empty */ }
380
- const node = this;
381
- currentNode = node;
382
-
383
- ensureConfigSelection('#node-input-serverHue');
384
- ensureVerticalTabsStyle();
385
-
386
- $tabs = $('#tabs');
387
- $requiresBridgeElems = $('.hue-requires-bridge');
388
- $knxSections = $('.hue-knx-section');
389
- $readStatusRow = $('#node-input-readStatusAtStartup').closest('.form-row');
390
- $deviceName = $('#node-input-name');
391
- $refreshButton = $('.hue-refresh-devices');
392
- $loadingIndicator = $('.hue-devices-loading');
393
- $dptSelect = $('#node-input-dpthumiditysensor');
394
- $outputInfo = $('.hue-output-info');
395
- $enablePinsSelect = $('#node-input-enableNodePINS');
396
-
397
- cachedDevices = Array.isArray(node._cachedHumidityDevices) ? node._cachedHumidityDevices : [];
398
- node._cachedHumidityDevices = cachedDevices;
399
-
400
- defaultDevicePlaceholder = $deviceName.attr('placeholder') || '';
401
- showingNoDevicesPlaceholder = false;
402
-
403
- $tabs.addClass('hue-vertical-tabs');
404
- $tabs.tabs();
405
- $tabs.find('li').removeClass('ui-corner-top').addClass('ui-corner-left');
406
-
407
- const initialServerDomValue = $('#node-input-server').val();
408
- const initialServerId = initialServerDomValue === undefined ? node.server : initialServerDomValue;
409
- loadDPTOptions(initialServerId, node);
410
-
411
- const $gaInput = $('#node-input-GAhumiditysensor');
412
- const $nameInput = $('#node-input-namehumiditysensor');
413
- getGroupAddress($gaInput, $nameInput, $dptSelect);
414
-
415
- if ($deviceName) {
416
- $deviceName.off('.knxUltimateHueHumiditySensor');
417
- }
418
- $deviceName.autocomplete({
419
- minLength: 0,
420
- source(request, response) {
421
- const hueDomValue = $('#node-input-serverHue').val();
422
- const hueServerId = resolveServerId(hueDomValue === undefined ? node.serverHue : hueDomValue);
423
- const hueServer = hueServerId ? RED.nodes.node(hueServerId) : null;
424
- if (!hueServer) { response([]); return; }
425
- fetchDevices(hueServer, request.term, response);
426
- },
427
- select(event, ui) {
428
- $('#node-input-hueDevice').val(ui.item.hueDevice);
429
- },
430
- });
431
- $deviceName.on('focus.knxUltimateHueHumiditySensor', function () {
432
- $(this).autocomplete('search', `${$(this).val()}exactmatch`);
433
- });
434
-
435
- $refreshButton.on('click.knxUltimateHueHumiditySensor', () => {
436
- cachedDevices = [];
437
- node._cachedHumidityDevices = cachedDevices;
438
- const hueDomValue = $('#node-input-serverHue').val();
439
- const hueServerId = resolveServerId(hueDomValue === undefined ? node.serverHue : hueDomValue);
440
- const hueServer = hueServerId ? RED.nodes.node(hueServerId) : null;
441
- if (!hueServer) return;
442
- fetchDevices(hueServer, '', () => {
443
- $deviceName.autocomplete('search', `${$deviceName.val()}exactmatch`);
444
- }, { forceRefresh: true });
445
- });
446
-
447
- $('#node-input-server').on('change.knxUltimateHueHumiditySensor', function () {
448
- const serverId = $(this).val();
449
- loadDPTOptions(serverId, node);
450
- updateKNXVisibility();
451
- });
452
-
453
- $('#node-input-serverHue').on('change.knxUltimateHueHumiditySensor', function () {
454
- const hueServerId = resolveServerId($(this).val());
455
- cachedDevices = [];
456
- node._cachedHumidityDevices = cachedDevices;
457
- if ($loadingIndicator) $loadingIndicator.hide();
458
- showingNoDevicesPlaceholder = false;
459
- $deviceName.attr('placeholder', defaultDevicePlaceholder);
460
- if (!hueServerId) {
461
- applyNoDevicesPlaceholder(true);
462
- }
463
- updateTabsVisibility();
464
- });
465
-
466
- $('#node-input-readStatusAtStartup').val(node.readStatusAtStartup || 'yes');
467
- if ($enablePinsSelect) {
468
- const initialPins = normalizePinsValue(node.enableNodePINS || 'yes');
469
- $enablePinsSelect.val(initialPins);
470
- $enablePinsSelect.on('change.knxUltimateHueHumiditySensor', function () {
471
- const val = normalizePinsValue($(this).val());
472
- node.enableNodePINS = val;
473
- node.outputs = val === 'yes' ? 1 : 0;
474
- });
475
- $enablePinsSelect.trigger('change');
476
- }
477
-
478
- updateKNXVisibility();
479
- },
480
- oneditsave() {
481
- try { RED.sidebar.show('info'); } catch (error) { /* empty */ }
482
- detachHandlers();
483
- cachedDevices = [];
484
- const pinsSelection = $enablePinsSelect ? normalizePinsValue($enablePinsSelect.val()) : 'yes';
485
- this.enableNodePINS = pinsSelection;
486
- this.outputs = pinsSelection === 'yes' ? 1 : 0;
487
- this._cachedHumidityDevices = [];
488
- currentNode = null;
489
- },
490
- oneditcancel() {
491
- try { RED.sidebar.show('info'); } catch (error) { /* empty */ }
492
- detachHandlers();
493
- cachedDevices = [];
494
- this._cachedHumidityDevices = [];
495
- currentNode = null;
496
- },
497
- });
498
- }());
499
- </script>
500
-
501
- <script type="text/html" data-template-name="knxUltimateHueHumiditySensor">
502
- <div class="form-row knx-ultimate-v8-upgrade-row">
503
- <button type="button" class="red-ui-button knx-ultimate-v8-upgrade-button" data-i18n="[title]node-red-contrib-knx-ultimate/knxUltimateUtility:knxUltimateUtility.v8_upgrade.button_title">
504
- <i class="fa fa-arrow-circle-up" aria-hidden="true"></i>
505
- <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateUtility:knxUltimateUtility.v8_upgrade.button"></span>
506
- </button>
507
- </div>
508
- <div class="form-row hue-legacy-controller-notice" role="note" style="box-sizing:border-box; padding:10px 12px; margin-bottom:14px; border-left:4px solid #d79b00; background:#fff8df; color:#4d3a00;">
509
- <i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#a15c00; margin-right:6px;"></i>
510
- <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.legacy_node_notice"></span>
511
- </div>
512
- <div class="form-row hue-legacy-migration-action" style="margin-top:-6px; margin-bottom:14px;">
513
- <a class="hue-legacy-migration-video" href="https://youtu.be/f0Evf2QFI7c" target="_blank" rel="noopener noreferrer" style="display:inline-flex; align-items:center; gap:5px; margin-right:10px;" data-i18n="[title]node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_video_title">
514
- <i class="fa fa-youtube-play" aria-hidden="true" style="color:#ff0000;"></i>
515
- <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_video"></span>
516
- </a>
517
- <button type="button" class="red-ui-button hue-legacy-migrate-flow" style="background:#d97706; border-color:#b45309; color:#fff !important; font-weight:700;" data-i18n="[title]node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button_title">
518
- <i class="fa fa-exchange"></i> <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button"></span>
519
- </button>
520
- <div class="form-tips hue-controller-migration-disclaimer" style="margin-top:8px;" data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_disclaimer"></div>
521
- </div>
522
- <div class="form-row" style="margin-bottom:10px;">
523
- <span style="color:#ff0000"><i class="fa fa-youtube"></i></span>&nbsp;<a target="_blank" href="https://www.youtube.com/playlist?list=PL9Yh1bjbLAYrU8PsVhW4xzEug2WtVFv3E"><b>KNX-Ultimate video tutorials (YouTube playlist)</b></a>
524
- </div>
525
- <div class="form-row">
526
- <label for="node-input-server">
527
- <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAKnRFWHRDcmVhdGlvbiBUaW1lAEZyIDYgQXVnIDIwMTAgMjE6NTI6MTkgKzAxMDD84aS8AAAAB3RJTUUH3gYYCicNV+4WIQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAARnQU1BAACxjwv8YQUAAACUSURBVHjaY2CgFZg5c+Z/ZEyWAZ8+f/6/ZsWs/xoamqMGkGrA6Wla/1+fVARjEBuGsSoGmY4eZSCNL59d/g8DIDbIAHR14OgFGQByKjIGKX5+6/T///8gGMQGiV1+/B0Fg70GIkD+RMYgxf/O5/7//2MSmAZhkBi6OrgB6Bg5DGB4ajr3f2xqsYYLSDE2THJUDg0AAAqyDVd4tp4YAAAAAElFTkSuQmCC" />
528
- <span data-i18n="common.knx_gw"></span>
529
- </label>
530
- <input type="text" id="node-input-server">
531
- </div>
532
-
533
- <div class="form-row">
534
- <label for="node-input-serverHue">
535
- <img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEKADAAQAAAABAAAAEAAAAAA0VXHyAAABFUlEQVQ4EZWSsWoCQRCG1yiENEFEi6QSkjqWWoqFoBYJ+Br6JHkMn8Iibd4ihQpaJIhWNkry/ZtdGZY78Qa+m39nZ+dm9s4550awglNBluS/gVtAX6KgDclf68w2OThgfR9iT/jnoEv4TtByDThWTCDKW4SSZTf/zj9/eZbN+izTDuKGimu0vPF8B/YN8aC8LmcOj/AAn9CFTEs70Js/oGqy79C69bqJ5XbQI2kGO5N8QL9D08S8zBtBF5ZaVsznpCMoqJnVdjTpb1Db0fwIWmQV6BLXzFOYgA6/gDVfQN9bBWp2J2hdWDPoBV5FrKnAJutHikk/CHHR8i7x4iG7qQ720IYvu3GFbpHjx3pFrOFYkA354z/5bkK826phyAAAAABJRU5ErkJggg=="/>
536
- <span data-i18n="common.hue_bridge"></span>
537
- </label>
538
- <input type="text" id="node-input-serverHue">
539
- </div>
540
-
541
- <div class="form-row hue-requires-bridge">
542
- <label for="node-input-name">
543
- <i class="fa fa-tag"></i> <span data-i18n="knxUltimateHueHumiditySensor.hue_sensor"></span>
544
- </label>
545
- <input type="text" id="node-input-name" placeholder="Hue humidity sensor" style="flex:1 1 240px; min-width:240px; max-width:240px;">
546
- <button type="button" class="red-ui-button hue-refresh-devices" style="margin-left:6px; color:#1b7d33; border-color:#1b7d33;">
547
- <i class="fa fa-sync"></i>
548
- </button>
549
- <span class="hue-devices-loading" style="margin-left:6px; display:none; color:#1b7d33;">
550
- <i class="fa fa-circle-notch fa-spin"></i>
551
- </span>
552
- </div>
553
-
554
- <div id="tabs">
555
- <ul>
556
- <li><a href="#tabs-1"><i class="fa fa-tint"></i> <span data-i18n="knxUltimateHueHumiditySensor.tabs.humidity"></span></a></li>
557
- <li><a href="#tabs-2"><i class="fa fa-gear"></i> <span data-i18n="knxUltimateHueHumiditySensor.tabs.behaviour"></span></a></li>
558
- </ul>
559
-
560
- <div id="tabs-1">
561
- <div class="form-tips hue-form-tip hue-knx-section">
562
- <i class="fa fa-circle-info"></i>
563
- <span data-i18n="knxUltimateHueHumiditySensor.humidity_info"></span>
564
- </div>
565
- <div class="form-row hue-knx-section">
566
- <label for="node-input-GAhumiditysensor" style="width:70px;"><span data-i18n="common.ga"></span></label>
567
- <input type="text" id="node-input-GAhumiditysensor" placeholder="2/2/1" style="width:70px; text-align:left;">
568
- <label for="node-input-dpthumiditysensor" style="width:32px; text-align:right;"><span data-i18n="common.dpt"></span></label>
569
- <select id="node-input-dpthumiditysensor" style="width:110px;"></select>
570
- <label for="node-input-namehumiditysensor" style="width:50px; text-align:right;"><span data-i18n="common.name"></span></label>
571
- <input type="text" id="node-input-namehumiditysensor" style="flex:1 1 100px; min-width:100px; max-width:100%; text-align:left;" placeholder="Humidity hall">
572
- </div>
573
- </div>
574
-
575
- <div id="tabs-2">
576
- <div class="form-row">
577
- <label for="node-input-readStatusAtStartup" style="width:220px;">
578
- <i class="fa fa-question-circle"></i> <span data-i18n="knxUltimateHueHumiditySensor.read_status_startup"></span>
579
- </label>
580
- <select id="node-input-readStatusAtStartup" style="width:200px;">
581
- <option value="yes" data-i18n="knxUltimateHueHumiditySensor.opt_yes_emit"></option>
582
- <option value="no" data-i18n="knxUltimateHueHumiditySensor.opt_no"></option>
583
- </select>
584
- </div>
585
- <div class="form-row">
586
- <label for="node-input-enableNodePINS" style="width:220px;">
587
- <i class="fa fa-code"></i> <span data-i18n="knxUltimateHueHumiditySensor.node_pins"></span>
588
- </label>
589
- <select id="node-input-enableNodePINS" style="width:200px;">
590
- <option value="no" data-i18n="knxUltimateHueHumiditySensor.node_pins_hide"></option>
591
- <option value="yes" data-i18n="knxUltimateHueHumiditySensor.node_pins_show"></option>
592
- </select>
593
- </div>
594
- </div>
595
- </div>
596
-
597
- <div class="form-tips hue-form-tip hue-output-info" style="display:none;">
598
- <i class="fa fa-circle-info"></i>
599
- <span data-i18n="knxUltimateHueHumiditySensor.output_info"></span>
600
- </div>
601
-
602
- <input type="hidden" id="node-input-hueDevice">
603
- </script>
604
-
605
- <script type="text/markdown" data-help-name="knxUltimateHueHumiditySensor">
606
- ### Upgrade to KNX Ultimate 8
607
-
608
- Version 7 shows a compact **Upgrade to v8** button at the top of this editor. It downloads a flow backup, installs the required HUE/Matter packages, converts compatible nodes, performs a full Deploy, verifies the saved flows and installs version 8. Restart the Node-RED service when prompted; reloading only the browser is not enough. Legacy KNX AI nodes stop the automatic operation.
609
-
610
- [Full upgrade guide](https://supergiovane.github.io/node-red-contrib-knx-ultimate/wiki/Upgrade-to-v8)
611
-
612
- <br/>
613
-
614
- > **Deprecated:** This dedicated HUE node remains available for existing flows. Use **HUE Controller** for new work. The legacy node is marked `(deprecated)` in the palette and on the canvas, uses a lighter color than HUE Controller, and its editor opens with a migration notice.
615
-
616
- <p>This node reads relative humidity (%) from a HUE humidity sensor and maps it to KNX.</p>
617
-
618
- Start typing in the GA field (name or Group Address) to link the KNX GA; devices appear while you type.
619
-
620
- **General**
621
- |Property|Description|
622
- |--|--|
623
- | KNX GW | Select the KNX gateway to be used |
624
- | HUE Bridge | Select the HUE Bridge to be used |
625
- | HUE Sensor | HUE humidity sensor (autocomplete while typing) |
626
- | Read status at startup | On startup/reconnect, read current value and send it to KNX (default: no) |
627
-
628
- **Mapping**
629
- |Property|Description|
630
- |--|--|
631
- | Humidity | KNX GA for relative humidity %. Recommended DPT: <b>9.007</b> |
632
-
633
- ### Outputs
634
-
635
- 1. Standard output
636
- : `msg.payload` (number): current relative humidity in %
637
-
638
- ### Details
639
-
640
- `msg.payload` carries the numeric humidity value (percentage).
641
- </script>