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,65 +0,0 @@
1
- <script type="text/markdown" data-help-name="knxUltimateMatterBridge">
2
- ### Mise à jour vers KNX Ultimate 8
3
-
4
- La version 7 affiche un petit bouton **Mettre à jour vers v8** en haut de cet éditeur. Il télécharge une sauvegarde des flux, installe les packages HUE/Matter requis, convertit les nœuds compatibles, effectue un Deploy complet, vérifie les flux enregistrés et installe la version 8. Redémarrez ensuite le service Node-RED comme demandé ; recharger uniquement le navigateur ne suffit pas. Les anciens nœuds KNX AI arrêtent l’opération automatique.
5
-
6
- [Guide complet de mise à jour](https://supergiovane.github.io/node-red-contrib-knx-ultimate/wiki/fr-Upgrade-to-v8)
7
-
8
- <br/>
9
-
10
- ## Vue d'ensemble
11
-
12
- Chaque nœud Expose KNX to Matter expose **un appareil KNX comme appareil Matter** : les contrôleurs appairés (Alexa, Google Home, Apple Home...) le voient, avec le nom que vous avez choisi, prêt pour le contrôle par app et à la voix. Pointez-le vers un nœud de configuration **Bridge Matter** (le bridge lui-même, appairé une seule fois - le QR d'appairage vit là-bas) et ajoutez autant de nœuds d'appareil que vous voulez, n'importe où dans vos flux.
13
-
14
- C'est la direction opposée du nœud *Matter Device* : là-bas KNX contrôle un appareil Matter, ici les contrôleurs Matter contrôlent KNX.
15
-
16
- Changer le type d'appareil après l'appairage du bridge modifie la structure de l'endpoint Matter. Les contrôleurs peuvent conserver l'ancien endpoint comme injoignable ; dans ce cas, réinitialisez/réappairez le bridge ou créez un nouvel appareil exposé.
17
-
18
- ## Configuration
19
-
20
- |Champ|Description|
21
- |--|--|
22
- | Bridge Matter | Le nœud de configuration Bridge Matter auquel appartient cet appareil |
23
- | GW KNX | Passerelle KNX utilisée pour les télégrammes. **Optionnel** : sans elle, l'appareil fonctionne en mode flow uniquement via les PIN du nœud. Sélectionnée automatiquement si le projet n'a qu'une passerelle |
24
- | Nom | Ce qu'Alexa & Co. affichent et utilisent pour les commandes vocales |
25
- | Type d'appareil | Le type d'appareil Matter (voir ci-dessous) ; il détermine quels champs d'adresse de groupe apparaissent |
26
- | Lire l'état au démarrage | Envoie un `GroupValue_Read` aux GA d'état au démarrage, pour peupler les attributs Matter |
27
-
28
- ## Types d'appareil et adresses de groupe
29
-
30
- |Type|Adresses de groupe|
31
- |--|--|
32
- | Lumière On/Off, Prise | GA commande On/Off, GA état On/Off (DPT 1.001) |
33
- | Lumière variable | + GA commande/état variation % (DPT 5.001) |
34
- | Lumière RGB (couleur) | + GA commande/état couleur RGB (DPT 232.600). La couleur Matter (hue/saturation ou XY, depuis la roue de couleur de l'app) est convertie depuis/vers le triplet RGB KNX |
35
- | Lumière blanc dynamique | + GA commande/état température de couleur en Kelvin (DPT 7.600) |
36
- | Volet / Store | Monter/Descendre (DPT 1.008), Stop (DPT 1.017), position % commande/état (DPT 5.001), inversion de position optionnelle |
37
- | Thermostat (chauffage et/ou rafraîchissement) | GA température actuelle, GA commande/état consigne (DPT 9.001). En ajoutant aussi la GA commande/état consigne rafraîchissement, le mode Cool (double consigne) est également exposé |
38
- | Climatiseur individuel | Un appareil Matter combine les GA commande/état On/Off (DPT 1.001), température actuelle et consignes chauffage/rafraîchissement (DPT 9.001), et vitesse ventilateur % (DPT 5.001) |
39
- | Ventilateur / VMC | GA commande/état vitesse % (DPT 5.001) |
40
- | Serrure de porte | GA commande verrouillage/déverrouillage et GA état verrouillé/déverrouillé (DPT 1.001 ; `true` = verrouillée) |
41
- | Capteurs (température, humidité, lumière, présence, contact) | Une GA d'état chacun |
42
- | Détecteur fumée/CO | GA état alarme fumée + GA état alarme CO optionnelle (DPT 1.005) : notifications critiques sur le téléphone |
43
- | Détecteur de fuite d'eau | GA état fuite (DPT 1.005) |
44
- | Capteur de qualité d'air (CO2) | GA état CO2 en ppm (DPT 9.008) ; la classe de qualité d'air (bonne/correcte/modérée/mauvaise...) est dérivée automatiquement |
45
- | Robot aspirateur | **Flow uniquement** : pas d'adresses de groupe. Activez les PIN du nœud : les commandes de l'assistant (« lance le nettoyage », pause/reprendre/retour à la base) arrivent sur la sortie comme `rvcmode`/`rvccommand` ; renvoyez l'état avec `msg.payload = { function: "rvcstate", value: "running"\|"docked"\|"charging"\|"paused"\|"error" }` et le mode avec `function: "rvcmode", value: "cleaning"\|"idle"` |
46
-
47
- - **GA de commande** : écrite sur le bus KNX quand l'assistant envoie une commande.
48
- - **GA d'état** : lue depuis le bus pour tenir à jour les attributs Matter (et les apps).
49
-
50
- ## Compatibilité avancée
51
-
52
- Ces options ne s'affichent que lorsqu'elles s'appliquent au type sélectionné. Les appareils variables peuvent ignorer la luminosité envoyée juste après `On`. Pour les volets, **Permuter Ouvrir / Fermer** inverse la commande KNX binaire et le sens du pourcentage. **Anti-rebond curseur volet** regroupe les cibles intermédiaires rapides avant l'écriture KNX : `0` utilise des fenêtres adaptatives (400 ms pour la première commande, 150 ms pour les suivantes) ; `1`–`5000` impose une fenêtre fixe. La position Matter peut aussi être mise à jour de façon optimiste puis corrigée par la GA d'état KNX.
53
-
54
- ## PIN du nœud
55
-
56
- Le sélecteur de PIN se trouve hors des onglets de l'éditeur. Son activation affiche juste dessous une section contextuelle **Entrée/sortie du flow**, avec des exemples copiables filtrés selon le type d'appareil :
57
-
58
- - **Entrée** : mettez à jour l'état Matter depuis le flux, sans passer par le bus KNX : `msg.payload = { function: "onoff", value: true }` (`function` est l'une de `onoff`, `level`, `rgb`, `colortemp`, `position`, `temperature`, `humidity`, `illuminance`, `occupancy`, `contact`, `currenttemp`, `setpoint`, `coolingsetpoint`, `fanspeed`, `lock`, `smoke`, `co`, `leak`, `co2`, `rvcstate`, `rvcmode`). Utile pour exposer à Alexa & Co. des valeurs calculées dans le flux (ex. un capteur virtuel).
59
- - **Sortie** : chaque commande reçue d'un contrôleur Matter est transmise au flux : `msg.topic` = nom de l'appareil, `msg.payload` = valeur, `msg.matter` = la commande brute. Un appareil sans GA de commande devient un **appareil flow uniquement**.
60
-
61
- ## Notes
62
-
63
- - L'identité Matter de l'appareil est liée à ce nœud : supprimer le nœud et en créer un nouveau fait apparaître un tout nouvel appareil dans les apps.
64
- - Les nœuds d'appareil ajoutés/renommés/supprimés sont pris en compte en quelques secondes, sans réappairer le bridge.
65
- </script>
@@ -1,123 +0,0 @@
1
- {
2
- "knxUltimateMatterBridge": {
3
- "title": "Expose KNX to Matter",
4
- "bridge_name": "Nom du bridge Matter",
5
- "port": "Port",
6
- "devices_help": "Ajoutez les appareils KNX à exposer sur Matter. Le \"Nom\" est celui qu'Alexa/Google/Apple affichent et utilisent pour les commandes vocales. GA de commande = écrite quand l'assistant envoie une commande ; GA d'état = lue depuis le bus pour tenir l'app à jour.",
7
- "read_status_startup": "Lire les adresses de groupe d'état au démarrage",
8
- "opt_yes": "Oui",
9
- "opt_no": "Non",
10
- "node_pins": "PIN entrée/sortie du nœud",
11
- "node_pins_hide": "Masquer",
12
- "node_pins_show": "Afficher les PIN entrée/sortie",
13
- "type_change_warning": "Changer le type d'appareil après l'appairage du bridge modifie la structure de l'endpoint Matter. Alexa/Google/Apple peuvent conserver l'ancien endpoint comme injoignable ; il peut être nécessaire de réinitialiser/réappairer le Matter Bridge ou de créer un nouvel appareil exposé.",
14
- "fields": {
15
- "type": "Type d'appareil",
16
- "name": "Nom (affiché par Alexa & Co.)",
17
- "name_placeholder": "ex. Lumière cuisine",
18
- "invert": "Inverser la position %"
19
- },
20
- "advanced": {
21
- "title": "Compatibilité avancée",
22
- "help": " Utilisez ces options seulement lorsqu'un contrôleur Matter ou un actionneur KNX demande un traitement spécial.",
23
- "alexa_dedup_ms": "Fenêtre anti-doublons Alexa (ms, 0 = off)",
24
- "turn_on_behavior": "Comportement à l'allumage",
25
- "turn_on_ignore_level": "Ignorer la luminosité envoyée juste après On",
26
- "turn_on_forward_all": "Transmettre chaque commande de luminosité",
27
- "ignore_level_ms": "Ignorer la luminosité après On (ms)",
28
- "cover_swap_open_close": "Permuter Ouvrir / Fermer le volet",
29
- "cover_slider_debounce": "Anti-rebond curseur volet (ms, 0 = adaptatif)",
30
- "cover_update_mode": "Mise à jour état volet",
31
- "cover_optimistic": "Mettre à jour la position Matter de façon optimiste",
32
- "cover_wait_status": "Attendre seulement l'état KNX",
33
- "cover_status_timeout": "Timeout état volet (ms)"
34
- },
35
- "tabs": {
36
- "mappings": "Mappages KNX",
37
- "advanced": "Options avancées"
38
- },
39
- "flow_help": {
40
- "title": "Entrée/sortie du flow",
41
- "intro": "Ces exemples correspondent au type d'appareil sélectionné et sont disponibles lorsque les broches d'entrée/sortie du nœud sont activées.",
42
- "input_title": "Flow → Matter (entrée du nœud)",
43
- "input_hint": "Envoyez l'un de ces messages pour mettre à jour l'état Matter exposé sans écrire sur KNX.",
44
- "output_title": "Matter → Flow (sortie du nœud)",
45
- "output_hint": "Les commandes reçues d'un contrôleur Matter sont émises avec la valeur dans msg.payload et les détails bruts dans msg.matter.",
46
- "function": "Fonction",
47
- "message": "Message d'exemple",
48
- "copy": "Copier",
49
- "copied": "Message copié",
50
- "no_input": "Ce type d'appareil ne possède aucun exemple de mise à jour d'état depuis le flow.",
51
- "no_output": "Ce type d'appareil n'émet aucune commande de contrôleur ; sa sortie reste inactive."
52
- },
53
- "functions": {
54
- "fn_onoff_cmd": "GA commande On/Off",
55
- "fn_onoff_status": "GA état On/Off",
56
- "fn_level_cmd": "GA commande variation %",
57
- "fn_level_status": "GA état variation %",
58
- "fn_sensor_ga": "GA état du capteur",
59
- "fn_updown": "GA commande Monter/Descendre",
60
- "fn_stop": "GA commande Stop",
61
- "fn_position_cmd": "GA commande position %",
62
- "fn_position_status": "GA état position %",
63
- "fn_currenttemp": "GA température actuelle",
64
- "fn_setpoint_cmd": "GA commande consigne",
65
- "fn_setpoint_status": "GA état consigne",
66
- "fn_coolingsetpoint_cmd": "GA commande consigne rafraîchissement",
67
- "fn_coolingsetpoint_status": "GA état consigne rafraîchissement",
68
- "fn_rgb_cmd": "GA commande couleur RGB (DPT 232.600)",
69
- "fn_rgb_status": "GA état couleur RGB (DPT 232.600)",
70
- "fn_ct_cmd": "GA commande température de couleur (Kelvin)",
71
- "fn_ct_status": "GA état température de couleur (Kelvin)",
72
- "fn_smoke_ga": "GA état alarme fumée",
73
- "fn_co_ga": "GA état alarme CO (optionnel)",
74
- "fn_leak_ga": "GA état fuite d'eau",
75
- "fn_co2_ga": "GA état CO2 (ppm, DPT 9.008)",
76
- "fn_fanspeed_cmd": "GA commande vitesse ventilateur %",
77
- "fn_fanspeed_status": "GA état vitesse ventilateur %",
78
- "fn_lock_cmd": "GA commande verrouillage/déverrouillage",
79
- "fn_lock_status": "GA état verrouillé/déverrouillé"
80
- },
81
- "types": {
82
- "onofflight": "Lumière On/Off",
83
- "dimmablelight": "Lumière variable",
84
- "rgblight": "Lumière RGB (couleur)",
85
- "colortemperaturelight": "Lumière blanc dynamique (température de couleur)",
86
- "onoffplug": "Prise (on/off)",
87
- "temperaturesensor": "Capteur de température",
88
- "humiditysensor": "Capteur d'humidité",
89
- "lightsensor": "Capteur de lumière (Lux)",
90
- "occupancysensor": "Capteur de présence",
91
- "contactsensor": "Capteur de contact",
92
- "windowcovering": "Volet / Store",
93
- "thermostat": "Thermostat (chauffage)",
94
- "roomairconditioner": "Climatiseur individuel",
95
- "fan": "Ventilateur / VMC",
96
- "doorlock": "Serrure de porte",
97
- "smokecoalarm": "Détecteur fumée/CO",
98
- "waterleakdetector": "Détecteur de fuite d'eau",
99
- "airqualitysensor": "Capteur de qualité d'air (CO2)",
100
- "robotvacuum": "Robot aspirateur (flow uniquement, via les PIN du nœud)"
101
- },
102
- "pairing": {
103
- "title": "Appairage (Alexa, Google Home, Apple Home...)",
104
- "not_running": "Le bridge Matter n'est pas encore démarré. Déployez, attendez quelques secondes puis cliquez sur actualiser.",
105
- "commissioned": "Bridge appairé avec ces contrôleurs :",
106
- "awaiting": "En attente d'appairage. Scannez le QR code ou saisissez le code manuel dans votre app Matter :",
107
- "qr_link": "Ouvrir le QR code dans le navigateur",
108
- "deploy_first": "Déployez d'abord ce nœud, puis cliquez sur actualiser.",
109
- "reset_button": "Réinitialiser l'appairage",
110
- "reset_confirm": "Supprimer TOUS les contrôleurs appairés et relancer l'appairage ? Les appareils disparaîtront d'Alexa/Google/Apple.",
111
- "reset_ok": "Appairage réinitialisé. Le bridge attend de nouveau un appairage."
112
- },
113
- "bridge": "Bridge Matter",
114
- "device_name": "Nom (affiché par Alexa & Co.)",
115
- "device_help": "Choisissez le type d'appareil et donnez-lui le nom que l'assistant vocal utilisera, puis remplissez les adresses de groupe. La passerelle KNX est optionnelle : sans elle, activez les PIN du nœud et pilotez l'appareil depuis le flux."
116
- },
117
- "common": {
118
- "ga": "GA",
119
- "dpt": "DPT",
120
- "name": "Nom",
121
- "knx_gw": "GW KNX"
122
- }
123
- }
@@ -1,57 +0,0 @@
1
- <script type="text/markdown" data-help-name="knxUltimateMatterControllerDevice">
2
- ### Mise à jour vers KNX Ultimate 8
3
-
4
- La version 7 affiche un petit bouton **Mettre à jour vers v8** en haut de cet éditeur. Il télécharge une sauvegarde des flux, installe les packages HUE/Matter requis, convertit les nœuds compatibles, effectue un Deploy complet, vérifie les flux enregistrés et installe la version 8. Redémarrez ensuite le service Node-RED comme demandé ; recharger uniquement le navigateur ne suffit pas. Les anciens nœuds KNX AI arrêtent l’opération automatique.
5
-
6
- [Guide complet de mise à jour](https://supergiovane.github.io/node-red-contrib-knx-ultimate/wiki/fr-Upgrade-to-v8)
7
-
8
- <br/>
9
-
10
- Ce nœud contrôle depuis KNX un endpoint Matter déjà appairé. Sélectionnez l'appareil Matter et l'éditeur détecte ses capacités, puis affiche uniquement les mappings KNX adaptés à cet endpoint.
11
-
12
- Un clic ou le focus sur le champ de l'appareil Matter ouvre toujours la liste complète des endpoints appairés, même si un appareil est déjà sélectionné. La saisie continue de filtrer la liste.
13
-
14
- Il remplace les nœuds Matter séparés non publiés et conserve toute l'UI lumière lorsque l'endpoint sélectionné est une lumière.
15
-
16
- ## Configuration
17
-
18
- |Champ|Description|
19
- |--|--|
20
- | KNX GW | Passerelle KNX utilisée pour écrire et répondre sur les adresses de groupe configurées. Elle peut rester vide si seule la sortie Node-RED est utilisée. La passerelle enregistrée reste sélectionnée pendant l'initialisation de l'éditeur et ne change qu'après une sélection explicite de l'utilisateur. |
21
- | Matter controller | Nœud de configuration Matter Controller dans lequel le périphérique a été appairé. |
22
- | Appareil Matter | Endpoint Matter choisi parmi les appareils appairés. L'UI est reconstruite à partir de ses capacités réelles. |
23
- | Switch / Prise / Lumière On-Off | Adresses de groupe commande et état On/Off, généralement DPT `1.001`. |
24
- | Serrure | Une AG de commande DPT `1.xxx` appelle `lockDoor` avec `true` et `unlockDoor` avec `false` ; une AG d'état séparée reçoit uniquement les états Verrouillé/Déverrouillé non ambigus. Si nécessaire, le PIN distant est conservé dans le champ d'identification. Les commandes non annoncées sont refusées. |
25
- | Autres points de terminaison | Prises, actionneurs On/Off, volets, thermostats, ventilateurs, capteurs d'environnement/contact/occupation, batterie, puissance et énergie utilisent le profil polyvalent. L'onglet **Mappages** contient uniquement les fonctions prises en charge par les clusters, attributs et commandes annoncés. |
26
- | Contrôles lumière | Pour les endpoints lumière, l'UI lumière complète est utilisée : DIM relatif (DPT `3.007`), luminosité %, RGB/HSV, blanc réglable, luminosité/température à l'allumage, mode jour/nuit, niveau min/max et vitesse de variation. Les sections non supportées restent masquées. |
27
- | Capteurs | Les endpoints capteur affichent leur GA de mesure/état uniquement si elle est supportée : température, humidité, éclairement, occupation, contact et batterie. |
28
- | Read at startup | Publie la valeur Matter en cache au déploiement/démarrage ou quand le périphérique se reconnecte. |
29
- | Update local state from KNX write | Met à jour le cache local Matter/KNX lorsqu'un télégramme est écrit sur une GA KNX configurée. |
30
- | Node Input/Output PINs | Affiche les pins entrée/sortie Node-RED et la section **Entrée du flow** juste sous ce champ. Les lumières affichent leurs messages d'état pris en charge au premier niveau ; les autres endpoints affichent le format simple `{function,value}` et les champs Matter avancés. |
31
-
32
- ## Entrée du flow
33
-
34
- Activez **Node Input/Output PINs** pour afficher la section **Entrée du flow** juste sous le sélecteur. Pour une lumière, elle propose des exemples copiables des propriétés prises en charge au premier niveau, comme `msg.on`, `msg.dimming`, `msg.color_temperature` et `msg.color`. Pour les autres endpoints, elle est construite depuis la structure annoncée et affiche l'Endpoint ID, tous les attributs lisibles/inscriptibles et toutes les commandes acceptées. Elle reste disponible sans passerelle KNX.
35
-
36
- Une écriture simple utilise `msg.payload = {function:"position",value:35}`. Omettez `value` pour lire un état, par exemple `{function:"temperature"}` ; la sortie utilise des unités lisibles et place les détails bruts dans `msg.matter`. Les fonctions `onoff`, `level`, `position`, `open`, `close`, `stop`, consignes, ventilateur et capteurs ne sont proposées que si l'endpoint les annonce. Une serrure accepte `{function:"lock",value:true|false}`.
37
-
38
- Les entrées avancées restent valides : `msg.clusterId` avec `msg.command`/`msg.args`, ou `msg.attribute` et éventuellement `msg.value`. Le Node ID et l'Endpoint ID sont déjà sélectionnés dans le nœud.
39
-
40
- ## Mode universel
41
-
42
- Sélectionnez **Mode universel** pour surveiller tous les appareils. Le nœud possède toujours une entrée et une sortie et n'utilise pas les mappings d'un endpoint. La passerelle KNX est optionnelle et sert uniquement aux GA alarme/texte du moniteur.
43
-
44
- Le **Moniteur universel de batteries** conserve l'état complet. Les GA KNX optionnelles publient l'alarme globale en DPT 1.005 et font défiler les appareils toutes les 2 secondes en DPT 16.001. `{payload:{action:"getAllBatteries"}}` renvoie l'inventaire.
45
-
46
- La sortie place la valeur brute dans `msg.payload` et le routage dans `msg.matter` (`source`, `nodeId`, `endpointId`, `clusterId`, nom d'attribut/événement). L'entrée utilise `msg.nodeId`, `msg.endpointId`, `msg.clusterId` et soit `msg.command` avec `msg.args`, soit `msg.attribute`; ajoutez `msg.value` pour écrire, omettez-le pour lire. Ces champs peuvent aussi être placés sous `msg.matter`.
47
-
48
- Exemples : `{nodeId:"100",endpointId:1,clusterId:6,command:"on",args:{}}` allume ; `{nodeId:"100",endpointId:1,clusterId:47,attribute:"batPercentRemaining"}` lit la batterie. La batterie reste dans l'unité Matter brute par demi-pourcent ; divisez par deux dans un nœud Function.
49
-
50
- ## Comportement
51
-
52
- Le nœud garde un cache local depuis les mises à jour Matter et les écritures KNX, répond aux lectures KNX depuis ce cache et peut émettre/lire les valeurs au démarrage. Il n'écoute que les adresses de groupe configurées, donc le trafic KNX non lié est ignoré.
53
-
54
- Les commandes utilisent une file ordonnée séparée pour chaque appareil appairé. Un appareil hors ligne, en délai dépassé ou supprimé ne peut donc pas retarder les autres appareils Matter qui utilisent la même adresse de groupe KNX. Un nœud qui référence encore un appareil supprimé refuse immédiatement la commande et affiche **Device no longer commissioned** en rouge ; sélectionnez un appareil Matter valide ou supprimez le nœud Controller orphelin.
55
-
56
- Une erreur d'appareil indisponible reste verrouillée : les commandes KNX et flow suivantes sont ignorées et ne peuvent pas remplacer l'état rouge. Le nœud reprend automatiquement dès que cet appareil Matter signale `connected` ; l'ouverture de l'éditeur du nœud libère également le verrou pour permettre un nouvel essai manuel.
57
- </script>
@@ -1,146 +0,0 @@
1
- {
2
- "knxUltimateMatterControllerDevice": {
3
- "title": "Control Matter from KNX",
4
- "node-input-name": "Nom",
5
- "node-input-nameLightSwitch": "Commutateur (bit)",
6
- "node-input-GALightSwitch": "Géorgie",
7
- "node-input-dptLightSwitch": "dpt",
8
- "node-input-nameLightState": "État (bit)",
9
- "node-input-GALightState": "Géorgie",
10
- "node-input-dptLightState": "dpt",
11
- "node-input-hueLight": "Appareil Matter",
12
- "paletteLabel": "Control Matter from KNX",
13
- "no_devices": "Aucun appareil Matter trouvé. Vérifiez le contrôleur Matter et actualisez.",
14
- "input_help_label": "Entrée du flow",
15
- "input_help_pin_hint": "Activez les broches d'entrée/sortie du nœud avant d'envoyer ces messages.",
16
- "input_help_endpoint": "Endpoint sélectionné",
17
- "input_help_endpoint_hint": "Le nœud connaît déjà le Node ID et l'Endpoint ID ; les messages simples n'en ont pas besoin.",
18
- "input_help_simple_title": "Messages simples",
19
- "input_help_simple_hint": "Ces fonctions utilisent des unités lisibles et sont traduites vers le cluster, la commande ou l'attribut Matter de l'endpoint sélectionné.",
20
- "input_help_light_hint": "Les endpoints de type lumière acceptent les propriétés d'état directement dans msg (pas dans msg.payload). Seules les commandes prises en charge par la lumière sélectionnée sont affichées.",
21
- "input_help_advanced_title": "Détails Matter avancés",
22
- "input_help_advanced_hint": "Seuls les attributs et commandes annoncés sont affichés. Les exemples d'écriture utilisent 0 comme valeur provisoire ; les arguments des commandes peuvent devoir être adaptés au type Matter.",
23
- "input_help_operation": "Opération",
24
- "input_help_function": "Fonction",
25
- "input_help_target": "Cible Matter",
26
- "input_help_message": "Message",
27
- "input_help_read": "Lecture",
28
- "input_help_write": "Écriture",
29
- "input_help_command": "Commande",
30
- "input_help_copy": "Copier",
31
- "input_help_copied": "Message copié",
32
- "input_help_no_simple": "Cet endpoint ne possède aucune fonction d'entrée simple connue.",
33
- "input_help_no_structure": "La structure Matter est indisponible. Actualisez la liste des appareils lorsque l'endpoint est en ligne.",
34
- "input_functions": {
35
- "onoff": "Marche / Arrêt", "on": "Allumer", "off": "Éteindre", "level": "Niveau", "brightness": "Luminosité", "color_temperature": "Température de couleur", "xy_color": "Couleur XY", "position": "Position du volet", "tiltposition": "Inclinaison du volet", "open": "Ouvrir", "close": "Fermer", "stop": "Arrêter", "setpoint": "Consigne chauffage", "coolingsetpoint": "Consigne refroidissement", "currenttemp": "Température actuelle", "fanspeed": "Vitesse du ventilateur", "temperature": "Température", "humidity": "Humidité", "illuminance": "Éclairement", "occupancy": "Occupation", "contact": "Contact", "battery": "Batterie", "activepower": "Puissance active", "importedenergy": "Énergie importée", "identify": "Identifier", "lock": "Verrouiller", "unlock": "Déverrouiller"
36
- },
37
- "tabs": {
38
- "switch": "Changer",
39
- "dim": "Faible",
40
- "tunable_white": "White à réglage réglable",
41
- "rgb_hsv": "RVB / HSV",
42
- "effects": "Effets",
43
- "mappings": "Mappages",
44
- "behaviour": "Comportement"
45
- },
46
- "control": "Contrôle",
47
- "status": "Statut",
48
- "door_lock_command": "Verrouiller / déverrouiller",
49
- "door_lock_status": "État de la serrure",
50
- "door_lock_pin": "PIN d'opération à distance",
51
- "door_lock_pin_required": "Cette serrure indique qu'un PIN est requis pour les opérations à distance.",
52
- "door_lock_commands_missing": "Ce point de terminaison n'annonce pas les deux commandes de verrouillage et déverrouillage. Les commandes absentes seront refusées.",
53
- "mapped": {
54
- "onoff_command": "Commande Marche / Arrêt", "onoff_state": "État Marche / Arrêt", "cover_updown": "Volet montée / descente", "cover_stop": "Arrêt volet", "cover_position_command": "Commande position volet", "cover_position_state": "État position volet", "heating_command": "Commande consigne chauffage", "heating_state": "État consigne chauffage", "cooling_command": "Commande consigne refroidissement", "cooling_state": "État consigne refroidissement", "local_temperature": "Température locale", "fan_command": "Commande vitesse ventilateur", "fan_state": "État vitesse ventilateur", "temperature": "Température", "humidity": "Humidité", "illuminance": "Éclairement", "occupancy": "Occupation", "contact": "État booléen / contact", "battery": "Batterie", "active_power": "Puissance active", "imported_energy": "Énergie importée"
55
- },
56
- "night_lighting": "Éclairage nocturne",
57
- "no_night_lighting": "Pas d'éclairage de nuit",
58
- "get_current": "Prendre le courant",
59
- "get_again": "Remonter",
60
- "wait": "Attendez...",
61
- "locate_no_bridge": "Sélectionnez d'abord un contrôleur Matter",
62
- "locate_no_device": "Sélectionnez d'abord un appareil Matter",
63
- "locate_success": "Commande de localisation envoyée",
64
- "locate_started": "Mode de localisation démarré. Appuyez à nouveau pour l'arrêter (arrêt automatique après 10 minutes).",
65
- "locate_stopped": "Mode de localisation arrêté.",
66
- "locate_start_title": "Localiser l'appareil Matter sélectionné",
67
- "locate_stop_title": "Arrêter le mode de localisation",
68
- "locate_error": "Impossible de localiser l'appareil Matter",
69
- "day_night": "Jour / nuit",
70
- "invert_day_night": "Valeur de jour / nuit inversée",
71
- "override_night_mode": "Forcer le mode jour",
72
- "override_no": "Non",
73
- "override_set_day_fast_this": "Passez au mode jour en éteignant rapidement la lumière (cette lumière uniquement)",
74
- "override_set_day_fast_all": "Passer au mode jour en éteignant rapidement la lumière (appliquer sur tous les nœuds lumineux)",
75
- "node_pins": "Broches d'entrée / sortie de nœud",
76
- "node_pins_hide": "Cacher",
77
- "node_pins_show": "Afficher les broches d'entrée / sortie du nœud",
78
- "read_status_startup": "Lire l'état au démarrage",
79
- "opt_no": "Non",
80
- "opt_yes_emit": "Oui, et émettez des télégrammes KNX.",
81
- "knx_brightness_status": "Statut de luminosité de KNX",
82
- "knx_brightness_onhueoff": "Lorsque la lumière Matter est éteinte, envoyer 0 %. Lorsqu'elle est allumée, restaurer la valeur précédente (comportement KNX par défaut)",
83
- "knx_brightness_no": "Laisser tel quel (comportement de teinte par défaut)",
84
- "update_local_state_from_knx_write": "Mettre à jour l'état Matter local en cache à partir des écritures du bus KNX",
85
- "update_local_state_from_knx_write_hint": "Activé : réactions locales plus rapides et réponses immédiates de lecture KNX plus cohérentes. Désactivé : le cache ne suit que les rapports Matter réels.",
86
- "use_min_brightness": "Utilisez une luminosité minimale spécifiée dans la lumière des teintes",
87
- "k_suffix": "K",
88
- "temp_desc_2200": "(Début de la gamme Philips White Ambiance Lights)",
89
- "temp_desc_2700": "(blanc chaud, intime, confortable, personnel, pour les salons)",
90
- "temp_desc_3000": "(blanc doux, chaud, apaisant, pour les salles de bains et les cuisines)",
91
- "temp_desc_3500_day": "(Blanc neutre, équilibré, amical, accueillant, pour les espaces de bureau et le commerce de détail)",
92
- "temp_desc_3500_night": "(Non recommandé pour la nuit - blanc neutre, pour les espaces de bureau et la vente au détail)",
93
- "temp_desc_4100_day": "(blanc frais, précis, propre, concentré, pour les garages et les épiceries)",
94
- "temp_desc_4100_night": "(Non recommandé pour la nuit - blanc frais, précis, propre, concentré, pour les garages et les épiceries)",
95
- "temp_desc_5000_day": "(blanc brillant, vibrant, croustillant, pour les entrepôts, les stades sportifs et les soins de santé)",
96
- "temp_desc_5000_night": "(Non recommandé pour la nuit - blanc brillant, vibrant, croustillant, pour les entrepôts, les stades sportifs et les soins de santé)",
97
- "temp_desc_6500_day": "(lumière du jour, alerte, énergique, pour l'agriculture intérieure)",
98
- "temp_desc_6500_night": "(Non recommandé pour la nuit - lumière du jour, alerte, énergique, pour l'agriculture intérieure)",
99
- "switch_on_behaviour": "Activer le comportement",
100
- "none": "Aucun",
101
- "switch_off": "(Éteindre)",
102
- "select_color": "Sélectionner la couleur",
103
- "select_temperature_brightness": "Sélectionnez la température et la luminosité",
104
- "select_brightness": "Sélectionner la luminosité",
105
- "effect_command": "Commande d'effet",
106
- "effect_status": "État de l'effet",
107
- "effect_mapping": "Mappages",
108
- "effect_autofill": "Remplissez les effets disponibles",
109
- "effect_tip": "Fournir des paires valeur KNX / effet Matter. Lorsque la charge utile KNX entrante correspond à la valeur, l'effet sélectionné est appliqué à la lumière.",
110
- "effect_tip_status": "Si une adresse de groupe d'état est configurée, l'effet de teinte actuel est émis en utilisant la valeur KNX mappée ou le nom d'effet.",
111
- "effect_not_supported": "Cette lumière n'expose pas les effets de la teinte.",
112
- "effect_knx_value_placeholder": "Valeur à correspondre",
113
- "effect_base_label": "Effets de base non-hers",
114
- "effect_native_label": "Effets natifs de la teinte",
115
- "matter_controller": "Contrôleur Matter",
116
- "matter_device": "Appareil Matter",
117
- "device_type": "Type d'appareil",
118
- "matter_section": "Appareil Matter",
119
- "controller_mode": "Mode",
120
- "single_mode": "Appareil unique",
121
- "universal_mode": "Mode universel (tous les appareils Matter)",
122
- "universal_mode_description": "Écoute et contrôle tous les appareils Matter connectés à ce contrôleur. Le mode universel fonctionne sans mappages KNX.",
123
- "universal_service": "Service",
124
- "universal_service_battery_monitor": "Moniteur universel de batteries",
125
- "universal_service_all_events": "Tous les événements Matter",
126
- "universal_battery_threshold": "Seuil de batterie faible",
127
- "universal_low_battery_ga": "GA alarme batterie",
128
- "universal_low_battery_text_ga": "GA nom appareil",
129
- "universal_battery_only_low": "Émettre uniquement les batteries faibles",
130
- "universal_emit_initial": "Émettre l’instantané initial des batteries",
131
- "universal_include_raw": "Inclure l’événement Matter brut",
132
- "universal_mode_status": "Mode Matter universel",
133
- "universal_mode_locate_disabled": "La fonction Localiser n’est pas disponible en mode universel.",
134
- "universal_controller_name": "Contrôleur Matter universel"
135
- },
136
- "common": {
137
- "ga": "Géorgie",
138
- "dpt": "Dpt",
139
- "name": "Nom",
140
- "youtube_sample": "Échantillon YouTube",
141
- "knx_gw": "KNX GW",
142
- "hue_bridge": "Contrôleur Matter",
143
- "philips_hue": "Matter",
144
- "read": "Lire"
145
- }
146
- }
@@ -1,117 +0,0 @@
1
- <script type="text/markdown" data-help-name="knxUltimateSceneController">
2
- ### Mise à jour vers KNX Ultimate 8
3
-
4
- La version 7 affiche un petit bouton **Mettre à jour vers v8** en haut de cet éditeur. Il télécharge une sauvegarde des flux, installe les packages HUE/Matter requis, convertit les nœuds compatibles, effectue un Deploy complet, vérifie les flux enregistrés et installe la version 8. Redémarrez ensuite le service Node-RED comme demandé ; recharger uniquement le navigateur ne suffit pas. Les anciens nœuds KNX AI arrêtent l’opération automatique.
5
-
6
- [Guide complet de mise à jour](https://supergiovane.github.io/node-red-contrib-knx-ultimate/wiki/fr-Upgrade-to-v8)
7
-
8
- <br/>
9
-
10
- **Obsolète :** Ce nœud dédié reste pris en charge dans les flux existants. Pour les nouveaux flux, utilisez **KNX Utility** et sélectionnez la fonction correspondante. L’ancien nœud est masqué dans la palette et porte la mention `(deprecated)` dans le flux. Son éditeur propose un bouton pour convertir tous les anciens utilitaires KNX compatibles dans tous les flux et sous-flux après confirmation. La conversion se déroule localement dans le navigateur, conserve les identifiants, paramètres, connexions et groupes et peut être annulée. La confirmation ferme l’éditeur du nœud actuel et abandonne les modifications non enregistrées. Vérifiez le résultat avant Deploy.
11
-
12
- <p> Le nœud de contrôle de la scène, se comporte exactement comme un périphérique de contrôleur de scène.Il est capable d'économiser et de rappeler une scène. </p>
13
-
14
- # Paramètres de nœud de contrôleur de scène
15
-
16
- |Propriété |Description |
17
- |------------ |------------------------------------------------------------------------------------------------ |
18
- |Passerelle |Gateway KNX sélectionné.|
19
- |Rappel de scène | **DataPoint ** et**Valeur de déclenchement ** .Adresse du groupe pour le rappel de la scène.Exemple 0/0/1.Le contrôleur de scène réagira aux télégrammes provenant de cette adresse de groupe, pour rappeler la scène.Le point de données est le type de point de données (DPT) de l'adresse de groupe _Scène Rappel_.La valeur de déclenchement est la valeur qui doit être reçue, pour déclencher le rappel de la scène.**N'oubliez pas ** : Pour déclencher une scène ou enregistrer une scène via une commande DIM, mettez le rappel de scène ou la scène SAVE**Valeur de déclenchement** , l'objet correct pour l'amorçage ({diminution \ _incr: 1, Données: 5} pour une augmentation DIM, {diminution \ _incr: 0, données: 5} pour la diminution DIM) |
20
- |Scene sauve | **DataPoint ** et**Valeur de déclenchement ** .Adresse du groupe pour enregistrer une scène.Exemple 0/0/2.Le contrôleur de scène réagira aux télégrammes provenant de cette adresse de groupe, en enregistrant toutes les valeurs actuelles de tous les appareils de la scène, qui peuvent être rappelées plus tard.Chaque fois que vous appuyez sur, ou appuyez longtemps sur un vrai bouton-poussoir KNX dans votre bâtiment, le contrôleur de scène lira les valeurs de tous les appareils de la scène et l'enregistrera dans un stockage non volatil.Le point de données est le type de point de données (DPT) de l'adresse de groupe _Scène Save_.La valeur de déclenchement est la valeur qui doit être reçue, pour déclencher l'enregistrement de la scène.**N'oubliez pas ** : Pour déclencher une scène ou enregistrer une scène via une commande DIM, mettez le rappel de scène ou la scène SAVE**Valeur de déclenchement** , l'objet correct pour l'amorçage ({diminution \ _incr: 1, Données: 5} pour une augmentation DIM, {diminution \ _incr: 0, données: 5} pour la diminution DIM) |
21
- |Nom du nœud |Nom du nœud, dans le format "Rappel: nom de l'appareil utilisé pour rappeler la scène / enregistrer: nom de l'appareil pour enregistrer la scène".Mais vous pouvez définir le nom que vous voulez.|
22
- |Sujet |Sujet de Node.|
23
-
24
- Configuration de la scène ##
25
-
26
- Vous devez ajouter des appareils à la scène, comme un appareil KNX de contrôleur de scène réel standard.Il s'agit d'une liste, chaque ligne représente un appareil.
27
-
28
- _ **Le nœud de scène enregistre automatiquement les valeurs mises à jour de tous les actionneurs appartenant à la scène, chaque fois qu'il reçoit une nouvelle valeur du bus.** _
29
-
30
- |Propriété |Description |
31
- |------------- |------------------------------------------------------------------------------------------------ |
32
- |Ajouter le bouton |Ajoutez une ligne à la liste.|
33
- |Champ de la ligne |Le premier champ est l'adresse de groupe, la deuxième est le point de données, le troisième est la valeur par défaut de ce périphérique dans la scène (cela peut être remplacé par la fonction _Scene Save_).Ci-dessous, le nom du périphérique est ci-dessous.( **12s ** ) <br> Pour définir une valeur en minutes, ajoutez**m ** après la valeur numérique, par exemple (**5m ** ) <br> Pour définir une valeur en heures, ajoutez**h ** après la valeur numérique, par exemple (**1h** ) |
34
- |Supprimer le bouton |Supprimer un appareil de la liste.|
35
-
36
- # Sortie du message du nœud de contrôleur de scène
37
-
38
- ```javascript
39
-
40
- msg = {
41
- topic: "Scene Controller" <i>(Contains the node's topic, for example "MyTopic").</i>
42
- recallscene: <i>(<b>true</b> if a scene has been recalled, otherwise <b>false</b>).</i>
43
- savescene: <i>(<b>true</b> if a scene has been saved, otherwise <b>false</b>).</i>
44
- savevalue: <i>(<b>true</b> if a group address value belonging to an actuator in the scene, has been manually saved by a msg input, otherwise <b>false</b>).</i>
45
- disabled: <i>(<b>true</b> if the scene controller has been disabled via input message msg.disabled = true, otherwise <b>false</b>).</i>
46
- }
47
-
48
- ```
49
-
50
- ---
51
-
52
- # Message de flux d'entrée
53
-
54
- Le nœud de contrôleur de scène réagit primoramment aux télégrammes KNX et s'appuie à cela pour rappeler et sauver des scènes.
55
-
56
- Vous pouvez cependant rappeler et enregistrer des scènes en envoyant un MSG au nœud.Le contrôleur de scène peut être désactivé pour inhiber les commandes provenant du bus KNX.
57
-
58
- **Rappelez-vous une scène**
59
-
60
- ```javascript
61
-
62
- // Example of a function that recall the scene
63
- msg.recallscene = true;
64
- return msg;
65
-
66
- ```
67
-
68
- **Enregistrer une scène**
69
-
70
- ```javascript
71
-
72
- // Example of a function that saves the scene
73
- msg.savescene = true;
74
- return msg;
75
-
76
- ```
77
-
78
- **Enregistrer la valeur actuelle d'une adresse de groupe ** _**Le nœud de scène enregistre déjà les valeurs mises à jour de tous les actionneurs appartenant à la scène.** _
79
-
80
- Parfois, il est utile de pouvoir enregistrer la valeur actuelle d'une adresse de groupe différente de celle entrée dans la scène, en tant que valeur réelle de l'actionneur de scène.
81
-
82
- Par exemple, un actionneur d'obturation a généralement une adresse de groupe de commande et un statut.
83
-
84
- Le nœud enregistre la scène en prenant des valeurs d'adresse de groupe de commande, qui peuvent ne pas être alignées sur la valeur de l'état réelle.
85
-
86
- Cependant, vous pouvez contourner cela en mettant manuellement la valeur de l'adresse du groupe de commande, en le tirant de l'adresse du groupe d'état.
87
-
88
- Pensez ceci: si vous avez un actionneur aveugle, ayant une adresse de groupe pour déplacer, une adresse de groupe pour Step, une adresse de groupe pour la hauteur absolue, etc.<br/>
89
-
90
- Avec cette adresse de groupe d'état, vous pouvez mettre à jour les adresses de groupe de commandement des actionneurs aveugles appartenant à la scène.Veuillez consulter l'échantillon dans le wiki.
91
-
92
- ```javascript
93
-
94
- // Example of a function that saves the status of a blind actuator, belongind to the scene.
95
- msg.savevalue = true;
96
- msg.topic = "0/1/1";
97
- msg.payload = 70;
98
- return msg;
99
-
100
- ```
101
-
102
- **Désactiver le contrôleur de scène**
103
-
104
- Vous pouvez désactiver le contrôleur de scène (il désactive la réception de Telegram à partir du bus KNX mais le nœud accepte toujours le msg d'entrée du flux à la place).Il est parfois conseillé de désactiver le rappel et la sauvegarde d'une scène, par exemple, quand c'est la nuit et que vous appelez, à partir d'un bouton de poussée KNX, une "scène télévisée" qui soulève ou abaisse un aveugle, la scène ne sera pas rappelée ou sauvée.Au lieu de cela, vous pouvez activer une autre scène, juste pour la nuit, par exemple pour diminuer une série de lumières.
105
-
106
- ```javascript
107
-
108
- // Example of disabling the scene controller. The commands coming from KNX BUS will be disabled. The node still accept the input msg from the flow instead!
109
- msg.disabled = true; // Otherwise "msg.disabled = false" to re-enable the node.
110
- return msg;
111
-
112
- ```
113
-
114
- ## Voir aussi
115
-
116
- [Exemple de contrôleur de scène](https://supergiovane.github.io/node-red-contrib-knx-ultimate/wiki/Sample-Scene-Node)
117
- </script>
@@ -1,32 +0,0 @@
1
- {
2
- "knxUltimateSceneController": {
3
- "paletteLabel": "Contrôleur de scène KNX (deprecated)",
4
- "title": "Contrôleur de scène",
5
- "properties": {
6
- "node-input-server": "Porte",
7
- "node-input-topic": "Rappel de la scène",
8
- "node-input-dpt": "Point de données",
9
- "node-input-topicTrigger": "Déclenchement",
10
- "node-input-topicSave": "Sage à l'exception",
11
- "node-input-name": "Nom de nœud",
12
- "node-input-outputtopic": "Sujet"
13
- },
14
- "placeholder": {
15
- "leaveempty": "Laisser vide pour utiliser l'adresse du groupe",
16
- "valueexample": "Ex: faux, vrai, sinon toute valeur"
17
- },
18
- "other": {
19
- "sceneConfig": "Configuration des valeurs par défaut de scène",
20
- "add": "Appuyez sur Ajouter, pour ajouter un appareil dans la scène"
21
- },
22
- "advanced": {
23
- "notify-DPT3007": "Vous avez sélectionné un dim relatif. Veuillez __ph_0__ cliquez ici pour afficher cet exemple__ph_1__ et apprenez à gérer une telle charge utile.",
24
- "notify-DPT18001": "Vous avez sélectionné un point de données de scène. Veuillez __ph_0__ cliquez ici pour afficher cet exemple__ph_1__ et apprenez à gérer une telle charge utile.",
25
- "notify-DPT232600": "Vous avez sélectionné un point de données RVB. Veuillez __ph_0__ cliquez ici pour afficher cet exemple__ph_1__ et apprenez à gérer une telle charge utile.",
26
- "notify-DPT251600": "Vous avez sélectionné un point de données RGBW. Veuillez __ph_0__ cliquez ici pour afficher cet exemple__ph_1__ et apprenez à gérer une telle charge utile."
27
- },
28
- "legacy_notice": "Ce nœud est obsolète et reste pris en charge dans les flux existants. Utilisez KNX Utility pour les nouveaux flux. Le bouton ci-dessous convertit tous les anciens utilitaires KNX compatibles dans tous les flux et sous-flux.",
29
- "migration_button": "Convertir tous les anciens nœuds KNX compatibles",
30
- "migration_button_title": "Convertir en KNX Utility toutes les instances des anciens utilitaires KNX compatibles dans tous les flux et sous-flux de l’éditeur"
31
- }
32
- }