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.
- package/CHANGELOG.md +14 -0
- package/nodes/knxUltimateAI.js +7 -1
- package/nodes/knxUltimateHueAreaMotion.html +15 -4
- package/nodes/knxUltimateHueBattery.html +15 -4
- package/nodes/knxUltimateHueButton.html +15 -4
- package/nodes/knxUltimateHueCameraMotion.html +15 -4
- package/nodes/knxUltimateHueContactSensor.html +15 -4
- package/nodes/knxUltimateHueController.html +1386 -0
- package/nodes/knxUltimateHueController.js +28 -0
- package/nodes/knxUltimateHueHumiditySensor.html +15 -4
- package/nodes/knxUltimateHueLight.html +15 -4
- package/nodes/knxUltimateHueLightSensor.html +15 -4
- package/nodes/knxUltimateHueMotion.html +15 -4
- package/nodes/knxUltimateHuePlug.html +15 -4
- package/nodes/knxUltimateHueScene.html +18 -7
- package/nodes/knxUltimateHueTapDial.html +15 -4
- package/nodes/knxUltimateHueTemperatureSensor.html +15 -4
- package/nodes/knxUltimateHueZigbeeConnectivity.html +15 -4
- package/nodes/knxUltimateHuedevice_software_update.html +15 -4
- package/nodes/locales/de/knxUltimateHueAreaMotion.html +1 -1
- package/nodes/locales/de/knxUltimateHueBattery.html +1 -0
- package/nodes/locales/de/knxUltimateHueButton.html +1 -0
- package/nodes/locales/de/knxUltimateHueCameraMotion.html +1 -0
- package/nodes/locales/de/knxUltimateHueContactSensor.html +1 -0
- package/nodes/locales/de/knxUltimateHueController.html +669 -0
- package/nodes/locales/de/knxUltimateHueController.json +48 -0
- package/nodes/locales/de/knxUltimateHueHumiditySensor.html +1 -0
- package/nodes/locales/de/knxUltimateHueLight.html +1 -0
- package/nodes/locales/de/knxUltimateHueLightSensor.html +1 -0
- package/nodes/locales/de/knxUltimateHueMotion.html +1 -0
- package/nodes/locales/de/knxUltimateHuePlug.html +1 -0
- package/nodes/locales/de/knxUltimateHueScene.html +1 -0
- package/nodes/locales/de/knxUltimateHueTapDial.html +1 -0
- package/nodes/locales/de/knxUltimateHueTemperatureSensor.html +1 -0
- package/nodes/locales/de/knxUltimateHueZigbeeConnectivity.html +1 -0
- package/nodes/locales/de/knxUltimateHuedevice_software_update.html +1 -0
- package/nodes/locales/en/knxUltimateHueAreaMotion.html +1 -1
- package/nodes/locales/en/knxUltimateHueBattery.html +1 -0
- package/nodes/locales/en/knxUltimateHueButton.html +1 -0
- package/nodes/locales/en/knxUltimateHueCameraMotion.html +1 -0
- package/nodes/locales/en/knxUltimateHueContactSensor.html +1 -0
- package/nodes/locales/en/knxUltimateHueController.html +672 -0
- package/nodes/locales/en/knxUltimateHueController.json +48 -0
- package/nodes/locales/en/knxUltimateHueHumiditySensor.html +1 -0
- package/nodes/locales/en/knxUltimateHueLight.html +1 -0
- package/nodes/locales/en/knxUltimateHueLightSensor.html +1 -0
- package/nodes/locales/en/knxUltimateHueMotion.html +1 -0
- package/nodes/locales/en/knxUltimateHuePlug.html +1 -0
- package/nodes/locales/en/knxUltimateHueScene.html +1 -0
- package/nodes/locales/en/knxUltimateHueTapDial.html +1 -0
- package/nodes/locales/en/knxUltimateHueTemperatureSensor.html +1 -0
- package/nodes/locales/en/knxUltimateHueZigbeeConnectivity.html +1 -0
- package/nodes/locales/en/knxUltimateHuedevice_software_update.html +1 -0
- package/nodes/locales/es/knxUltimateHueAreaMotion.html +1 -1
- package/nodes/locales/es/knxUltimateHueBattery.html +1 -0
- package/nodes/locales/es/knxUltimateHueButton.html +1 -0
- package/nodes/locales/es/knxUltimateHueCameraMotion.html +1 -0
- package/nodes/locales/es/knxUltimateHueContactSensor.html +1 -0
- package/nodes/locales/es/knxUltimateHueController.html +672 -0
- package/nodes/locales/es/knxUltimateHueController.json +48 -0
- package/nodes/locales/es/knxUltimateHueHumiditySensor.html +1 -0
- package/nodes/locales/es/knxUltimateHueLight.html +1 -0
- package/nodes/locales/es/knxUltimateHueLightSensor.html +1 -0
- package/nodes/locales/es/knxUltimateHueMotion.html +1 -0
- package/nodes/locales/es/knxUltimateHuePlug.html +1 -0
- package/nodes/locales/es/knxUltimateHueScene.html +1 -0
- package/nodes/locales/es/knxUltimateHueTapDial.html +1 -0
- package/nodes/locales/es/knxUltimateHueTemperatureSensor.html +1 -0
- package/nodes/locales/es/knxUltimateHueZigbeeConnectivity.html +1 -0
- package/nodes/locales/es/knxUltimateHuedevice_software_update.html +1 -0
- package/nodes/locales/fr/knxUltimateHueAreaMotion.html +1 -1
- package/nodes/locales/fr/knxUltimateHueBattery.html +1 -0
- package/nodes/locales/fr/knxUltimateHueButton.html +1 -0
- package/nodes/locales/fr/knxUltimateHueCameraMotion.html +1 -0
- package/nodes/locales/fr/knxUltimateHueContactSensor.html +1 -0
- package/nodes/locales/fr/knxUltimateHueController.html +672 -0
- package/nodes/locales/fr/knxUltimateHueController.json +48 -0
- package/nodes/locales/fr/knxUltimateHueHumiditySensor.html +1 -0
- package/nodes/locales/fr/knxUltimateHueLight.html +1 -0
- package/nodes/locales/fr/knxUltimateHueLightSensor.html +1 -0
- package/nodes/locales/fr/knxUltimateHueMotion.html +1 -0
- package/nodes/locales/fr/knxUltimateHuePlug.html +1 -0
- package/nodes/locales/fr/knxUltimateHueScene.html +1 -0
- package/nodes/locales/fr/knxUltimateHueTapDial.html +1 -0
- package/nodes/locales/fr/knxUltimateHueTemperatureSensor.html +1 -0
- package/nodes/locales/fr/knxUltimateHueZigbeeConnectivity.html +1 -0
- package/nodes/locales/fr/knxUltimateHuedevice_software_update.html +1 -0
- package/nodes/locales/it/knxUltimateHueAreaMotion.html +1 -1
- package/nodes/locales/it/knxUltimateHueBattery.html +1 -0
- package/nodes/locales/it/knxUltimateHueButton.html +1 -0
- package/nodes/locales/it/knxUltimateHueCameraMotion.html +1 -0
- package/nodes/locales/it/knxUltimateHueContactSensor.html +1 -0
- package/nodes/locales/it/knxUltimateHueController.html +672 -0
- package/nodes/locales/it/knxUltimateHueController.json +48 -0
- package/nodes/locales/it/knxUltimateHueHumiditySensor.html +1 -0
- package/nodes/locales/it/knxUltimateHueLight.html +1 -0
- package/nodes/locales/it/knxUltimateHueLightSensor.html +1 -0
- package/nodes/locales/it/knxUltimateHueMotion.html +1 -0
- package/nodes/locales/it/knxUltimateHuePlug.html +1 -0
- package/nodes/locales/it/knxUltimateHueScene.html +1 -0
- package/nodes/locales/it/knxUltimateHueTapDial.html +1 -0
- package/nodes/locales/it/knxUltimateHueTemperatureSensor.html +1 -0
- package/nodes/locales/it/knxUltimateHueZigbeeConnectivity.html +1 -0
- package/nodes/locales/it/knxUltimateHuedevice_software_update.html +1 -0
- package/nodes/locales/zh-CN/knxUltimateHueAreaMotion.html +1 -1
- package/nodes/locales/zh-CN/knxUltimateHueBattery.html +1 -0
- package/nodes/locales/zh-CN/knxUltimateHueButton.html +1 -0
- package/nodes/locales/zh-CN/knxUltimateHueCameraMotion.html +1 -0
- package/nodes/locales/zh-CN/knxUltimateHueContactSensor.html +1 -0
- package/nodes/locales/zh-CN/knxUltimateHueController.html +674 -0
- package/nodes/locales/zh-CN/knxUltimateHueController.json +48 -0
- package/nodes/locales/zh-CN/knxUltimateHueHumiditySensor.html +1 -0
- package/nodes/locales/zh-CN/knxUltimateHueLight.html +1 -0
- package/nodes/locales/zh-CN/knxUltimateHueLightSensor.html +1 -0
- package/nodes/locales/zh-CN/knxUltimateHueMotion.html +1 -0
- package/nodes/locales/zh-CN/knxUltimateHuePlug.html +1 -0
- package/nodes/locales/zh-CN/knxUltimateHueScene.html +1 -0
- package/nodes/locales/zh-CN/knxUltimateHueTapDial.html +1 -0
- package/nodes/locales/zh-CN/knxUltimateHueTemperatureSensor.html +1 -0
- package/nodes/locales/zh-CN/knxUltimateHueZigbeeConnectivity.html +1 -0
- package/nodes/locales/zh-CN/knxUltimateHuedevice_software_update.html +1 -0
- package/nodes/utils/hueControllerProfileAdapter.js +104 -0
- package/nodes/utils/hueControllerProfiles/runtime/area_motion.js +221 -0
- package/nodes/utils/hueControllerProfiles/runtime/button.js +295 -0
- package/nodes/utils/hueControllerProfiles/runtime/camera_motion.js +221 -0
- package/nodes/utils/hueControllerProfiles/runtime/contact.js +191 -0
- package/nodes/utils/hueControllerProfiles/runtime/device_power.js +185 -0
- package/nodes/utils/hueControllerProfiles/runtime/device_software_update.js +185 -0
- package/nodes/utils/hueControllerProfiles/runtime/humidity.js +204 -0
- package/nodes/utils/hueControllerProfiles/runtime/light.js +1583 -0
- package/nodes/utils/hueControllerProfiles/runtime/light_level.js +180 -0
- package/nodes/utils/hueControllerProfiles/runtime/motion.js +185 -0
- package/nodes/utils/hueControllerProfiles/runtime/plug.js +344 -0
- package/nodes/utils/hueControllerProfiles/runtime/relative_rotary.js +271 -0
- package/nodes/utils/hueControllerProfiles/runtime/scene.js +352 -0
- package/nodes/utils/hueControllerProfiles/runtime/temperature.js +187 -0
- package/nodes/utils/hueControllerProfiles/runtime/zigbee_connectivity.js +185 -0
- package/package.json +5 -2
- package/resources/hueControllerMigration.js +199 -0
- package/resources/hueControllerMigrationDialog.js +189 -0
- 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: '
|
|
356
|
-
color: '#
|
|
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> <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: "
|
|
12
|
-
color: "#
|
|
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> <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: '
|
|
351
|
-
color: '#
|
|
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> <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: '
|
|
362
|
-
color: '#
|
|
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> <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: '
|
|
123
|
-
color: '#
|
|
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> <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: '
|
|
516
|
-
color: '#
|
|
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
|
-
|
|
544
|
-
if (Number(this.selectedModeTabNumber) === 0)
|
|
545
|
-
if (Number(this.selectedModeTabNumber) === 1)
|
|
546
|
-
return
|
|
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> <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: '
|
|
369
|
-
color: '#
|
|
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> <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: '
|
|
354
|
-
color: '#
|
|
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> <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: '
|
|
363
|
-
color: '#
|
|
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> <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: '
|
|
368
|
-
color: '#
|
|
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> <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.
|