node-red-contrib-knx-ultimate 6.2.2 → 6.2.3-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/nodes/knxUltimateAI.js +7 -1
  3. package/nodes/knxUltimateHueAreaMotion.html +15 -4
  4. package/nodes/knxUltimateHueBattery.html +15 -4
  5. package/nodes/knxUltimateHueButton.html +15 -4
  6. package/nodes/knxUltimateHueCameraMotion.html +15 -4
  7. package/nodes/knxUltimateHueContactSensor.html +15 -4
  8. package/nodes/knxUltimateHueController.html +1386 -0
  9. package/nodes/knxUltimateHueController.js +28 -0
  10. package/nodes/knxUltimateHueHumiditySensor.html +15 -4
  11. package/nodes/knxUltimateHueLight.html +15 -4
  12. package/nodes/knxUltimateHueLightSensor.html +15 -4
  13. package/nodes/knxUltimateHueMotion.html +15 -4
  14. package/nodes/knxUltimateHuePlug.html +15 -4
  15. package/nodes/knxUltimateHueScene.html +18 -7
  16. package/nodes/knxUltimateHueTapDial.html +15 -4
  17. package/nodes/knxUltimateHueTemperatureSensor.html +15 -4
  18. package/nodes/knxUltimateHueZigbeeConnectivity.html +15 -4
  19. package/nodes/knxUltimateHuedevice_software_update.html +15 -4
  20. package/nodes/locales/de/knxUltimateHueAreaMotion.html +1 -1
  21. package/nodes/locales/de/knxUltimateHueBattery.html +1 -0
  22. package/nodes/locales/de/knxUltimateHueButton.html +1 -0
  23. package/nodes/locales/de/knxUltimateHueCameraMotion.html +1 -0
  24. package/nodes/locales/de/knxUltimateHueContactSensor.html +1 -0
  25. package/nodes/locales/de/knxUltimateHueController.html +669 -0
  26. package/nodes/locales/de/knxUltimateHueController.json +48 -0
  27. package/nodes/locales/de/knxUltimateHueHumiditySensor.html +1 -0
  28. package/nodes/locales/de/knxUltimateHueLight.html +1 -0
  29. package/nodes/locales/de/knxUltimateHueLightSensor.html +1 -0
  30. package/nodes/locales/de/knxUltimateHueMotion.html +1 -0
  31. package/nodes/locales/de/knxUltimateHuePlug.html +1 -0
  32. package/nodes/locales/de/knxUltimateHueScene.html +1 -0
  33. package/nodes/locales/de/knxUltimateHueTapDial.html +1 -0
  34. package/nodes/locales/de/knxUltimateHueTemperatureSensor.html +1 -0
  35. package/nodes/locales/de/knxUltimateHueZigbeeConnectivity.html +1 -0
  36. package/nodes/locales/de/knxUltimateHuedevice_software_update.html +1 -0
  37. package/nodes/locales/en/knxUltimateHueAreaMotion.html +1 -1
  38. package/nodes/locales/en/knxUltimateHueBattery.html +1 -0
  39. package/nodes/locales/en/knxUltimateHueButton.html +1 -0
  40. package/nodes/locales/en/knxUltimateHueCameraMotion.html +1 -0
  41. package/nodes/locales/en/knxUltimateHueContactSensor.html +1 -0
  42. package/nodes/locales/en/knxUltimateHueController.html +672 -0
  43. package/nodes/locales/en/knxUltimateHueController.json +48 -0
  44. package/nodes/locales/en/knxUltimateHueHumiditySensor.html +1 -0
  45. package/nodes/locales/en/knxUltimateHueLight.html +1 -0
  46. package/nodes/locales/en/knxUltimateHueLightSensor.html +1 -0
  47. package/nodes/locales/en/knxUltimateHueMotion.html +1 -0
  48. package/nodes/locales/en/knxUltimateHuePlug.html +1 -0
  49. package/nodes/locales/en/knxUltimateHueScene.html +1 -0
  50. package/nodes/locales/en/knxUltimateHueTapDial.html +1 -0
  51. package/nodes/locales/en/knxUltimateHueTemperatureSensor.html +1 -0
  52. package/nodes/locales/en/knxUltimateHueZigbeeConnectivity.html +1 -0
  53. package/nodes/locales/en/knxUltimateHuedevice_software_update.html +1 -0
  54. package/nodes/locales/es/knxUltimateHueAreaMotion.html +1 -1
  55. package/nodes/locales/es/knxUltimateHueBattery.html +1 -0
  56. package/nodes/locales/es/knxUltimateHueButton.html +1 -0
  57. package/nodes/locales/es/knxUltimateHueCameraMotion.html +1 -0
  58. package/nodes/locales/es/knxUltimateHueContactSensor.html +1 -0
  59. package/nodes/locales/es/knxUltimateHueController.html +672 -0
  60. package/nodes/locales/es/knxUltimateHueController.json +48 -0
  61. package/nodes/locales/es/knxUltimateHueHumiditySensor.html +1 -0
  62. package/nodes/locales/es/knxUltimateHueLight.html +1 -0
  63. package/nodes/locales/es/knxUltimateHueLightSensor.html +1 -0
  64. package/nodes/locales/es/knxUltimateHueMotion.html +1 -0
  65. package/nodes/locales/es/knxUltimateHuePlug.html +1 -0
  66. package/nodes/locales/es/knxUltimateHueScene.html +1 -0
  67. package/nodes/locales/es/knxUltimateHueTapDial.html +1 -0
  68. package/nodes/locales/es/knxUltimateHueTemperatureSensor.html +1 -0
  69. package/nodes/locales/es/knxUltimateHueZigbeeConnectivity.html +1 -0
  70. package/nodes/locales/es/knxUltimateHuedevice_software_update.html +1 -0
  71. package/nodes/locales/fr/knxUltimateHueAreaMotion.html +1 -1
  72. package/nodes/locales/fr/knxUltimateHueBattery.html +1 -0
  73. package/nodes/locales/fr/knxUltimateHueButton.html +1 -0
  74. package/nodes/locales/fr/knxUltimateHueCameraMotion.html +1 -0
  75. package/nodes/locales/fr/knxUltimateHueContactSensor.html +1 -0
  76. package/nodes/locales/fr/knxUltimateHueController.html +672 -0
  77. package/nodes/locales/fr/knxUltimateHueController.json +48 -0
  78. package/nodes/locales/fr/knxUltimateHueHumiditySensor.html +1 -0
  79. package/nodes/locales/fr/knxUltimateHueLight.html +1 -0
  80. package/nodes/locales/fr/knxUltimateHueLightSensor.html +1 -0
  81. package/nodes/locales/fr/knxUltimateHueMotion.html +1 -0
  82. package/nodes/locales/fr/knxUltimateHuePlug.html +1 -0
  83. package/nodes/locales/fr/knxUltimateHueScene.html +1 -0
  84. package/nodes/locales/fr/knxUltimateHueTapDial.html +1 -0
  85. package/nodes/locales/fr/knxUltimateHueTemperatureSensor.html +1 -0
  86. package/nodes/locales/fr/knxUltimateHueZigbeeConnectivity.html +1 -0
  87. package/nodes/locales/fr/knxUltimateHuedevice_software_update.html +1 -0
  88. package/nodes/locales/it/knxUltimateHueAreaMotion.html +1 -1
  89. package/nodes/locales/it/knxUltimateHueBattery.html +1 -0
  90. package/nodes/locales/it/knxUltimateHueButton.html +1 -0
  91. package/nodes/locales/it/knxUltimateHueCameraMotion.html +1 -0
  92. package/nodes/locales/it/knxUltimateHueContactSensor.html +1 -0
  93. package/nodes/locales/it/knxUltimateHueController.html +672 -0
  94. package/nodes/locales/it/knxUltimateHueController.json +48 -0
  95. package/nodes/locales/it/knxUltimateHueHumiditySensor.html +1 -0
  96. package/nodes/locales/it/knxUltimateHueLight.html +1 -0
  97. package/nodes/locales/it/knxUltimateHueLightSensor.html +1 -0
  98. package/nodes/locales/it/knxUltimateHueMotion.html +1 -0
  99. package/nodes/locales/it/knxUltimateHuePlug.html +1 -0
  100. package/nodes/locales/it/knxUltimateHueScene.html +1 -0
  101. package/nodes/locales/it/knxUltimateHueTapDial.html +1 -0
  102. package/nodes/locales/it/knxUltimateHueTemperatureSensor.html +1 -0
  103. package/nodes/locales/it/knxUltimateHueZigbeeConnectivity.html +1 -0
  104. package/nodes/locales/it/knxUltimateHuedevice_software_update.html +1 -0
  105. package/nodes/locales/zh-CN/knxUltimateHueAreaMotion.html +1 -1
  106. package/nodes/locales/zh-CN/knxUltimateHueBattery.html +1 -0
  107. package/nodes/locales/zh-CN/knxUltimateHueButton.html +1 -0
  108. package/nodes/locales/zh-CN/knxUltimateHueCameraMotion.html +1 -0
  109. package/nodes/locales/zh-CN/knxUltimateHueContactSensor.html +1 -0
  110. package/nodes/locales/zh-CN/knxUltimateHueController.html +674 -0
  111. package/nodes/locales/zh-CN/knxUltimateHueController.json +48 -0
  112. package/nodes/locales/zh-CN/knxUltimateHueHumiditySensor.html +1 -0
  113. package/nodes/locales/zh-CN/knxUltimateHueLight.html +1 -0
  114. package/nodes/locales/zh-CN/knxUltimateHueLightSensor.html +1 -0
  115. package/nodes/locales/zh-CN/knxUltimateHueMotion.html +1 -0
  116. package/nodes/locales/zh-CN/knxUltimateHuePlug.html +1 -0
  117. package/nodes/locales/zh-CN/knxUltimateHueScene.html +1 -0
  118. package/nodes/locales/zh-CN/knxUltimateHueTapDial.html +1 -0
  119. package/nodes/locales/zh-CN/knxUltimateHueTemperatureSensor.html +1 -0
  120. package/nodes/locales/zh-CN/knxUltimateHueZigbeeConnectivity.html +1 -0
  121. package/nodes/locales/zh-CN/knxUltimateHuedevice_software_update.html +1 -0
  122. package/nodes/utils/hueControllerProfileAdapter.js +104 -0
  123. package/nodes/utils/hueControllerProfiles/runtime/area_motion.js +221 -0
  124. package/nodes/utils/hueControllerProfiles/runtime/button.js +295 -0
  125. package/nodes/utils/hueControllerProfiles/runtime/camera_motion.js +221 -0
  126. package/nodes/utils/hueControllerProfiles/runtime/contact.js +191 -0
  127. package/nodes/utils/hueControllerProfiles/runtime/device_power.js +185 -0
  128. package/nodes/utils/hueControllerProfiles/runtime/device_software_update.js +185 -0
  129. package/nodes/utils/hueControllerProfiles/runtime/humidity.js +204 -0
  130. package/nodes/utils/hueControllerProfiles/runtime/light.js +1583 -0
  131. package/nodes/utils/hueControllerProfiles/runtime/light_level.js +180 -0
  132. package/nodes/utils/hueControllerProfiles/runtime/motion.js +185 -0
  133. package/nodes/utils/hueControllerProfiles/runtime/plug.js +344 -0
  134. package/nodes/utils/hueControllerProfiles/runtime/relative_rotary.js +271 -0
  135. package/nodes/utils/hueControllerProfiles/runtime/scene.js +352 -0
  136. package/nodes/utils/hueControllerProfiles/runtime/temperature.js +187 -0
  137. package/nodes/utils/hueControllerProfiles/runtime/zigbee_connectivity.js +185 -0
  138. package/package.json +5 -2
  139. package/resources/hueControllerMigration.js +199 -0
  140. package/resources/hueControllerMigrationDialog.js +189 -0
  141. package/resources/hueControllerProfiles.js +9290 -0
@@ -0,0 +1,28 @@
1
+ 'use strict'
2
+
3
+ const { setupHueControllerRuntime } = require('./utils/hueControllerProfileAdapter')
4
+
5
+ module.exports = function (RED) {
6
+ // Keep the public wrapper intentionally boring. Device-specific behavior lives
7
+ // in the Controller-owned private profiles; this file owns only selection,
8
+ // startup containment and the single public Node-RED registration.
9
+ function knxUltimateHueController (config) {
10
+ try {
11
+ // The selected profile performs RED.nodes.createNode itself. Calling it
12
+ // here as a constructor-on-this preserves its complete, proven lifecycle.
13
+ setupHueControllerRuntime(RED, this, config)
14
+ } catch (error) {
15
+ // If a profile cannot start, still create a valid Node-RED node and surface
16
+ // the operational failure without allowing it to stop the runtime.
17
+ // Avoid a second createNode call when the profile failed after creating it.
18
+ if (!this.id) RED.nodes.createNode(this, config)
19
+ const message = error && error.message ? error.message : String(error)
20
+ RED.log.error(`knxUltimateHueController: ${message}`)
21
+ this.status({ fill: 'red', shape: 'dot', text: message })
22
+ this.error(message)
23
+ }
24
+ }
25
+
26
+ // This is the only registration produced by the Controller architecture.
27
+ RED.nodes.registerType('knxUltimateHueController', knxUltimateHueController)
28
+ }
@@ -352,8 +352,8 @@
352
352
  };
353
353
 
354
354
  RED.nodes.registerType('knxUltimateHueHumiditySensor', {
355
- category: 'KNX Ultimate HUE',
356
- color: '#C0C7E9',
355
+ category: 'deprecated',
356
+ color: '#E7E9F6',
357
357
  defaults: {
358
358
  server: { type: 'knxUltimate-config', required: false },
359
359
  serverHue: { type: 'hue-config', required: true },
@@ -372,9 +372,9 @@
372
372
  outputs: 1,
373
373
  icon: 'node-hue-icon.svg',
374
374
  label() {
375
- return this.name || 'Hue Humidity Sensor';
375
+ return `${this.name || 'Hue Humidity Sensor'} (deprecated)`;
376
376
  },
377
- paletteLabel: 'Hue Humidity Sensor',
377
+ paletteLabel: 'Hue Humidity Sensor (deprecated)',
378
378
  oneditprepare() {
379
379
  try { RED.sidebar.show('help'); } catch (error) { /* empty */ }
380
380
  const node = this;
@@ -499,6 +499,15 @@
499
499
  </script>
500
500
 
501
501
  <script type="text/html" data-template-name="knxUltimateHueHumiditySensor">
502
+ <div class="form-row hue-legacy-controller-notice" role="note" style="box-sizing:border-box; padding:10px 12px; margin-bottom:14px; border-left:4px solid #d79b00; background:#fff8df; color:#4d3a00;">
503
+ <i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#a15c00; margin-right:6px;"></i>
504
+ <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.legacy_node_notice"></span>
505
+ </div>
506
+ <div class="form-row hue-legacy-migration-action" style="margin-top:-6px; margin-bottom:14px;">
507
+ <button type="button" class="red-ui-button hue-legacy-migrate-flow" style="background:#d97706; border-color:#b45309; color:#fff; font-weight:700;" data-i18n="[title]node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button_title">
508
+ <i class="fa fa-exchange"></i> <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button"></span>
509
+ </button>
510
+ </div>
502
511
  <div class="form-row" style="margin-bottom:10px;">
503
512
  <span style="color:#ff0000"><i class="fa fa-youtube"></i></span>&nbsp;<a target="_blank" href="https://www.youtube.com/playlist?list=PL9Yh1bjbLAYrU8PsVhW4xzEug2WtVFv3E"><b>KNX-Ultimate video tutorials (YouTube playlist)</b></a>
504
513
  </div>
@@ -583,6 +592,8 @@
583
592
  </script>
584
593
 
585
594
  <script type="text/markdown" data-help-name="knxUltimateHueHumiditySensor">
595
+ > **Deprecated:** This dedicated HUE node remains available for existing flows. Use **HUE Controller** for new work. The legacy node is marked `(deprecated)` in the palette and on the canvas, uses a lighter color than HUE Controller, and its editor opens with a migration notice.
596
+
586
597
  <p>This node reads relative humidity (%) from a HUE humidity sensor and maps it to KNX.</p>
587
598
 
588
599
  Start typing in the GA field (name or Group Address) to link the KNX GA; devices appear while you type.
@@ -8,8 +8,8 @@
8
8
  (function () {
9
9
 
10
10
  RED.nodes.registerType("knxUltimateHueLight", {
11
- category: "KNX Ultimate HUE",
12
- color: "#C0C7E9",
11
+ category: "deprecated",
12
+ color: "#E7E9F6",
13
13
  defaults: {
14
14
  //buttonState: {value: true},
15
15
  server: { type: "knxUltimate-config", required: false },
@@ -136,9 +136,9 @@
136
136
  outputs: 0,
137
137
  icon: "node-hue-icon.svg",
138
138
  label: function () {
139
- return this.name || "Hue Light/Outlet";
139
+ return `${this.name || "Hue Light/Outlet"} (deprecated)`;
140
140
  },
141
- paletteLabel: "Hue Light/Outlet",
141
+ paletteLabel: "Hue Light/Outlet (deprecated)",
142
142
  oneditprepare: function () {
143
143
  // Go to the help panel
144
144
  try {
@@ -1761,6 +1761,15 @@
1761
1761
 
1762
1762
 
1763
1763
  <script type="text/html" data-template-name="knxUltimateHueLight">
1764
+ <div class="form-row hue-legacy-controller-notice" role="note" style="box-sizing:border-box; padding:10px 12px; margin-bottom:14px; border-left:4px solid #d79b00; background:#fff8df; color:#4d3a00;">
1765
+ <i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#a15c00; margin-right:6px;"></i>
1766
+ <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.legacy_node_notice"></span>
1767
+ </div>
1768
+ <div class="form-row hue-legacy-migration-action" style="margin-top:-6px; margin-bottom:14px;">
1769
+ <button type="button" class="red-ui-button hue-legacy-migrate-flow" style="background:#d97706; border-color:#b45309; color:#fff; font-weight:700;" data-i18n="[title]node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button_title">
1770
+ <i class="fa fa-exchange"></i> <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button"></span>
1771
+ </button>
1772
+ </div>
1764
1773
  <div class="form-row" style="margin-bottom:10px;">
1765
1774
  <span style="color:#ff0000"><i class="fa fa-youtube"></i></span>&nbsp;<a target="_blank" href="https://www.youtube.com/playlist?list=PL9Yh1bjbLAYrU8PsVhW4xzEug2WtVFv3E"><b>KNX-Ultimate video tutorials (YouTube playlist)</b></a>
1766
1775
  </div>
@@ -2370,6 +2379,8 @@
2370
2379
 
2371
2380
 
2372
2381
  <script type="text/markdown" data-help-name="knxUltimateHueLight">
2382
+ > **Deprecated:** This dedicated HUE node remains available for existing flows. Use **HUE Controller** for new work. The legacy node is marked `(deprecated)` in the palette and on the canvas, uses a lighter color than HUE Controller, and its editor opens with a migration notice.
2383
+
2373
2384
  <p>This node controls Philips Hue lights (single or grouped) and maps their commands/states to KNX.</p>
2374
2385
 
2375
2386
  **General**
@@ -347,8 +347,8 @@
347
347
  };
348
348
 
349
349
  RED.nodes.registerType('knxUltimateHueLightSensor', {
350
- category: 'KNX Ultimate HUE',
351
- color: '#C0C7E9',
350
+ category: 'deprecated',
351
+ color: '#E7E9F6',
352
352
  defaults: {
353
353
  server: { type: 'knxUltimate-config', required: false },
354
354
  serverHue: { type: 'hue-config', required: true },
@@ -365,9 +365,9 @@
365
365
  outputs: 1,
366
366
  icon: 'node-hue-icon.svg',
367
367
  label() {
368
- return this.name || 'Hue Light Sensor';
368
+ return `${this.name || 'Hue Light Sensor'} (deprecated)`;
369
369
  },
370
- paletteLabel: 'Hue Light Sensor',
370
+ paletteLabel: 'Hue Light Sensor (deprecated)',
371
371
  oneditprepare() {
372
372
  try { RED.sidebar.show('help'); } catch (error) { /* empty */ }
373
373
  const node = this;
@@ -487,6 +487,15 @@
487
487
  </script>
488
488
 
489
489
  <script type="text/html" data-template-name="knxUltimateHueLightSensor">
490
+ <div class="form-row hue-legacy-controller-notice" role="note" style="box-sizing:border-box; padding:10px 12px; margin-bottom:14px; border-left:4px solid #d79b00; background:#fff8df; color:#4d3a00;">
491
+ <i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#a15c00; margin-right:6px;"></i>
492
+ <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.legacy_node_notice"></span>
493
+ </div>
494
+ <div class="form-row hue-legacy-migration-action" style="margin-top:-6px; margin-bottom:14px;">
495
+ <button type="button" class="red-ui-button hue-legacy-migrate-flow" style="background:#d97706; border-color:#b45309; color:#fff; font-weight:700;" data-i18n="[title]node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button_title">
496
+ <i class="fa fa-exchange"></i> <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button"></span>
497
+ </button>
498
+ </div>
490
499
  <div class="form-row" style="margin-bottom:10px;">
491
500
  <span style="color:#ff0000"><i class="fa fa-youtube"></i></span>&nbsp;<a target="_blank" href="https://www.youtube.com/playlist?list=PL9Yh1bjbLAYrU8PsVhW4xzEug2WtVFv3E"><b>KNX-Ultimate video tutorials (YouTube playlist)</b></a>
492
501
  </div>
@@ -576,6 +585,8 @@
576
585
 
577
586
 
578
587
  <script type="text/markdown" data-help-name="knxUltimateHueLightSensor">
588
+ > **Deprecated:** This dedicated HUE node remains available for existing flows. Use **HUE Controller** for new work. The legacy node is marked `(deprecated)` in the palette and on the canvas, uses a lighter color than HUE Controller, and its editor opens with a migration notice.
589
+
579
590
  <p>This node reads lux events from a Hue Light Sensor and maps them to KNX.</p>
580
591
 
581
592
  It emits the ambient illuminance (lux) each time it changes. Start typing in the GA field (name or Group Address) to link the KNX GA; devices appear while you type.
@@ -358,8 +358,8 @@
358
358
  };
359
359
 
360
360
  RED.nodes.registerType('knxUltimateHueMotion', {
361
- category: 'KNX Ultimate HUE',
362
- color: '#C0C7E9',
361
+ category: 'deprecated',
362
+ color: '#E7E9F6',
363
363
  defaults: {
364
364
  server: { type: 'knxUltimate-config', required: false },
365
365
  serverHue: { type: 'hue-config', required: true },
@@ -375,9 +375,9 @@
375
375
  outputs: 1,
376
376
  icon: 'node-hue-icon.svg',
377
377
  label() {
378
- return this.name || RED._('node-red-contrib-knx-ultimate/knxUltimateHueMotion:knxUltimateHueMotion.paletteLabel');
378
+ return `${this.name || RED._('node-red-contrib-knx-ultimate/knxUltimateHueMotion:knxUltimateHueMotion.paletteLabel')} (deprecated)`;
379
379
  },
380
- paletteLabel: 'Hue Motion',
380
+ paletteLabel: 'Hue Motion (deprecated)',
381
381
  oneditprepare() {
382
382
  try { RED.sidebar.show('help'); } catch (error) { /* empty */ }
383
383
  const node = this;
@@ -491,6 +491,15 @@
491
491
  </script>
492
492
 
493
493
  <script type="text/html" data-template-name="knxUltimateHueMotion">
494
+ <div class="form-row hue-legacy-controller-notice" role="note" style="box-sizing:border-box; padding:10px 12px; margin-bottom:14px; border-left:4px solid #d79b00; background:#fff8df; color:#4d3a00;">
495
+ <i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#a15c00; margin-right:6px;"></i>
496
+ <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.legacy_node_notice"></span>
497
+ </div>
498
+ <div class="form-row hue-legacy-migration-action" style="margin-top:-6px; margin-bottom:14px;">
499
+ <button type="button" class="red-ui-button hue-legacy-migrate-flow" style="background:#d97706; border-color:#b45309; color:#fff; font-weight:700;" data-i18n="[title]node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button_title">
500
+ <i class="fa fa-exchange"></i> <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button"></span>
501
+ </button>
502
+ </div>
494
503
  <div class="form-row" style="margin-bottom:10px;">
495
504
  <span style="color:#ff0000"><i class="fa fa-youtube"></i></span>&nbsp;<a target="_blank" href="https://www.youtube.com/playlist?list=PL9Yh1bjbLAYrU8PsVhW4xzEug2WtVFv3E"><b>KNX-Ultimate video tutorials (YouTube playlist)</b></a>
496
505
  </div>
@@ -571,6 +580,8 @@
571
580
 
572
581
 
573
582
  <script type="text/markdown" data-help-name="knxUltimateHueMotion">
583
+ > **Deprecated:** This dedicated HUE node remains available for existing flows. Use **HUE Controller** for new work. The legacy node is marked `(deprecated)` in the palette and on the canvas, uses a lighter color than HUE Controller, and its editor opens with a migration notice.
584
+
574
585
  <p>This node listens to a Hue motion sensor and mirrors the events to KNX and/or your Node-RED flow.</p>
575
586
 
576
587
  Start typing the KNX device name or Group Address in the GA field; suggestions appear while you type. Hit the refresh button next to "Hue sensor” to reload the device list from the bridge if you add new sensors.
@@ -119,8 +119,8 @@
119
119
  };
120
120
 
121
121
  RED.nodes.registerType('knxUltimateHuePlug', {
122
- category: 'KNX Ultimate HUE',
123
- color: '#C0C7E9',
122
+ category: 'deprecated',
123
+ color: '#E7E9F6',
124
124
  defaults: {
125
125
  server: { type: 'knxUltimate-config', required: false },
126
126
  serverHue: { type: 'hue-config', required: true },
@@ -151,9 +151,9 @@
151
151
  outputs: 0,
152
152
  icon: 'node-hue-icon.svg',
153
153
  label() {
154
- return this.name || 'Hue Plug/Outlet';
154
+ return `${this.name || 'Hue Plug/Outlet'} (deprecated)`;
155
155
  },
156
- paletteLabel: 'Hue Plug/Outlet',
156
+ paletteLabel: 'Hue Plug/Outlet (deprecated)',
157
157
  oneditprepare() {
158
158
  try { RED.sidebar.show('help'); } catch (error) { /* empty */ }
159
159
  const node = this;
@@ -429,6 +429,15 @@
429
429
  </script>
430
430
 
431
431
  <script type="text/html" data-template-name="knxUltimateHuePlug">
432
+ <div class="form-row hue-legacy-controller-notice" role="note" style="box-sizing:border-box; padding:10px 12px; margin-bottom:14px; border-left:4px solid #d79b00; background:#fff8df; color:#4d3a00;">
433
+ <i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#a15c00; margin-right:6px;"></i>
434
+ <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.legacy_node_notice"></span>
435
+ </div>
436
+ <div class="form-row hue-legacy-migration-action" style="margin-top:-6px; margin-bottom:14px;">
437
+ <button type="button" class="red-ui-button hue-legacy-migrate-flow" style="background:#d97706; border-color:#b45309; color:#fff; font-weight:700;" data-i18n="[title]node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button_title">
438
+ <i class="fa fa-exchange"></i> <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button"></span>
439
+ </button>
440
+ </div>
432
441
  <div class="form-row" style="margin-bottom:10px;">
433
442
  <span style="color:#ff0000"><i class="fa fa-youtube"></i></span>&nbsp;<a target="_blank" href="https://www.youtube.com/playlist?list=PL9Yh1bjbLAYrU8PsVhW4xzEug2WtVFv3E"><b>KNX-Ultimate video tutorials (YouTube playlist)</b></a>
434
443
  </div>
@@ -543,4 +552,6 @@
543
552
  </script>
544
553
 
545
554
  <script type="text/markdown" data-help-name="knxUltimateHuePlug">
555
+ > **Deprecated:** This dedicated HUE node remains available for existing flows. Use **HUE Controller** for new work. The legacy node is marked `(deprecated)` in the palette and on the canvas, uses a lighter color than HUE Controller, and its editor opens with a migration notice.
556
+
546
557
  </script>
@@ -512,8 +512,8 @@
512
512
  };
513
513
 
514
514
  RED.nodes.registerType('knxUltimateHueScene', {
515
- category: 'KNX Ultimate HUE',
516
- color: '#C0C7E9',
515
+ category: 'deprecated',
516
+ color: '#E7E9F6',
517
517
  defaults: {
518
518
  server: { type: 'knxUltimate-config', required: false },
519
519
  serverHue: { type: 'hue-config', required: true },
@@ -540,12 +540,12 @@
540
540
  outputs: 0,
541
541
  icon: 'node-hue-icon.svg',
542
542
  label() {
543
- if (this.selectedModeTabNumber === undefined) return this.name;
544
- if (Number(this.selectedModeTabNumber) === 0) return this.name || this.namescene || 'Hue Scene';
545
- if (Number(this.selectedModeTabNumber) === 1) return this.namesceneMulti || this.name || 'Hue Scene';
546
- return this.name || 'Hue Scene';
543
+ let nodeLabel = this.name;
544
+ if (Number(this.selectedModeTabNumber) === 0) nodeLabel = this.name || this.namescene || 'Hue Scene';
545
+ if (Number(this.selectedModeTabNumber) === 1) nodeLabel = this.namesceneMulti || this.name || 'Hue Scene';
546
+ return `${nodeLabel || 'Hue Scene'} (deprecated)`;
547
547
  },
548
- paletteLabel: 'Hue Scene',
548
+ paletteLabel: 'Hue Scene (deprecated)',
549
549
  oneditprepare() {
550
550
  const node = this;
551
551
  try {
@@ -770,6 +770,15 @@
770
770
  </script>
771
771
 
772
772
  <script type="text/html" data-template-name="knxUltimateHueScene">
773
+ <div class="form-row hue-legacy-controller-notice" role="note" style="box-sizing:border-box; padding:10px 12px; margin-bottom:14px; border-left:4px solid #d79b00; background:#fff8df; color:#4d3a00;">
774
+ <i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#a15c00; margin-right:6px;"></i>
775
+ <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.legacy_node_notice"></span>
776
+ </div>
777
+ <div class="form-row hue-legacy-migration-action" style="margin-top:-6px; margin-bottom:14px;">
778
+ <button type="button" class="red-ui-button hue-legacy-migrate-flow" style="background:#d97706; border-color:#b45309; color:#fff; font-weight:700;" data-i18n="[title]node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button_title">
779
+ <i class="fa fa-exchange"></i> <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button"></span>
780
+ </button>
781
+ </div>
773
782
  <div class="form-row" style="margin-bottom:10px;">
774
783
  <span style="color:#ff0000"><i class="fa fa-youtube"></i></span>&nbsp;<a target="_blank" href="https://www.youtube.com/playlist?list=PL9Yh1bjbLAYrU8PsVhW4xzEug2WtVFv3E"><b>KNX-Ultimate video tutorials (YouTube playlist)</b></a>
775
784
  </div>
@@ -900,6 +909,8 @@
900
909
 
901
910
 
902
911
  <script type="text/markdown" data-help-name="knxUltimateHueScene">
912
+ > **Deprecated:** This dedicated HUE node remains available for existing flows. Use **HUE Controller** for new work. The legacy node is marked `(deprecated)` in the palette and on the canvas, uses a lighter color than HUE Controller, and its editor opens with a migration notice.
913
+
903
914
  The **Hue Scene** node exposes Hue scenes to KNX and can forward the raw Hue events to a Node-RED flow. The scene field supports autocomplete; use the refresh icon after adding scenes on the bridge so the list stays up to date.
904
915
 
905
916
  ### Tabs at a glance
@@ -365,8 +365,8 @@
365
365
  };
366
366
 
367
367
  RED.nodes.registerType('knxUltimateHueTapDial', {
368
- category: 'KNX Ultimate HUE',
369
- color: '#C0C7E9',
368
+ category: 'deprecated',
369
+ color: '#E7E9F6',
370
370
  defaults: {
371
371
  server: { type: 'knxUltimate-config', required: false },
372
372
  serverHue: { type: 'hue-config', required: true },
@@ -382,9 +382,9 @@
382
382
  outputs: 1,
383
383
  icon: 'node-hue-icon.svg',
384
384
  label() {
385
- return this.name || RED._('node-red-contrib-knx-ultimate/knxUltimateHueTapDial:knxUltimateHueTapDial.paletteLabel');
385
+ return `${this.name || RED._('node-red-contrib-knx-ultimate/knxUltimateHueTapDial:knxUltimateHueTapDial.paletteLabel')} (deprecated)`;
386
386
  },
387
- paletteLabel: 'Hue Tap Dial',
387
+ paletteLabel: 'Hue Tap Dial (deprecated)',
388
388
  oneditprepare() {
389
389
  try { RED.sidebar.show('help'); } catch (error) { /* empty */ }
390
390
  const node = this;
@@ -498,6 +498,15 @@
498
498
  </script>
499
499
 
500
500
  <script type="text/html" data-template-name="knxUltimateHueTapDial">
501
+ <div class="form-row hue-legacy-controller-notice" role="note" style="box-sizing:border-box; padding:10px 12px; margin-bottom:14px; border-left:4px solid #d79b00; background:#fff8df; color:#4d3a00;">
502
+ <i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#a15c00; margin-right:6px;"></i>
503
+ <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.legacy_node_notice"></span>
504
+ </div>
505
+ <div class="form-row hue-legacy-migration-action" style="margin-top:-6px; margin-bottom:14px;">
506
+ <button type="button" class="red-ui-button hue-legacy-migrate-flow" style="background:#d97706; border-color:#b45309; color:#fff; font-weight:700;" data-i18n="[title]node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button_title">
507
+ <i class="fa fa-exchange"></i> <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button"></span>
508
+ </button>
509
+ </div>
501
510
  <div class="form-row" style="margin-bottom:10px;">
502
511
  <span style="color:#ff0000"><i class="fa fa-youtube"></i></span>&nbsp;<a target="_blank" href="https://www.youtube.com/playlist?list=PL9Yh1bjbLAYrU8PsVhW4xzEug2WtVFv3E"><b>KNX-Ultimate video tutorials (YouTube playlist)</b></a>
503
512
  </div>
@@ -578,6 +587,8 @@
578
587
 
579
588
 
580
589
  <script type="text/markdown" data-help-name="knxUltimateHueTapDial">
590
+ > **Deprecated:** This dedicated HUE node remains available for existing flows. Use **HUE Controller** for new work. The legacy node is marked `(deprecated)` in the palette and on the canvas, uses a lighter color than HUE Controller, and its editor opens with a migration notice.
591
+
581
592
  The **Hue Tap Dial** node maps the rotary service of the Hue Tap Dial to KNX and forwards the raw Hue events to your flow. Use the refresh icon beside the device field after pairing a new dial on the bridge.
582
593
 
583
594
  ### Tabs
@@ -350,8 +350,8 @@
350
350
  };
351
351
 
352
352
  RED.nodes.registerType('knxUltimateHueTemperatureSensor', {
353
- category: 'KNX Ultimate HUE',
354
- color: '#C0C7E9',
353
+ category: 'deprecated',
354
+ color: '#E7E9F6',
355
355
  defaults: {
356
356
  server: { type: 'knxUltimate-config', required: false },
357
357
  serverHue: { type: 'hue-config', required: true },
@@ -368,9 +368,9 @@
368
368
  outputs: 1,
369
369
  icon: 'node-hue-icon.svg',
370
370
  label() {
371
- return this.name || RED._('node-red-contrib-knx-ultimate/knxUltimateHueTemperatureSensor:knxUltimateHueTemperatureSensor.paletteLabel');
371
+ return `${this.name || RED._('node-red-contrib-knx-ultimate/knxUltimateHueTemperatureSensor:knxUltimateHueTemperatureSensor.paletteLabel')} (deprecated)`;
372
372
  },
373
- paletteLabel: 'Hue Temperature Sensor',
373
+ paletteLabel: 'Hue Temperature Sensor (deprecated)',
374
374
  oneditprepare() {
375
375
  try { RED.sidebar.show('help'); } catch (error) { /* empty */ }
376
376
  const node = this;
@@ -490,6 +490,15 @@
490
490
  </script>
491
491
 
492
492
  <script type="text/html" data-template-name="knxUltimateHueTemperatureSensor">
493
+ <div class="form-row hue-legacy-controller-notice" role="note" style="box-sizing:border-box; padding:10px 12px; margin-bottom:14px; border-left:4px solid #d79b00; background:#fff8df; color:#4d3a00;">
494
+ <i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#a15c00; margin-right:6px;"></i>
495
+ <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.legacy_node_notice"></span>
496
+ </div>
497
+ <div class="form-row hue-legacy-migration-action" style="margin-top:-6px; margin-bottom:14px;">
498
+ <button type="button" class="red-ui-button hue-legacy-migrate-flow" style="background:#d97706; border-color:#b45309; color:#fff; font-weight:700;" data-i18n="[title]node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button_title">
499
+ <i class="fa fa-exchange"></i> <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button"></span>
500
+ </button>
501
+ </div>
493
502
  <div class="form-row" style="margin-bottom:10px;">
494
503
  <span style="color:#ff0000"><i class="fa fa-youtube"></i></span>&nbsp;<a target="_blank" href="https://www.youtube.com/playlist?list=PL9Yh1bjbLAYrU8PsVhW4xzEug2WtVFv3E"><b>KNX-Ultimate video tutorials (YouTube playlist)</b></a>
495
504
  </div>
@@ -579,6 +588,8 @@
579
588
 
580
589
 
581
590
  <script type="text/markdown" data-help-name="knxUltimateHueTemperatureSensor">
591
+ > **Deprecated:** This dedicated HUE node remains available for existing flows. Use **HUE Controller** for new work. The legacy node is marked `(deprecated)` in the palette and on the canvas, uses a lighter color than HUE Controller, and its editor opens with a migration notice.
592
+
582
593
  <p>This node reads temperature (°C) from a Hue temperature sensor and maps it to KNX.</p>
583
594
 
584
595
  Start typing in the GA field (name or Group Address) to link the KNX GA; devices appear while you type.
@@ -359,8 +359,8 @@
359
359
  };
360
360
 
361
361
  RED.nodes.registerType('knxUltimateHueZigbeeConnectivity', {
362
- category: 'KNX Ultimate HUE',
363
- color: '#C0C7E9',
362
+ category: 'deprecated',
363
+ color: '#E7E9F6',
364
364
  defaults: {
365
365
  server: { type: 'knxUltimate-config', required: false },
366
366
  serverHue: { type: 'hue-config', required: true },
@@ -377,9 +377,9 @@
377
377
  outputs: 1,
378
378
  icon: 'node-hue-icon.svg',
379
379
  label() {
380
- return this.name || RED._('node-red-contrib-knx-ultimate/knxUltimateHueZigbeeConnectivity:knxUltimateHueZigbeeConnectivity.paletteLabel');
380
+ return `${this.name || RED._('node-red-contrib-knx-ultimate/knxUltimateHueZigbeeConnectivity:knxUltimateHueZigbeeConnectivity.paletteLabel')} (deprecated)`;
381
381
  },
382
- paletteLabel: 'Hue Zigbee Connectivity',
382
+ paletteLabel: 'Hue Zigbee Connectivity (deprecated)',
383
383
  oneditprepare() {
384
384
  try { RED.sidebar.show('help'); } catch (error) { /* empty */ }
385
385
  const node = this;
@@ -498,6 +498,15 @@
498
498
  </script>
499
499
 
500
500
  <script type="text/html" data-template-name="knxUltimateHueZigbeeConnectivity">
501
+ <div class="form-row hue-legacy-controller-notice" role="note" style="box-sizing:border-box; padding:10px 12px; margin-bottom:14px; border-left:4px solid #d79b00; background:#fff8df; color:#4d3a00;">
502
+ <i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#a15c00; margin-right:6px;"></i>
503
+ <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.legacy_node_notice"></span>
504
+ </div>
505
+ <div class="form-row hue-legacy-migration-action" style="margin-top:-6px; margin-bottom:14px;">
506
+ <button type="button" class="red-ui-button hue-legacy-migrate-flow" style="background:#d97706; border-color:#b45309; color:#fff; font-weight:700;" data-i18n="[title]node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button_title">
507
+ <i class="fa fa-exchange"></i> <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button"></span>
508
+ </button>
509
+ </div>
501
510
  <div class="form-row" style="margin-bottom:10px;">
502
511
  <span style="color:#ff0000"><i class="fa fa-youtube"></i></span>&nbsp;<a target="_blank" href="https://www.youtube.com/playlist?list=PL9Yh1bjbLAYrU8PsVhW4xzEug2WtVFv3E"><b>KNX-Ultimate video tutorials (YouTube playlist)</b></a>
503
512
  </div>
@@ -587,6 +596,8 @@
587
596
 
588
597
 
589
598
  <script type="text/markdown" data-help-name="knxUltimateHueZigbeeConnectivity">
599
+ > **Deprecated:** This dedicated HUE node remains available for existing flows. Use **HUE Controller** for new work. The legacy node is marked `(deprecated)` in the palette and on the canvas, uses a lighter color than HUE Controller, and its editor opens with a migration notice.
600
+
590
601
  <p>This node retrieves the Zigbee connectivity status from a Hue device and exposes it to KNX.</p>
591
602
 
592
603
  Start typing the KNX device name or Group Address in the GA field; suggestions appear while you type.
@@ -364,8 +364,8 @@
364
364
  };
365
365
 
366
366
  RED.nodes.registerType('knxUltimateHuedevice_software_update', {
367
- category: 'KNX Ultimate HUE',
368
- color: '#C0C7E9',
367
+ category: 'deprecated',
368
+ color: '#E7E9F6',
369
369
  defaults: {
370
370
  server: { type: 'knxUltimate-config', required: false },
371
371
  serverHue: { type: 'hue-config', required: true },
@@ -382,9 +382,9 @@
382
382
  outputs: 1,
383
383
  icon: 'node-hue-icon.svg',
384
384
  label() {
385
- return this.name || RED._('node-red-contrib-knx-ultimate/knxUltimateHuedevice_software_update:knxUltimateHuedevice_software_update.paletteLabel');
385
+ return `${this.name || RED._('node-red-contrib-knx-ultimate/knxUltimateHuedevice_software_update:knxUltimateHuedevice_software_update.paletteLabel')} (deprecated)`;
386
386
  },
387
- paletteLabel: 'Hue Software Update',
387
+ paletteLabel: 'Hue Software Update (deprecated)',
388
388
  oneditprepare() {
389
389
  try { RED.sidebar.show('help'); } catch (error) { /* empty */ }
390
390
  const node = this;
@@ -503,6 +503,15 @@
503
503
  </script>
504
504
 
505
505
  <script type="text/html" data-template-name="knxUltimateHuedevice_software_update">
506
+ <div class="form-row hue-legacy-controller-notice" role="note" style="box-sizing:border-box; padding:10px 12px; margin-bottom:14px; border-left:4px solid #d79b00; background:#fff8df; color:#4d3a00;">
507
+ <i class="fa fa-exclamation-triangle" aria-hidden="true" style="color:#a15c00; margin-right:6px;"></i>
508
+ <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.legacy_node_notice"></span>
509
+ </div>
510
+ <div class="form-row hue-legacy-migration-action" style="margin-top:-6px; margin-bottom:14px;">
511
+ <button type="button" class="red-ui-button hue-legacy-migrate-flow" style="background:#d97706; border-color:#b45309; color:#fff; font-weight:700;" data-i18n="[title]node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button_title">
512
+ <i class="fa fa-exchange"></i> <span data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_button"></span>
513
+ </button>
514
+ </div>
506
515
  <div class="form-row" style="margin-bottom:10px;">
507
516
  <span style="color:#ff0000"><i class="fa fa-youtube"></i></span>&nbsp;<a target="_blank" href="https://www.youtube.com/playlist?list=PL9Yh1bjbLAYrU8PsVhW4xzEug2WtVFv3E"><b>KNX-Ultimate video tutorials (YouTube playlist)</b></a>
508
517
  </div>
@@ -592,6 +601,8 @@
592
601
 
593
602
 
594
603
  <script type="text/markdown" data-help-name="knxUltimateHuedevice_software_update">
604
+ > **Deprecated:** This dedicated HUE node remains available for existing flows. Use **HUE Controller** for new work. The legacy node is marked `(deprecated)` in the palette and on the canvas, uses a lighter color than HUE Controller, and its editor opens with a migration notice.
605
+
595
606
  <p>This node monitors whether a selected Hue device has a software update available and publishes the status to KNX.</p>
596
607
 
597
608
  Start typing the name or group address of your KNX device in the GA field, the avaiable devices start showing up while
@@ -1,4 +1,5 @@
1
1
  <script type="text/markdown" data-help-name="knxUltimateHueAreaMotion">
2
+ <p><strong>Veraltet:</strong> Dieser dedizierte HUE-Knoten bleibt für bestehende Flows verfügbar. Verwenden Sie <strong>HUE Controller</strong> für neue Projekte. Der Legacy-Knoten ist in der Palette und auf der Arbeitsfläche mit <code>(deprecated)</code> gekennzeichnet, verwendet eine hellere Farbe als HUE Controller und sein Editor zeigt oben einen Migrationshinweis. Der orange Migrationsbutton in diesem Editor öffnet denselben vollständigen Flow-Konverter wie HUE Controller.</p>
2
3
  <p>Der Hue Bewegungsbereich-Node lauscht auf MotionAware-Bereichsereignisse (Hue Bridge Pro) und spiegelt den aggregierten Bewegung / keine-Bewegung-Status nach KNX bzw. in Ihren Node-RED-Flow.</p>
3
4
 
4
5
  Geben Sie im GA-Feld (Name oder Gruppenadresse) die gewünschte KNX-GA ein; passende Einträge werden während der Eingabe vorgeschlagen.
@@ -33,4 +34,3 @@ Geben Sie im GA-Feld (Name oder Gruppenadresse) die gewünschte KNX-GA ein; pass
33
34
 
34
35
  `msg.payload` enthält den von MotionAware gelieferten, aggregierten Bewegungsstatus des ausgewählten Bereichs.
35
36
  </script>
36
-
@@ -1,4 +1,5 @@
1
1
  <script type="text/markdown" data-help-name="knxUltimateHueBattery">
2
+ <p><strong>Veraltet:</strong> Dieser dedizierte HUE-Knoten bleibt für bestehende Flows verfügbar. Verwenden Sie <strong>HUE Controller</strong> für neue Projekte. Der Legacy-Knoten ist in der Palette und auf der Arbeitsfläche mit <code>(deprecated)</code> gekennzeichnet, verwendet eine hellere Farbe als HUE Controller und sein Editor zeigt oben einen Migrationshinweis. Der orange Migrationsbutton in diesem Editor öffnet denselben vollständigen Flow-Konverter wie HUE Controller.</p>
2
3
  <p>Dieser Node spiegelt den Batteriestand eines Hue-Geräts nach KNX und löst Ereignisse aus, sobald sich der Wert ändert.</p>
3
4
 
4
5
  Im GA-Feld den KNX-Gerätenamen oder die Gruppenadresse eingeben; beim Tippen erscheinen Vorschläge. Über das Aktualisieren-Symbol neben "Hue Sensor" lässt sich die Geräteliste der Hue-Bridge neu laden.
@@ -1,4 +1,5 @@
1
1
  <script type="text/markdown" data-help-name="knxUltimateHueButton">
2
+ <p><strong>Veraltet:</strong> Dieser dedizierte HUE-Knoten bleibt für bestehende Flows verfügbar. Verwenden Sie <strong>HUE Controller</strong> für neue Projekte. Der Legacy-Knoten ist in der Palette und auf der Arbeitsfläche mit <code>(deprecated)</code> gekennzeichnet, verwendet eine hellere Farbe als HUE Controller und sein Editor zeigt oben einen Migrationshinweis. Der orange Migrationsbutton in diesem Editor öffnet denselben vollständigen Flow-Konverter wie HUE Controller.</p>
2
3
  <p>Der Hue-Taster-Node spiegelt Hue-Taster-Ereignisse auf KNX und den Flow-Ausgang und nutzt das Attribut <code>button.button_report.event</code>.</p>
3
4
 
4
5
  Tippen Sie im GA-Feld (Name oder Gruppenadresse), um die KNX-GA zu verknüpfen; passende Einträge erscheinen während der Eingabe.
@@ -1,4 +1,5 @@
1
1
  <script type="text/markdown" data-help-name="knxUltimateHueCameraMotion">
2
+ <p><strong>Veraltet:</strong> Dieser dedizierte HUE-Knoten bleibt für bestehende Flows verfügbar. Verwenden Sie <strong>HUE Controller</strong> für neue Projekte. Der Legacy-Knoten ist in der Palette und auf der Arbeitsfläche mit <code>(deprecated)</code> gekennzeichnet, verwendet eine hellere Farbe als HUE Controller und sein Editor zeigt oben einen Migrationshinweis. Der orange Migrationsbutton in diesem Editor öffnet denselben vollständigen Flow-Konverter wie HUE Controller.</p>
2
3
  <p>Der Hue Camera Motion Node lauscht auf Bewegungsereignisse der Philips-Hue-Kameras und spiegelt den erkannt/nicht-erkannt-Status in KNX.</p>
3
4
 
4
5
  Geben Sie im GA-Feld (Name oder Gruppenadresse) den gewünschten Wert ein; passende Geräte werden während der Eingabe vorgeschlagen.
@@ -1,4 +1,5 @@
1
1
  <script type="text/markdown" data-help-name="knxUltimateHueContactSensor">
2
+ <p><strong>Veraltet:</strong> Dieser dedizierte HUE-Knoten bleibt für bestehende Flows verfügbar. Verwenden Sie <strong>HUE Controller</strong> für neue Projekte. Der Legacy-Knoten ist in der Palette und auf der Arbeitsfläche mit <code>(deprecated)</code> gekennzeichnet, verwendet eine hellere Farbe als HUE Controller und sein Editor zeigt oben einen Migrationshinweis. Der orange Migrationsbutton in diesem Editor öffnet denselben vollständigen Flow-Konverter wie HUE Controller.</p>
2
3
  <p>Dieser Node leitet Ereignisse eines HUE-Kontaktsensors weiter und ordnet sie KNX-Gruppenadressen zu.</p>
3
4
 
4
5
  Tippen Sie in das Feld GA, die Name oder die Gruppenadresse Ihres KNX -Geräts, die avabaren Geräte werden beim Eingeben angezeigt.