node-red-contrib-knx-ultimate 6.3.5 → 6.3.6
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 +4 -0
- package/nodes/locales/de/knxUltimateHueController.html +2 -0
- package/nodes/locales/en/knxUltimateHueController.html +2 -0
- package/nodes/locales/es/knxUltimateHueController.html +2 -0
- package/nodes/locales/fr/knxUltimateHueController.html +2 -0
- package/nodes/locales/it/knxUltimateHueController.html +2 -0
- package/nodes/locales/zh-CN/knxUltimateHueController.html +2 -0
- package/package.json +1 -1
- package/resources/hueControllerProfiles.js +30 -22
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
# CHANGELOG
|
|
8
8
|
|
|
9
|
+
**Version 6.3.6** - August 2026<br/>
|
|
10
|
+
|
|
11
|
+
- **HUE Controller**: grouped lights now always show the complete Light mapping editor when KNX is configured, without checking child-light capabilities.<br/>
|
|
12
|
+
|
|
9
13
|
**Version 6.3.5** - August 2026<br/>
|
|
10
14
|
|
|
11
15
|
- **HUE Controller**: fixed Light mapping tabs being blocked by the Hue resource-readiness check and false-success Locate requests. Editor and Locate failures now show a red Node-RED message.<br/>
|
|
@@ -42,6 +42,8 @@
|
|
|
42
42
|
|
|
43
43
|
<p>Dieser Node steuert HUE-Leuchten (einzeln oder gruppiert) und ordnet Befehle/Zustände KNX-Gruppenadressen zu.</p>
|
|
44
44
|
|
|
45
|
+
<p><strong>Leuchtengruppen:</strong> wenn ein KNX-Gateway konfiguriert ist, zeigt die Auswahl eines <code>grouped_light</code> immer die vollständigen Zuordnungen für Schalten, Dimmen, Tunable White, RGB/HSV, Effekte und Verhalten. Der Editor schränkt diese Felder nicht anhand der aktuell enthaltenen Leuchten ein.</p>
|
|
46
|
+
|
|
45
47
|
**Allgemein**
|
|
46
48
|
|
|
47
49
|
| Eigenschaft | Beschreibung |
|
|
@@ -42,6 +42,8 @@
|
|
|
42
42
|
|
|
43
43
|
<p>This node controls Philips Hue lights (single or grouped) and maps their commands/states to KNX.</p>
|
|
44
44
|
|
|
45
|
+
<p><strong>Grouped lights:</strong> when a KNX gateway is configured, selecting a <code>grouped_light</code> always displays the complete Switch, Dim, Tunable White, RGB/HSV, Effects and Behaviour mappings. The editor does not restrict these fields according to the group's current child lights.</p>
|
|
46
|
+
|
|
45
47
|
**General**
|
|
46
48
|
|
|
47
49
|
|Property|Description|
|
|
@@ -42,6 +42,8 @@
|
|
|
42
42
|
|
|
43
43
|
<p> Este nodo controla las luces de Hue Philips (single o agrupada) y mapea sus comandos/estados a KNX. </p>
|
|
44
44
|
|
|
45
|
+
<p><strong>Grupos de luces:</strong> cuando hay una pasarela KNX configurada, al seleccionar un <code>grouped_light</code> siempre se muestran todas las asignaciones de Interruptor, Regulación, Blanco ajustable, RGB/HSV, Efectos y Comportamiento. El editor no limita estos campos según las luces incluidas actualmente en el grupo.</p>
|
|
46
|
+
|
|
45
47
|
**General**
|
|
46
48
|
|
|
47
49
|
| Propiedad | Descripción |
|
|
@@ -42,6 +42,8 @@
|
|
|
42
42
|
|
|
43
43
|
<p> Ce nœud contrôle les lumières de Hue Philips (simple ou groupées) et mappe leurs commandes / états à KNX. </p>
|
|
44
44
|
|
|
45
|
+
<p><strong>Groupes de lampes :</strong> lorsqu'une passerelle KNX est configurée, la sélection d'un <code>grouped_light</code> affiche toujours toutes les associations Interrupteur, Variation, Blanc réglable, RGB/HSV, Effets et Comportement. L'éditeur ne limite pas ces champs selon les lampes actuellement présentes dans le groupe.</p>
|
|
46
|
+
|
|
45
47
|
**Général**
|
|
46
48
|
|
|
47
49
|
| Propriété | Description |
|
|
@@ -42,6 +42,8 @@
|
|
|
42
42
|
|
|
43
43
|
<p>Questo nodo controlla le luci HUE (singole o raggruppate) e mappa comandi/stati su KNX.</p>
|
|
44
44
|
|
|
45
|
+
<p><strong>Gruppi di luci:</strong> quando è configurato un gateway KNX, selezionando un <code>grouped_light</code> vengono sempre mostrate tutte le mappature Switch, Dim, Tunable White, RGB/HSV, Effetti e Comportamento. L'editor non limita questi campi in base alle luci attualmente incluse nel gruppo.</p>
|
|
46
|
+
|
|
45
47
|
**Generale**
|
|
46
48
|
|
|
47
49
|
| Proprietà | Descrizione |
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"engines": {
|
|
4
4
|
"node": ">=20.18.1"
|
|
5
5
|
},
|
|
6
|
-
"version": "6.3.
|
|
6
|
+
"version": "6.3.6",
|
|
7
7
|
"description": "KNX Ultimate is the most advanced KNX integration for Node-RED, providing secure KNX/IP communication, routing, ETS project import, Philips Hue, Matter Controller and Matter Bridge (control matter device via KNX and expose KNX GA via Matter), MQTT, diagnostics with AI, virtual devices, and powerful automation nodes. Build professional, reliable, and scalable smart home and building automation projects with minimal effort.",
|
|
8
8
|
"files": [
|
|
9
9
|
"nodes/",
|
|
@@ -1238,14 +1238,7 @@
|
|
|
1238
1238
|
$hueDeviceInput.val(initialHueDeviceRaw);
|
|
1239
1239
|
updateTabsVisibility();
|
|
1240
1240
|
if (getJsonPromise !== undefined) getJsonPromise.abort();
|
|
1241
|
-
|
|
1242
|
-
// while it bootstraps this mature editor. Reading the select here
|
|
1243
|
-
// would therefore query an inexistent bridge and return `{}` even
|
|
1244
|
-
// though the selected light has dimming, colour or tunable-white
|
|
1245
|
-
// capabilities. Resolve the real persisted config-node ID through
|
|
1246
|
-
// the same helper used by resource discovery and Locate instead.
|
|
1247
|
-
const capabilityServerId = resolveHueServerValue({ allowStored: true });
|
|
1248
|
-
const capabilityResourceId = initialHueDeviceRaw.split("#")[0];
|
|
1241
|
+
const selectedHueResourceType = String(initialHueDeviceRaw.split("#")[1] || '').trim().toLowerCase();
|
|
1249
1242
|
const applyHueCapabilities = (data) => {
|
|
1250
1243
|
let oLight = data || {};
|
|
1251
1244
|
const effects = (oLight && oLight.effects && Array.isArray(oLight.effects.status_values))
|
|
@@ -1380,20 +1373,35 @@
|
|
|
1380
1373
|
$("#node-input-specifySwitchOnBrightness").val(node.specifySwitchOnBrightness).trigger('change');
|
|
1381
1374
|
$("#node-input-enableDayNightLighting").val(node.enableDayNightLighting).trigger('change');
|
|
1382
1375
|
};
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1376
|
+
if (selectedHueResourceType === "grouped_light") {
|
|
1377
|
+
// A Hue group represents an aggregate control surface. Its
|
|
1378
|
+
// editor must remain complete and deterministic regardless of
|
|
1379
|
+
// the capabilities exposed by its current child lights.
|
|
1380
|
+
applyHueCapabilities({ type: "grouped_light" });
|
|
1381
|
+
} else {
|
|
1382
|
+
// HUE Controller temporarily selects Node-RED's `_ADD_` sentinel
|
|
1383
|
+
// while it bootstraps this mature editor. Reading the select here
|
|
1384
|
+
// would therefore query an inexistent bridge and return `{}` even
|
|
1385
|
+
// though the selected light has dimming, colour or tunable-white
|
|
1386
|
+
// capabilities. Resolve the real persisted config-node ID through
|
|
1387
|
+
// the same helper used by resource discovery and Locate instead.
|
|
1388
|
+
const capabilityServerId = resolveHueServerValue({ allowStored: true });
|
|
1389
|
+
const capabilityResourceId = initialHueDeviceRaw.split("#")[0];
|
|
1390
|
+
getJsonPromise = $.getJSON(`knxUltimateGetLightObject?id=${encodeURIComponent(capabilityResourceId)}&serverId=${encodeURIComponent(capabilityServerId)}&_=${Date.now()}`, (data) => {
|
|
1391
|
+
try {
|
|
1392
|
+
applyHueCapabilities(data);
|
|
1393
|
+
} catch (error) {
|
|
1394
|
+
notifyEditorError(error, 'capabilities');
|
|
1395
|
+
}
|
|
1396
|
+
}).fail((xhr, textStatus, errorThrown) => {
|
|
1397
|
+
if (textStatus === 'abort') return;
|
|
1398
|
+
const detail = xhr && xhr.responseJSON && xhr.responseJSON.error
|
|
1399
|
+
? xhr.responseJSON.error
|
|
1400
|
+
: (errorThrown || textStatus || 'Unable to load Hue capabilities');
|
|
1401
|
+
notifyEditorError(new Error(detail), 'capabilities request');
|
|
1402
|
+
});
|
|
1403
|
+
setTimeout(function () { if (getJsonPromise !== undefined) getJsonPromise.abort(); }, 10000);
|
|
1404
|
+
}
|
|
1397
1405
|
}
|
|
1398
1406
|
// Show/Hide the div of the color at swich on
|
|
1399
1407
|
if (node.specifySwitchOnBrightness === "yes") {
|