node-red-contrib-knx-ultimate 6.2.2 → 6.2.3-beta.1
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 +16 -4
- package/nodes/knxUltimateHueBattery.html +16 -4
- package/nodes/knxUltimateHueButton.html +16 -4
- package/nodes/knxUltimateHueCameraMotion.html +16 -4
- package/nodes/knxUltimateHueContactSensor.html +16 -4
- package/nodes/knxUltimateHueController.html +1259 -0
- package/nodes/knxUltimateHueController.js +28 -0
- package/nodes/knxUltimateHueHumiditySensor.html +16 -4
- package/nodes/knxUltimateHueLight.html +16 -4
- package/nodes/knxUltimateHueLightSensor.html +16 -4
- package/nodes/knxUltimateHueMotion.html +16 -4
- package/nodes/knxUltimateHuePlug.html +16 -4
- package/nodes/knxUltimateHueScene.html +19 -7
- package/nodes/knxUltimateHueTapDial.html +16 -4
- package/nodes/knxUltimateHueTemperatureSensor.html +16 -4
- package/nodes/knxUltimateHueZigbeeConnectivity.html +16 -4
- package/nodes/knxUltimateHuedevice_software_update.html +16 -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 +668 -0
- package/nodes/locales/de/knxUltimateHueController.json +47 -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 +671 -0
- package/nodes/locales/en/knxUltimateHueController.json +47 -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 +671 -0
- package/nodes/locales/es/knxUltimateHueController.json +47 -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 +671 -0
- package/nodes/locales/fr/knxUltimateHueController.json +47 -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 +671 -0
- package/nodes/locales/it/knxUltimateHueController.json +47 -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 +673 -0
- package/nodes/locales/zh-CN/knxUltimateHueController.json +47 -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 +338 -0
- package/resources/hueControllerMigrationDialog.js +235 -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,16 @@
|
|
|
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 class="form-tips hue-controller-migration-disclaimer" style="margin-top:8px;" data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_disclaimer"></div>
|
|
511
|
+
</div>
|
|
502
512
|
<div class="form-row" style="margin-bottom:10px;">
|
|
503
513
|
<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
514
|
</div>
|
|
@@ -583,6 +593,8 @@
|
|
|
583
593
|
</script>
|
|
584
594
|
|
|
585
595
|
<script type="text/markdown" data-help-name="knxUltimateHueHumiditySensor">
|
|
596
|
+
> **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.
|
|
597
|
+
|
|
586
598
|
<p>This node reads relative humidity (%) from a HUE humidity sensor and maps it to KNX.</p>
|
|
587
599
|
|
|
588
600
|
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,16 @@
|
|
|
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 class="form-tips hue-controller-migration-disclaimer" style="margin-top:8px;" data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_disclaimer"></div>
|
|
1773
|
+
</div>
|
|
1764
1774
|
<div class="form-row" style="margin-bottom:10px;">
|
|
1765
1775
|
<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
1776
|
</div>
|
|
@@ -2370,6 +2380,8 @@
|
|
|
2370
2380
|
|
|
2371
2381
|
|
|
2372
2382
|
<script type="text/markdown" data-help-name="knxUltimateHueLight">
|
|
2383
|
+
> **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.
|
|
2384
|
+
|
|
2373
2385
|
<p>This node controls Philips Hue lights (single or grouped) and maps their commands/states to KNX.</p>
|
|
2374
2386
|
|
|
2375
2387
|
**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,16 @@
|
|
|
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 class="form-tips hue-controller-migration-disclaimer" style="margin-top:8px;" data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_disclaimer"></div>
|
|
499
|
+
</div>
|
|
490
500
|
<div class="form-row" style="margin-bottom:10px;">
|
|
491
501
|
<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
502
|
</div>
|
|
@@ -576,6 +586,8 @@
|
|
|
576
586
|
|
|
577
587
|
|
|
578
588
|
<script type="text/markdown" data-help-name="knxUltimateHueLightSensor">
|
|
589
|
+
> **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.
|
|
590
|
+
|
|
579
591
|
<p>This node reads lux events from a Hue Light Sensor and maps them to KNX.</p>
|
|
580
592
|
|
|
581
593
|
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,16 @@
|
|
|
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 class="form-tips hue-controller-migration-disclaimer" style="margin-top:8px;" data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_disclaimer"></div>
|
|
503
|
+
</div>
|
|
494
504
|
<div class="form-row" style="margin-bottom:10px;">
|
|
495
505
|
<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
506
|
</div>
|
|
@@ -571,6 +581,8 @@
|
|
|
571
581
|
|
|
572
582
|
|
|
573
583
|
<script type="text/markdown" data-help-name="knxUltimateHueMotion">
|
|
584
|
+
> **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.
|
|
585
|
+
|
|
574
586
|
<p>This node listens to a Hue motion sensor and mirrors the events to KNX and/or your Node-RED flow.</p>
|
|
575
587
|
|
|
576
588
|
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,16 @@
|
|
|
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 class="form-tips hue-controller-migration-disclaimer" style="margin-top:8px;" data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_disclaimer"></div>
|
|
441
|
+
</div>
|
|
432
442
|
<div class="form-row" style="margin-bottom:10px;">
|
|
433
443
|
<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
444
|
</div>
|
|
@@ -543,4 +553,6 @@
|
|
|
543
553
|
</script>
|
|
544
554
|
|
|
545
555
|
<script type="text/markdown" data-help-name="knxUltimateHuePlug">
|
|
556
|
+
> **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.
|
|
557
|
+
|
|
546
558
|
</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,16 @@
|
|
|
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 class="form-tips hue-controller-migration-disclaimer" style="margin-top:8px;" data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_disclaimer"></div>
|
|
782
|
+
</div>
|
|
773
783
|
<div class="form-row" style="margin-bottom:10px;">
|
|
774
784
|
<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
785
|
</div>
|
|
@@ -900,6 +910,8 @@
|
|
|
900
910
|
|
|
901
911
|
|
|
902
912
|
<script type="text/markdown" data-help-name="knxUltimateHueScene">
|
|
913
|
+
> **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.
|
|
914
|
+
|
|
903
915
|
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
916
|
|
|
905
917
|
### 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,16 @@
|
|
|
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 class="form-tips hue-controller-migration-disclaimer" style="margin-top:8px;" data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_disclaimer"></div>
|
|
510
|
+
</div>
|
|
501
511
|
<div class="form-row" style="margin-bottom:10px;">
|
|
502
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>
|
|
503
513
|
</div>
|
|
@@ -578,6 +588,8 @@
|
|
|
578
588
|
|
|
579
589
|
|
|
580
590
|
<script type="text/markdown" data-help-name="knxUltimateHueTapDial">
|
|
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
|
+
|
|
581
593
|
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
594
|
|
|
583
595
|
### 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,16 @@
|
|
|
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 class="form-tips hue-controller-migration-disclaimer" style="margin-top:8px;" data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_disclaimer"></div>
|
|
502
|
+
</div>
|
|
493
503
|
<div class="form-row" style="margin-bottom:10px;">
|
|
494
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>
|
|
495
505
|
</div>
|
|
@@ -579,6 +589,8 @@
|
|
|
579
589
|
|
|
580
590
|
|
|
581
591
|
<script type="text/markdown" data-help-name="knxUltimateHueTemperatureSensor">
|
|
592
|
+
> **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.
|
|
593
|
+
|
|
582
594
|
<p>This node reads temperature (°C) from a Hue temperature sensor and maps it to KNX.</p>
|
|
583
595
|
|
|
584
596
|
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,16 @@
|
|
|
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 class="form-tips hue-controller-migration-disclaimer" style="margin-top:8px;" data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_disclaimer"></div>
|
|
510
|
+
</div>
|
|
501
511
|
<div class="form-row" style="margin-bottom:10px;">
|
|
502
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>
|
|
503
513
|
</div>
|
|
@@ -587,6 +597,8 @@
|
|
|
587
597
|
|
|
588
598
|
|
|
589
599
|
<script type="text/markdown" data-help-name="knxUltimateHueZigbeeConnectivity">
|
|
600
|
+
> **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.
|
|
601
|
+
|
|
590
602
|
<p>This node retrieves the Zigbee connectivity status from a Hue device and exposes it to KNX.</p>
|
|
591
603
|
|
|
592
604
|
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,16 @@
|
|
|
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 class="form-tips hue-controller-migration-disclaimer" style="margin-top:8px;" data-i18n="node-red-contrib-knx-ultimate/knxUltimateHueController:knxUltimateHueController.migration_disclaimer"></div>
|
|
515
|
+
</div>
|
|
506
516
|
<div class="form-row" style="margin-bottom:10px;">
|
|
507
517
|
<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
518
|
</div>
|
|
@@ -592,6 +602,8 @@
|
|
|
592
602
|
|
|
593
603
|
|
|
594
604
|
<script type="text/markdown" data-help-name="knxUltimateHuedevice_software_update">
|
|
605
|
+
> **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.
|
|
606
|
+
|
|
595
607
|
<p>This node monitors whether a selected Hue device has a software update available and publishes the status to KNX.</p>
|
|
596
608
|
|
|
597
609
|
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 konvertiert alle Legacy-HUE-Knoten lokal; anschließend öffnet er einen bearbeitbaren E-Mail-Entwurf und die Spendenseite in einem neuen Browserfenster. Die E-Mail wird niemals automatisch gesendet. Nach Abschluss des Vorgangs bleibt eine feste Node-RED-Meldung sichtbar, bis Sie auf OK klicken.</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 konvertiert alle Legacy-HUE-Knoten lokal; anschließend öffnet er einen bearbeitbaren E-Mail-Entwurf und die Spendenseite in einem neuen Browserfenster. Die E-Mail wird niemals automatisch gesendet. Nach Abschluss des Vorgangs bleibt eine feste Node-RED-Meldung sichtbar, bis Sie auf OK klicken.</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 konvertiert alle Legacy-HUE-Knoten lokal; anschließend öffnet er einen bearbeitbaren E-Mail-Entwurf und die Spendenseite in einem neuen Browserfenster. Die E-Mail wird niemals automatisch gesendet. Nach Abschluss des Vorgangs bleibt eine feste Node-RED-Meldung sichtbar, bis Sie auf OK klicken.</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 konvertiert alle Legacy-HUE-Knoten lokal; anschließend öffnet er einen bearbeitbaren E-Mail-Entwurf und die Spendenseite in einem neuen Browserfenster. Die E-Mail wird niemals automatisch gesendet. Nach Abschluss des Vorgangs bleibt eine feste Node-RED-Meldung sichtbar, bis Sie auf OK klicken.</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 konvertiert alle Legacy-HUE-Knoten lokal; anschließend öffnet er einen bearbeitbaren E-Mail-Entwurf und die Spendenseite in einem neuen Browserfenster. Die E-Mail wird niemals automatisch gesendet. Nach Abschluss des Vorgangs bleibt eine feste Node-RED-Meldung sichtbar, bis Sie auf OK klicken.</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.
|