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
package/package.json CHANGED
@@ -3,86 +3,49 @@
3
3
  "engines": {
4
4
  "node": ">=20.18.1"
5
5
  },
6
- "version": "7.1.4",
7
- "description": "KNX Ultimate is the most advanced KNX integration for Node-RED, providing secure KNX/IP communication, routing, ETS project import, Philips Hue, Matter Controller and Matter Bridge (control matter device via KNX and expose KNX GA via Matter), MQTT and Modbus adapters, diagnostics, virtual devices, and powerful automation nodes. Build professional, reliable, and scalable smart home and building automation projects with minimal effort.",
6
+ "version": "8.0.2",
7
+ "description": "KNX integration for Node-RED with KNX/IP and KNX Secure, ETS import, routing, diagnostics, automation utilities, MQTT and Modbus adapters. Optional Hue Ultimate and Matter Ultimate packages connect through the KNX gateway.",
8
8
  "files": [
9
9
  "nodes/",
10
10
  "resources/",
11
11
  "examples/",
12
12
  "img/logo-big.png",
13
13
  "img/readmemain.png",
14
+ "docs/assets/brand/made-in-italy.svg",
14
15
  "README.md",
15
16
  "CHANGELOG.md",
16
- "LICENSE"
17
+ "LICENSE",
18
+ "MIGRATION.md",
19
+ "scripts/check-legacy-flows.js"
17
20
  ],
18
21
  "dependencies": {
19
- "@matter/main": "^0.17.9",
20
- "@matter/nodejs": "^0.17.9",
21
- "@project-chip/matter.js": "^0.17.9",
22
22
  "knxultimate": "6.0.6",
23
23
  "lodash": "4.18.1",
24
24
  "mqtt": "^5.15.2",
25
25
  "ping": "0.4.4",
26
- "simple-get": "4.0.1",
27
- "winston": "^3.17.0",
28
- "google-translate-tts": "^0.3.0",
29
- "js-yaml": "4.3.2"
26
+ "winston": "^3.17.0"
30
27
  },
31
28
  "node-red": {
32
29
  "version": ">=3.1.1",
33
30
  "plugins": {
34
31
  "commonFunctions": "/nodes/commonFunctions.js",
35
32
  "knxUltimateFlowBubbles": "/nodes/plugins/knxUltimate-flow-bubbles-plugin.html",
36
- "knxUltimateMigrationNotice": "/nodes/plugins/knxUltimate-migration-notice-plugin.html",
37
- "knxUltimateCerebrumRuntime": "/nodes/plugins/knxUltimate-cerebrum-runtime-plugin.js"
33
+ "knxUltimateV8MigrationRecovery": "/nodes/plugins/knxUltimate-v8-migration-recovery-plugin.html"
38
34
  },
39
35
  "nodes": {
40
36
  "knxUltimate": "/nodes/knxUltimate.js",
41
37
  "knxUltimateUtility": "/nodes/knxUltimateUtility.js",
42
- "knxUltimateDateTime": "/nodes/knxUltimateDateTime.js",
43
- "knxUltimateStaircase": "/nodes/knxUltimateStaircase.js",
44
- "knxUltimateLoadControl": "/nodes/knxUltimateLoadControl.js",
45
- "knxUltimateGarage": "/nodes/knxUltimateGarage.js",
46
- "knxUltimateSceneController": "/nodes/knxUltimateSceneController.js",
47
- "knxUltimateLogger": "/nodes/knxUltimateLogger.js",
48
- "knxUltimateGlobalContext": "/nodes/knxUltimateGlobalContext.js",
49
- "knxUltimateAlerter": "/nodes/knxUltimateAlerter.js",
50
38
  "knxUltimateViewer": "/nodes/knxUltimateViewer.js",
51
39
  "knxUltimateMultiRouting": "/nodes/knxUltimateMultiRouting.js",
52
40
  "knxUltimateRouterFilter": "/nodes/knxUltimateRouterFilter.js",
53
- "knxUltimateAutoResponder": "/nodes/knxUltimateAutoResponder.js",
54
41
  "knxUltimateIoTBridge": "/nodes/knxUltimateIoTBridge.js",
55
- "knxUltimateWatchDog": "/nodes/knxUltimateWatchDog.js",
56
- "knxUltimate-config": "/nodes/knxUltimate-config.js",
57
- "hueConfig": "/nodes/hue-config.js",
58
- "knxUltimateHueController": "/nodes/knxUltimateHueController.js",
59
- "knxUltimateHueLight": "/nodes/knxUltimateHueLight.js",
60
- "knxUltimateMatterControllerDevice": "/nodes/knxUltimateMatterControllerDevice.js",
61
- "knxUltimateHueButton": "/nodes/knxUltimateHueButton.js",
62
- "knxUltimateHueMotion": "/nodes/knxUltimateHueMotion.js",
63
- "knxUltimateHueAreaMotion": "/nodes/knxUltimateHueAreaMotion.js",
64
- "knxUltimateHueTapDial": "/nodes/knxUltimateHueTapDial.js",
65
- "knxUltimateHueLightSensor": "/nodes/knxUltimateHueLightSensor.js",
66
- "knxUltimateHueTemperatureSensor": "/nodes/knxUltimateHueTemperatureSensor.js",
67
- "knxUltimateHueScene": "/nodes/knxUltimateHueScene.js",
68
- "knxUltimateHueBattery": "/nodes/knxUltimateHueBattery.js",
69
- "knxUltimateHueZigbeeConnectivity": "/nodes/knxUltimateHueZigbeeConnectivity.js",
70
- "knxUltimateContactSensor": "/nodes/knxUltimateHueContactSensor.js",
71
- "knxUltimateHATranslator": "/nodes/knxUltimateHATranslator.js",
72
- "knxUltimateHuedevice_software_update": "/nodes/knxUltimateHuedevice_software_update.js",
73
- "knxUltimateHuePlug": "/nodes/knxUltimateHuePlug.js",
74
- "knxUltimateHueHumiditySensor": "/nodes/knxUltimateHueHumiditySensor.js",
75
- "knxUltimateHueCameraMotion": "/nodes/knxUltimateHueCameraMotion.js",
76
- "matter-config": "/nodes/matter-config.js",
77
- "matterbridge-config": "/nodes/matterbridge-config.js",
78
- "knxUltimateMatterBridge": "/nodes/knxUltimateMatterBridge.js",
79
- "knxUltimateAI": "/nodes/knxUltimateAI.js",
80
- "knxUltimateAIHomeAssistant": "/nodes/knxUltimateAIHomeAssistant.js"
42
+ "knxUltimateLegacyMigration": "/nodes/knxUltimateLegacyMigration.js",
43
+ "knxUltimate-config": "/nodes/knxUltimate-config.js"
81
44
  }
82
45
  },
83
46
  "repository": {
84
47
  "type": "git",
85
- "url": "https://github.com/Supergiovane/node-red-contrib-knx-ultimate.git"
48
+ "url": "git+https://github.com/Supergiovane/node-red-contrib-knx-ultimate.git"
86
49
  },
87
50
  "keywords": [
88
51
  "node-red",
@@ -93,9 +56,6 @@
93
56
  "eib",
94
57
  "konnex",
95
58
  "IOT",
96
- "philips hue",
97
- "hue",
98
- "matter",
99
59
  "mqtt",
100
60
  "modbus",
101
61
  "home-assistant",
@@ -111,26 +71,18 @@
111
71
  },
112
72
  "license": "MIT",
113
73
  "publishConfig": {
114
- "access": "public",
115
- "tag": "latest"
74
+ "tag": "latest",
75
+ "access": "public"
116
76
  },
117
77
  "scripts": {
118
- "build": "npm run knx-ai:build && npm run knx-viewer:build",
78
+ "build": "npm run knx-viewer:build",
119
79
  "prepack": "npm run build",
120
80
  "prepublishOnly": "npm run build",
121
- "test": "npm run hue-controller:check && npm run knx-utility:check && DEBUG_KNX_HUE_TEST=0 npm run test:unit && node scripts/check-node-load.js",
81
+ "test": "npm run knx-utility:check && npm run test:unit && node scripts/check-node-load.js",
122
82
  "test:unit": "mocha \"test/**/*.test.js\"",
123
83
  "release:publish": "node scripts/publish-and-refresh.js",
124
84
  "release:refresh-flows": "node scripts/publish-and-refresh.js --refresh-only",
125
- "hue-controller:generate": "node scripts/generate-hue-controller-profiles.js",
126
- "hue-controller:check": "node scripts/generate-hue-controller-profiles.js --check",
127
- "avviaquesto-itest:light": "node test/integration/hueLiveTest.mjs",
128
- "avviaquesto-itest:matterlight": "node test/integration/matterLiveTest.mjs",
129
- "avviaquesto-itest:nodered-knx": "node test/integration/nodeRedLiveTest.mjs",
130
- "avviaquesto-itest:nodered-matter": "node test/integration/nodeRedLiveTest.mjs --matter",
131
85
  "avviaquesto-itest:knxbus": "node test/integration/knxLightTest.js",
132
- "avviaquesto-itest:buildflow": "node test/integration/buildTestFlow.js",
133
- "avviaquesto-itest:serve": "node test/integration/serveFlow.mjs",
134
86
  "lint:fix": "standard --fix",
135
87
  "lint-fix": "standard --fix",
136
88
  "knx-viewer:dev": "vite --config ui/knxUltimateViewer-vue/vite.config.mjs",
@@ -144,20 +96,21 @@
144
96
  "wiki:help-migrate": "node scripts/migrate-node-help.js",
145
97
  "docs:sync": "node scripts/export-wiki-to-pages.js",
146
98
  "wiki:refresh": "npm run wiki:help-export && node scripts/generate-wiki-navbar.js && node scripts/prepare-wiki-pages.js && npm run docs:sync",
147
- "docs:serve": "node scripts/dev-serve-docs.js",
148
- "docs:serve:norl": "node scripts/dev-serve-docs.js",
99
+ "docs:prepare": "node scripts/generate-wiki-navbar.js && node scripts/prepare-docs.js",
100
+ "docs:build": "npm run docs:prepare && jekyll build --source docs --destination docs/_site",
101
+ "docs:serve": "npm run docs:prepare && jekyll serve --source docs --destination docs/_site --host 127.0.0.1",
102
+ "docs:serve:norl": "npm run docs:serve",
149
103
  "knx-utility:generate": "node scripts/generate-knx-utility-profiles.js",
150
104
  "knx-utility:check": "node scripts/generate-knx-utility-profiles.js --check",
151
- "knx-ai:dev": "vite --config ui/knxUltimateAI-vue/vite.config.mjs",
152
- "knx-ai:build": "vite build --config ui/knxUltimateAI-vue/vite.config.mjs"
105
+ "preinstall": "node scripts/check-legacy-flows.js"
153
106
  },
154
107
  "devDependencies": {
155
108
  "@vitejs/plugin-vue": "^6.0.8",
156
109
  "chai": "^4.3.10",
157
- "marked": "^14.1.0",
158
110
  "mocha": "^10.4.0",
159
111
  "vite": "^7.3.6",
160
112
  "vue": "^3.5.41",
161
- "jspdf": "^4.2.1"
113
+ "marked": "^14.1.0",
114
+ "js-yaml": "4.3.2"
162
115
  }
163
116
  }
@@ -1,2 +1,2 @@
1
- window.FontAwesomeKitConfig = { asyncLoading: { enabled: false }, autoA11y: { enabled: true }, baseUrl: 'https://ka-f.fontawesome.com', baseUrlKit: 'https://kit.fontawesome.com', detectConflictsUntil: null, iconUploads: {}, id: 2836081, license: 'free', method: 'css', minify: { enabled: true }, token: '11f26b4500', v4FontFaceShim: { enabled: true }, v4shim: { enabled: true }, v5FontFaceShim: { enabled: true }, version: '6.4.2' }
2
- !(function (t) { typeof define === 'function' && define.amd ? define('kit-loader', t) : t() }(function () { 'use strict'; function t (t, e) { const n = Object.keys(t); if (Object.getOwnPropertySymbols) { let r = Object.getOwnPropertySymbols(t); e && (r = r.filter(function (e) { return Object.getOwnPropertyDescriptor(t, e).enumerable })), n.push.apply(n, r) } return n } function e (e) { for (let n = 1; n < arguments.length; n++) { var o = arguments[n] != null ? arguments[n] : {}; n % 2 ? t(Object(o), !0).forEach(function (t) { r(e, t, o[t]) }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(o)) : t(Object(o)).forEach(function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(o, t)) }) } return e } function n (t) { return (n = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function (t) { return typeof t } : function (t) { return t && typeof Symbol === 'function' && t.constructor === Symbol && t !== Symbol.prototype ? 'symbol' : typeof t })(t) } function r (t, e, n) { return (e = (function (t) { const e = (function (t, e) { if (typeof t !== 'object' || t === null) return t; const n = t[Symbol.toPrimitive]; if (void 0 !== n) { const r = n.call(t, e || 'default'); if (typeof r !== 'object') return r; throw new TypeError('@@toPrimitive must return a primitive value.') } return (e === 'string' ? String : Number)(t) }(t, 'string')); return typeof e === 'symbol' ? e : String(e) }(e))) in t ? Object.defineProperty(t, e, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : t[e] = n, t } function o (t, e) { return (function (t) { if (Array.isArray(t)) return t }(t)) || (function (t, e) { let n = t == null ? null : typeof Symbol !== 'undefined' && t[Symbol.iterator] || t['@@iterator']; if (n != null) { let r; let o; let i; let c; const a = []; let u = !0; let f = !1; try { if (i = (n = n.call(t)).next, e === 0) { if (Object(n) !== n) return; u = !1 } else for (; !(u = (r = i.call(n)).done) && (a.push(r.value), a.length !== e); u = !0); } catch (t) { f = !0, o = t } finally { try { if (!u && n.return != null && (c = n.return(), Object(c) !== c)) return } finally { if (f) throw o } } return a } }(t, e)) || (function (t, e) { if (!t) return; if (typeof t === 'string') return i(t, e); let n = Object.prototype.toString.call(t).slice(8, -1); n === 'Object' && t.constructor && (n = t.constructor.name); if (n === 'Map' || n === 'Set') return Array.from(t); if (n === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return i(t, e) }(t, e)) || (function () { throw new TypeError('Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.') }()) } function i (t, e) { (e == null || e > t.length) && (e = t.length); for (var n = 0, r = new Array(e); n < e; n++)r[n] = t[n]; return r } function c (t, e) { const n = e && e.addOn || ''; const r = e && e.baseFilename || t.license + n; const o = e && e.minify ? '.min' : ''; const i = e && e.fileSuffix || t.method; const c = e && e.subdir || t.method; return t.baseUrl + '/releases/' + (t.version === 'latest' ? 'latest' : 'v'.concat(t.version)) + '/' + c + '/' + r + o + '.' + i } function a (t, e) { const n = e || ['fa']; const r = '.' + Array.prototype.join.call(n, ',.'); const o = t.querySelectorAll(r); Array.prototype.forEach.call(o, function (e) { const n = e.getAttribute('title'); e.setAttribute('aria-hidden', 'true'); const r = !e.nextElementSibling || !e.nextElementSibling.classList.contains('sr-only'); if (n && r) { const o = t.createElement('span'); o.innerHTML = n, o.classList.add('sr-only'), e.parentNode.insertBefore(o, e.nextSibling) } }) } let u; const f = function () { }; const s = typeof global !== 'undefined' && void 0 !== global.process && typeof global.process.emit === 'function'; const l = typeof setImmediate === 'undefined' ? setTimeout : setImmediate; let d = []; function h () { for (let t = 0; t < d.length; t++)d[t][0](d[t][1]); d = [], u = !1 } function m (t, e) { d.push([t, e]), u || (u = !0, l(h, 0)) } function p (t) { const e = t.owner; let n = e._state; let r = e._data; const o = t[n]; const i = t.then; if (typeof o === 'function') { n = 'fulfilled'; try { r = o(r) } catch (t) { g(i, t) } } v(i, r) || (n === 'fulfilled' && b(i, r), n === 'rejected' && g(i, r)) } function v (t, e) { let r; try { if (t === e) throw new TypeError('A promises callback cannot return that same promise.'); if (e && (typeof e === 'function' || n(e) === 'object')) { const o = e.then; if (typeof o === 'function') return o.call(e, function (n) { r || (r = !0, e === n ? y(t, n) : b(t, n)) }, function (e) { r || (r = !0, g(t, e)) }), !0 } } catch (e) { return r || g(t, e), !0 } return !1 } function b (t, e) { t !== e && v(t, e) || y(t, e) } function y (t, e) { t._state === 'pending' && (t._state = 'settled', t._data = e, m(A, t)) } function g (t, e) { t._state === 'pending' && (t._state = 'settled', t._data = e, m(S, t)) } function w (t) { t._then = t._then.forEach(p) } function A (t) { t._state = 'fulfilled', w(t) } function S (t) { t._state = 'rejected', w(t), !t._handled && s && global.process.emit('unhandledRejection', t._data, t) } function O (t) { global.process.emit('rejectionHandled', t) } function j (t) { if (typeof t !== 'function') throw new TypeError('Promise resolver ' + t + ' is not a function'); if (this instanceof j == !1) throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."); this._then = [], (function (t, e) { function n (t) { g(e, t) } try { t(function (t) { b(e, t) }, n) } catch (t) { n(t) } }(t, this)) } j.prototype = { constructor: j, _state: 'pending', _then: null, _data: void 0, _handled: !1, then: function (t, e) { const n = { owner: this, then: new this.constructor(f), fulfilled: t, rejected: e }; return !e && !t || this._handled || (this._handled = !0, this._state === 'rejected' && s && m(O, this)), this._state === 'fulfilled' || this._state === 'rejected' ? m(p, n) : this._then.push(n), n.then }, catch: function (t) { return this.then(null, t) } }, j.all = function (t) { if (!Array.isArray(t)) throw new TypeError('You must pass an array to Promise.all().'); return new j(function (e, n) { const r = []; let o = 0; function i (t) { return o++, function (n) { r[t] = n, --o || e(r) } } for (var c, a = 0; a < t.length; a++)(c = t[a]) && typeof c.then === 'function' ? c.then(i(a), n) : r[a] = c; o || e(r) }) }, j.race = function (t) { if (!Array.isArray(t)) throw new TypeError('You must pass an array to Promise.race().'); return new j(function (e, n) { for (var r, o = 0; o < t.length; o++)(r = t[o]) && typeof r.then === 'function' ? r.then(e, n) : e(r) }) }, j.resolve = function (t) { return t && n(t) === 'object' && t.constructor === j ? t : new j(function (e) { e(t) }) }, j.reject = function (t) { return new j(function (e, n) { n(t) }) }; const E = typeof Promise === 'function' ? Promise : j; function P (t, e) { const n = e.fetch; const r = e.XMLHttpRequest; const o = e.token; let i = t; return o && !(function (t) { return t.indexOf('kit-upload.css') > -1 }(t)) && ('URLSearchParams' in window ? (i = new URL(t)).searchParams.set('token', o) : i = i + '?token=' + encodeURIComponent(o)), i = i.toString(), new E(function (t, e) { if (typeof n === 'function') n(i, { mode: 'cors', cache: 'default' }).then(function (t) { if (t.ok) return t.text(); throw new Error('') }).then(function (e) { t(e) }).catch(e); else if (typeof r === 'function') { const o = new r(); o.addEventListener('loadend', function () { this.responseText ? t(this.responseText) : e(new Error('')) }); ['abort', 'error', 'timeout'].map(function (t) { o.addEventListener(t, function () { e(new Error('')) }) }), o.open('GET', i), o.send() } else { e(new Error('')) } }) } function _ (t, e, n) { let r = t; return [[/(url\("?)\.\.\/\.\.\/\.\./g, function (t, n) { return ''.concat(n).concat(e) }], [/(url\("?)\.\.\/webfonts/g, function (t, r) { return ''.concat(r).concat(e, '/releases/v').concat(n, '/webfonts') }], [/(url\("?)https:\/\/kit-free([^.])*\.fontawesome\.com/g, function (t, n) { return ''.concat(n).concat(e) }]].forEach(function (t) { const e = o(t, 2); const n = e[0]; const i = e[1]; r = r.replace(n, i) }), r } function F (t, n) { const r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : function () { }; var o = n.document || o; const i = a.bind(a, o, ['fa', 'fab', 'fas', 'far', 'fal', 'fad', 'fak']); t.autoA11y.enabled && r(i); const u = t.subsetPath && t.baseUrl + '/' + t.subsetPath; const f = [{ id: 'fa-main', addOn: void 0, url: u }]; if (t.v4shim && t.v4shim.enabled && f.push({ id: 'fa-v4-shims', addOn: '-v4-shims' }), t.v5FontFaceShim && t.v5FontFaceShim.enabled && f.push({ id: 'fa-v5-font-face', addOn: '-v5-font-face' }), t.v4FontFaceShim && t.v4FontFaceShim.enabled && f.push({ id: 'fa-v4-font-face', addOn: '-v4-font-face' }), !u && t.customIconsCssPath) { const s = t.customIconsCssPath.indexOf('kit-upload.css') > -1 ? t.baseUrlKit : t.baseUrl; const l = s + '/' + t.customIconsCssPath; f.push({ id: 'fa-kit-upload', url: l }) } const d = f.map(function (r) { return new E(function (o, i) { const a = r.url || c(t, { addOn: r.addOn, minify: t.minify.enabled }); const u = { id: r.id }; const f = t.subset ? u : e(e(e({}, n), u), {}, { baseUrl: t.baseUrl, version: t.version, id: r.id, contentFilter: function (t, e) { return _(t, e.baseUrl, e.version) } }); P(a, n).then(function (t) { o(C(t, f)) }).catch(i) }) }); return E.all(d) } function C (t, e) { const n = e.contentFilter || function (t, e) { return t }; const r = document.createElement('style'); const o = document.createTextNode(n(t, e)); return r.appendChild(o), r.media = 'all', e.id && r.setAttribute('id', e.id), e && e.detectingConflicts && e.detectionIgnoreAttr && r.setAttributeNode(document.createAttribute(e.detectionIgnoreAttr)), r } function I (t, n) { n.autoA11y = t.autoA11y.enabled, t.license === 'pro' && (n.autoFetchSvg = !0, n.fetchSvgFrom = t.baseUrl + '/releases/' + (t.version === 'latest' ? 'latest' : 'v'.concat(t.version)) + '/svgs', n.fetchUploadedSvgFrom = t.uploadsUrl); const r = []; return t.v4shim.enabled && r.push(new E(function (r, o) { P(c(t, { addOn: '-v4-shims', minify: t.minify.enabled }), n).then(function (t) { r(U(t, e(e({}, n), {}, { id: 'fa-v4-shims' }))) }).catch(o) })), r.push(new E(function (r, o) { P(t.subsetPath && t.baseUrl + '/' + t.subsetPath || c(t, { minify: t.minify.enabled }), n).then(function (t) { const o = U(t, e(e({}, n), {}, { id: 'fa-main' })); r(function (t, e) { const n = e && void 0 !== e.autoFetchSvg ? e.autoFetchSvg : void 0; const r = e && void 0 !== e.autoA11y ? e.autoA11y : void 0; void 0 !== r && t.setAttribute('data-auto-a11y', r ? 'true' : 'false'); n && (t.setAttributeNode(document.createAttribute('data-auto-fetch-svg')), t.setAttribute('data-fetch-svg-from', e.fetchSvgFrom), t.setAttribute('data-fetch-uploaded-svg-from', e.fetchUploadedSvgFrom)); return t }(o, n)) }).catch(o) })), E.all(r) } function U (t, e) { const n = document.createElement('SCRIPT'); const r = document.createTextNode(t); return n.appendChild(r), n.referrerPolicy = 'strict-origin', e.id && n.setAttribute('id', e.id), e && e.detectingConflicts && e.detectionIgnoreAttr && n.setAttributeNode(document.createAttribute(e.detectionIgnoreAttr)), n } function T (t) { let e; const n = []; const r = document; const o = r.documentElement.doScroll; let i = (o ? /^loaded|^c/ : /^loaded|^i|^c/).test(r.readyState); i || r.addEventListener('DOMContentLoaded', e = function () { for (r.removeEventListener('DOMContentLoaded', e), i = 1; e = n.shift();)e() }), i ? setTimeout(t, 0) : n.push(t) } function L (t) { typeof MutationObserver !== 'undefined' && new MutationObserver(t).observe(document, { childList: !0, subtree: !0 }) } try { if (window.FontAwesomeKitConfig) { const k = window.FontAwesomeKitConfig; const x = { detectingConflicts: k.detectConflictsUntil && new Date() <= new Date(k.detectConflictsUntil), detectionIgnoreAttr: 'data-fa-detection-ignore', fetch: window.fetch, token: k.token, XMLHttpRequest: window.XMLHttpRequest, document }; const M = document.currentScript; const N = M ? M.parentElement : document.head; (function () { const t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return t.method === 'js' ? I(t, e) : t.method === 'css' ? F(t, e, function (t) { T(t), L(t) }) : void 0 })(k, x).then(function (t) { t.map(function (t) { try { N.insertBefore(t, M ? M.nextSibling : null) } catch (e) { N.appendChild(t) } }), x.detectingConflicts && M && T(function () { M.setAttributeNode(document.createAttribute(x.detectionIgnoreAttr)); const t = (function (t, e) { const n = document.createElement('script'); return e && e.detectionIgnoreAttr && n.setAttributeNode(document.createAttribute(e.detectionIgnoreAttr)), n.src = c(t, { baseFilename: 'conflict-detection', fileSuffix: 'js', subdir: 'js', minify: t.minify.enabled }), n }(k, x)); document.body.appendChild(t) }) }).catch(function (t) { console.error(''.concat('Font Awesome Kit:', ' ').concat(t)) }) } } catch (t) { console.error(''.concat('Font Awesome Kit:', ' ').concat(t)) } }))
1
+ // Inert compatibility resource for version 7 Hue/Matter editor templates.
2
+ // Keep the old icon script URL loadable until Node-RED restarts.
@@ -1,416 +1,2 @@
1
- ; (function (root) {
2
- const KNXAIChatAdapterMappings = [
3
- {
4
- id: 'windkh-telegrambot',
5
- title: 'windkh/node-red-contrib-telegrambot',
6
- inputCode: `// Receiver/Event -> Cerebrum Ultimate
7
- // Supports normal "telegram receiver" messages, including the one-time
8
- // reply-keyboard confirmation buttons, plus legacy callback_query events.
9
- const telegram = msg.payload;
10
- if (!telegram || typeof telegram !== 'object') return;
11
-
12
- const chatId = telegram.chatId;
13
- if (chatId === undefined || chatId === null) return;
14
-
15
- msg.sessionId = String(chatId);
16
- msg.language =
17
- (msg.originalMessage && msg.originalMessage.from && msg.originalMessage.from.language_code) ||
18
- msg.language ||
19
- '';
20
-
21
- if (telegram.type === 'voice') {
22
- const original = msg.originalMessage && typeof msg.originalMessage === 'object'
23
- ? msg.originalMessage
24
- : {};
25
- const voice = original.voice && typeof original.voice === 'object'
26
- ? original.voice
27
- : original.message && original.message.voice && typeof original.message.voice === 'object'
28
- ? original.message.voice
29
- : {};
30
- const fileId = String(telegram.content || voice.file_id || '').trim();
31
- const weblink = String(telegram.weblink || msg.weblink || '').trim();
32
- const botDetails = msg.telegramBot && typeof msg.telegramBot === 'object' ? msg.telegramBot : {};
33
- const botApiBase = String(botDetails.baseApiUrl || botDetails.baseapiurl || botDetails.baseApiURL || '').trim();
34
- let allowedOrigin = 'https://api.telegram.org';
35
- if (botApiBase) {
36
- try { allowedOrigin = new URL(botApiBase).origin; } catch (error) { /* use Telegram default */ }
37
- }
38
- if (!fileId && !weblink) return;
39
- msg.topic = 'ask';
40
- msg.knxAi = Object.assign({}, msg.knxAi, {
41
- sessionId: String(chatId),
42
- voiceInput: {
43
- source: 'telegram',
44
- originalType: 'voice',
45
- fileId: fileId,
46
- weblink: weblink,
47
- allowedOrigin: allowedOrigin,
48
- mediaType: String(voice.mime_type || telegram.contentType || telegram.mimeType || 'audio/ogg'),
49
- filename: String(voice.file_name || telegram.filename || 'telegram-voice.ogg'),
50
- durationSeconds: Math.max(0, Number(voice.duration || telegram.duration) || 0),
51
- fileSize: Math.max(0, Number(voice.file_size || telegram.fileSize) || 0)
52
- }
53
- });
54
- return msg;
55
- }
56
-
57
- const content = typeof telegram.content === 'string' ? telegram.content.trim() : '';
58
- if (content === '') return;
59
-
60
- if (telegram.type === 'callback_query' && (content === 'confirm' || content === 'cancel')) {
61
- msg.topic = content;
62
- msg.knxAi = Object.assign({}, msg.knxAi, {
63
- sessionId: String(chatId),
64
- confirm: content === 'confirm'
65
- });
66
- return msg;
67
- }
68
-
69
- if (telegram.type !== 'message') return;
70
- msg.topic = 'ask';
71
- msg.prompt = content;
72
- return msg;`,
73
- outputCode: `// Cerebrum Ultimate chat output -> Telegram sender
74
- // Converts the text reply and, when required, adds a one-time reply keyboard.
75
- // A button click returns through the normal Telegram receiver, so no separate
76
- // callback event node is required.
77
- const source = msg.inputMessage && typeof msg.inputMessage === 'object'
78
- ? msg.inputMessage
79
- : inputMessage;
80
- const sourcePayload = source && source.payload && typeof source.payload === 'object'
81
- ? source.payload
82
- : {};
83
- const chatId = sourcePayload.chatId !== undefined
84
- ? sourcePayload.chatId
85
- : source && source.chatId;
86
- if (chatId === undefined || chatId === null) return;
87
-
88
- let content = msg.payload;
89
- if (content && typeof content === 'object') {
90
- content = content.error || content.message || JSON.stringify(content);
91
- }
92
- content = String(content === undefined || content === null ? '' : content);
93
-
94
- const image = msg.knxAi && msg.knxAi.image;
95
- if (image && Buffer.isBuffer(image.data)) {
96
- msg.payload = {
97
- chatId: chatId,
98
- type: 'photo',
99
- content: image.data,
100
- options: {
101
- caption: content.slice(0, 1024)
102
- },
103
- fileOptions: {
104
- filename: image.filename || 'camera-snapshot.jpg',
105
- contentType: image.mediaType || 'image/jpeg'
106
- }
107
- };
108
- return msg;
109
- }
110
-
111
- const audio = msg.knxAi && msg.knxAi.audio;
112
- if (audio && Buffer.isBuffer(audio.data)) {
113
- const voiceLanguage = String(msg.knxAi.language || (source && source.language) || '').trim().toLowerCase().split(/[-_]/)[0];
114
- const disclosureLabels = {
115
- de: 'KI-generierte Stimme',
116
- en: 'AI-generated voice',
117
- es: 'Voz generada por IA',
118
- fr: 'Voix générée par l’IA',
119
- it: 'Voce generata dall’IA',
120
- zh: 'AI 生成的语音'
121
- };
122
- const disclosure = disclosureLabels[voiceLanguage] || disclosureLabels.en;
123
- const voiceOptions = { caption: [disclosure, content].filter(Boolean).join('\\n').slice(0, 1024) };
124
- const confirmation = msg.knxAi && msg.knxAi.confirmationRequest;
125
- if (confirmation && confirmation.required === true && Array.isArray(confirmation.actions)) {
126
- voiceOptions.reply_markup = JSON.stringify({
127
- keyboard: [confirmation.actions.map(function (action) {
128
- return { text: action.label };
129
- })],
130
- resize_keyboard: true,
131
- one_time_keyboard: true
132
- });
133
- } else if (msg.knxAi && Array.isArray(msg.knxAi.suggestions) && msg.knxAi.suggestions.length) {
134
- voiceOptions.reply_markup = JSON.stringify({
135
- keyboard: msg.knxAi.suggestions.slice(0, 3).map(function (suggestion) {
136
- return [{ text: Array.from(String(suggestion.text || suggestion.label || '').trim()).slice(0, 64).join('') }];
137
- }).filter(function (row) { return row[0].text; }),
138
- resize_keyboard: true,
139
- one_time_keyboard: true
140
- });
141
- } else if (/^knx_confirmation_/.test(String(msg.knxAi.type || '')) || /^knx_routine_/.test(String(msg.knxAi.type || ''))) {
142
- voiceOptions.reply_markup = JSON.stringify({ remove_keyboard: true });
143
- }
144
- msg.payload = {
145
- chatId: chatId,
146
- type: 'voice',
147
- content: audio.data,
148
- options: voiceOptions,
149
- fileOptions: {
150
- filename: audio.filename || 'knx-ai-reply.ogg',
151
- contentType: audio.mediaType || 'audio/ogg'
152
- }
153
- };
154
- return msg;
155
- }
156
-
157
- const telegramPayload = {
158
- chatId: chatId,
159
- type: 'message',
160
- content: content
161
- };
162
- const confirmation = msg.knxAi && msg.knxAi.confirmationRequest;
163
- if (confirmation && confirmation.required === true && Array.isArray(confirmation.actions)) {
164
- telegramPayload.options = {
165
- reply_markup: JSON.stringify({
166
- keyboard: [confirmation.actions.map(function (action) {
167
- return { text: action.label };
168
- })],
169
- resize_keyboard: true,
170
- one_time_keyboard: true
171
- })
172
- };
173
- } else if (msg.knxAi && Array.isArray(msg.knxAi.suggestions) && msg.knxAi.suggestions.length) {
174
- telegramPayload.options = {
175
- reply_markup: JSON.stringify({
176
- keyboard: msg.knxAi.suggestions.slice(0, 3).map(function (suggestion) {
177
- return [{ text: Array.from(String(suggestion.text || suggestion.label || '').trim()).slice(0, 64).join('') }];
178
- }).filter(function (row) { return row[0].text; }),
179
- resize_keyboard: true,
180
- one_time_keyboard: true
181
- })
182
- };
183
- } else if (msg.knxAi && (/^knx_confirmation_/.test(String(msg.knxAi.type || '')) || /^knx_routine_/.test(String(msg.knxAi.type || '')))) {
184
- telegramPayload.options = {
185
- reply_markup: JSON.stringify({ remove_keyboard: true })
186
- };
187
- }
188
-
189
- msg.payload = telegramPayload;
190
- return msg;`
191
- },
192
- {
193
- id: 'redbot-telegram',
194
- title: 'RedBot / node-red-contrib-chatbot (Telegram)',
195
- inputCode: `// RedBot Telegram Receiver -> Cerebrum Ultimate
196
- // RedBot normalizes Telegram text, voice audio and inline-button postbacks in msg.payload.
197
- const redbot = msg.payload;
198
- if (!redbot || typeof redbot !== 'object') return;
199
- if (redbot.transport && redbot.transport !== 'telegram') return;
200
-
201
- const chatId = redbot.chatId;
202
- if (chatId === undefined || chatId === null) return;
203
-
204
- msg.sessionId = String(chatId);
205
- msg.language =
206
- (msg.originalMessage && msg.originalMessage.from && msg.originalMessage.from.language_code) ||
207
- redbot.language ||
208
- msg.language ||
209
- '';
210
-
211
- const redbotType = String(redbot.type || '').trim().toLowerCase();
212
- if ((redbotType === 'audio' || redbotType === 'voice') && Buffer.isBuffer(redbot.content)) {
213
- const original = msg.originalMessage && typeof msg.originalMessage === 'object'
214
- ? msg.originalMessage
215
- : {};
216
- const voice = original.voice && typeof original.voice === 'object'
217
- ? original.voice
218
- : original.message && original.message.voice && typeof original.message.voice === 'object'
219
- ? original.message.voice
220
- : {};
221
- msg.topic = 'ask';
222
- msg.knxAi = Object.assign({}, msg.knxAi, {
223
- sessionId: String(chatId),
224
- voiceInput: {
225
- source: 'telegram',
226
- originalType: 'voice',
227
- transport: 'redbot-buffer',
228
- data: redbot.content,
229
- fileId: String(voice.file_id || '').trim(),
230
- mediaType: String(voice.mime_type || redbot.mimeType || 'audio/ogg'),
231
- filename: String(voice.file_name || redbot.filename || 'telegram-voice.ogg'),
232
- durationSeconds: Math.max(0, Number(voice.duration || redbot.duration) || 0),
233
- fileSize: Math.max(0, Number(voice.file_size || redbot.fileSize) || redbot.content.length)
234
- }
235
- });
236
- return msg;
237
- }
238
-
239
- const content = typeof redbot.content === 'string' ? redbot.content.trim() : '';
240
- if (redbotType !== 'message' || content === '') return;
241
-
242
- const action = content.toLowerCase();
243
- if (action === 'confirm' || action === 'cancel') {
244
- msg.topic = action;
245
- msg.knxAi = Object.assign({}, msg.knxAi, {
246
- sessionId: String(chatId),
247
- confirm: action === 'confirm'
248
- });
249
- return msg;
250
- }
251
-
252
- msg.topic = 'ask';
253
- msg.prompt = content;
254
- return msg;`,
255
- outputCode: `// Cerebrum Ultimate chat output -> RedBot Telegram Sender
256
- // Preserves RedBot conversation helpers and emits either a plain message
257
- // or inline postback buttons for KNX confirmation/cancellation.
258
- const source = msg.inputMessage && typeof msg.inputMessage === 'object'
259
- ? msg.inputMessage
260
- : inputMessage;
261
- const sourcePayload = source && source.payload && typeof source.payload === 'object'
262
- ? source.payload
263
- : {};
264
- const originalMessage = source && source.originalMessage && typeof source.originalMessage === 'object'
265
- ? source.originalMessage
266
- : {};
267
- const chatId = sourcePayload.chatId !== undefined
268
- ? sourcePayload.chatId
269
- : originalMessage.chat && originalMessage.chat.id;
270
- if (chatId === undefined || chatId === null) return;
271
-
272
- // RedBot's Sender uses these helpers to resolve the active bot and chat context.
273
- ['originalMessage', 'chat', 'api', 'client', 'redBot'].forEach(function (key) {
274
- if (msg[key] === undefined && source && source[key] !== undefined) {
275
- msg[key] = source[key];
276
- }
277
- });
278
-
279
- // A persisted camera watch can fire immediately after Node-RED restarts,
280
- // before a new inbound RedBot message has recreated its conversation helpers.
281
- // RedBot's Telegram Sender still needs transport metadata and a chat accessor,
282
- // even when tracking is disabled. Supply the smallest compatible outbound
283
- // envelope; the configured Sender remains responsible for choosing the bot.
284
- if (!msg.originalMessage || typeof msg.originalMessage !== 'object') {
285
- msg.originalMessage = {};
286
- }
287
- if (!msg.originalMessage.transport) msg.originalMessage.transport = sourcePayload.transport || 'telegram';
288
- if (msg.originalMessage.chatId === undefined) msg.originalMessage.chatId = chatId;
289
- if (sourcePayload.userId !== undefined && msg.originalMessage.userId === undefined) {
290
- msg.originalMessage.userId = sourcePayload.userId;
291
- }
292
- if (typeof msg.chat !== 'function') {
293
- const contextValues = {
294
- chatId: chatId,
295
- userId: sourcePayload.userId,
296
- transport: sourcePayload.transport || 'telegram'
297
- };
298
- const syntheticContext = {
299
- get: function () {
300
- const keys = Array.prototype.slice.call(arguments);
301
- if (keys.length === 0) return Object.assign({}, contextValues);
302
- if (keys.length === 1) return contextValues[keys[0]];
303
- return keys.reduce(function (result, key) {
304
- result[key] = contextValues[key];
305
- return result;
306
- }, {});
307
- },
308
- set: function (key, value) {
309
- if (key && typeof key === 'object') Object.assign(contextValues, key);
310
- else if (key !== undefined) contextValues[key] = value;
311
- return syntheticContext;
312
- },
313
- remove: function () {
314
- Array.prototype.slice.call(arguments).forEach(function (key) { delete contextValues[key]; });
315
- return syntheticContext;
316
- },
317
- clear: function () {
318
- Object.keys(contextValues).forEach(function (key) { delete contextValues[key]; });
319
- return syntheticContext;
320
- },
321
- all: function () { return Object.assign({}, contextValues); }
322
- };
323
- msg.chat = function () {
324
- return syntheticContext;
325
- };
326
- }
327
- if (typeof msg.get !== 'function') {
328
- msg.get = function (key) {
329
- if (key === 'userId') return sourcePayload.userId;
330
- if (key === 'chatId') return chatId;
331
- if (key === 'transport') return sourcePayload.transport || 'telegram';
332
- return undefined;
333
- };
334
- }
335
-
336
- let content = msg.payload;
337
- if (content && typeof content === 'object') {
338
- content = content.error || content.message || JSON.stringify(content);
339
- }
340
- content = String(content === undefined || content === null ? '' : content);
341
-
342
- const image = msg.knxAi && msg.knxAi.image;
343
- if (image && Buffer.isBuffer(image.data)) {
344
- msg.payload = {
345
- transport: sourcePayload.transport || 'telegram',
346
- chatId: chatId,
347
- type: 'photo',
348
- inbound: false,
349
- content: image.data,
350
- filename: image.filename || 'camera-snapshot.jpg',
351
- mimeType: image.mediaType || 'image/jpeg',
352
- caption: content.slice(0, 1024)
353
- };
354
- if (sourcePayload.userId !== undefined) msg.payload.userId = sourcePayload.userId;
355
- return msg;
356
- }
357
-
358
- const confirmation = msg.knxAi && msg.knxAi.confirmationRequest;
359
- const audio = msg.knxAi && msg.knxAi.audio;
360
- if (audio && Buffer.isBuffer(audio.data) && !(confirmation && confirmation.required === true)) {
361
- const voiceLanguage = String(msg.knxAi.language || (source && source.language) || '').trim().toLowerCase().split(/[-_]/)[0];
362
- const disclosureLabels = {
363
- de: 'KI-generierte Stimme',
364
- en: 'AI-generated voice',
365
- es: 'Voz generada por IA',
366
- fr: 'Voix générée par l’IA',
367
- it: 'Voce generata dall’IA',
368
- zh: 'AI 生成的语音'
369
- };
370
- const disclosure = disclosureLabels[voiceLanguage] || disclosureLabels.en;
371
- msg.payload = {
372
- transport: sourcePayload.transport || 'telegram',
373
- chatId: chatId,
374
- type: 'audio',
375
- inbound: false,
376
- content: audio.data,
377
- filename: audio.filename || 'knx-ai-reply.ogg',
378
- mimeType: audio.mediaType || 'audio/ogg',
379
- caption: [disclosure, content].filter(Boolean).join('\\n').slice(0, 1024)
380
- };
381
- if (sourcePayload.userId !== undefined) msg.payload.userId = sourcePayload.userId;
382
- return msg;
383
- }
384
-
385
- const redbotPayload = {
386
- transport: sourcePayload.transport || 'telegram',
387
- chatId: chatId,
388
- type: 'message',
389
- inbound: false,
390
- content: content
391
- };
392
- if (sourcePayload.userId !== undefined) redbotPayload.userId = sourcePayload.userId;
393
-
394
- if (confirmation && confirmation.required === true && Array.isArray(confirmation.actions)) {
395
- redbotPayload.type = 'inline-buttons';
396
- redbotPayload.buttons = confirmation.actions.map(function (action) {
397
- return {
398
- type: 'postback',
399
- label: action.label,
400
- value: action.callbackData
401
- };
402
- });
403
- }
404
-
405
- msg.payload = redbotPayload;
406
- return msg;`
407
- }
408
- ]
409
-
410
- if (root) {
411
- root.KNXAIChatAdapterMappings = KNXAIChatAdapterMappings
412
- }
413
- if (typeof module !== 'undefined' && module.exports) {
414
- module.exports = KNXAIChatAdapterMappings
415
- }
416
- })(typeof window !== 'undefined' ? window : (typeof globalThis !== 'undefined' ? globalThis : this))
1
+ // Inert compatibility resource for the version 7 AI editor cached before restart.
2
+ // AI nodes are no longer part of KNX Ultimate.
@@ -1,32 +1,2 @@
1
- (function (root, factory) {
2
- const api = factory()
3
- if (typeof module === 'object' && module.exports) module.exports = api
4
- if (root) root.KNXUltimateConfigNodeEditorSelection = api
5
- }(typeof window !== 'undefined' ? window : globalThis, function () {
6
- const DEFAULT_EMPTY_VALUES = new Set(['', 'none', '_add_', '__none__'])
7
-
8
- function normalizeSelection (value, emptyValues = DEFAULT_EMPTY_VALUES) {
9
- const normalized = value === undefined || value === null ? '' : String(value).trim()
10
- const normalizedEmptyValues = emptyValues instanceof Set
11
- ? emptyValues
12
- : new Set(Array.isArray(emptyValues) ? emptyValues : DEFAULT_EMPTY_VALUES)
13
- return normalizedEmptyValues.has(normalized.toLowerCase()) ? '' : normalized
14
- }
15
-
16
- function shouldPreserveSelection (event, nextValue, currentValue, emptyValues = DEFAULT_EMPTY_VALUES) {
17
- const programmaticChange = !event || !event.originalEvent
18
- return programmaticChange &&
19
- normalizeSelection(nextValue, emptyValues) === '' &&
20
- normalizeSelection(currentValue, emptyValues) !== ''
21
- }
22
-
23
- function resolveSelectedOrStoredSelection (selectedValue, storedValue, emptyValues = DEFAULT_EMPTY_VALUES) {
24
- return normalizeSelection(selectedValue, emptyValues) || normalizeSelection(storedValue, emptyValues)
25
- }
26
-
27
- return {
28
- normalizeSelection,
29
- resolveSelectedOrStoredSelection,
30
- shouldPreserveSelection
31
- }
32
- }))
1
+ // Inert compatibility resource for the version 7 Matter editor cached before restart.
2
+ // Matter editors now belong to node-red-contrib-matter-ultimate.