node-red-contrib-knx-ultimate 6.0.3 → 6.0.4
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/knxUltimateMatterBridge.html +96 -82
- package/nodes/locales/de/knxUltimateMatterBridge.json +7 -3
- package/nodes/locales/en/knxUltimateMatterBridge.json +7 -3
- package/nodes/locales/es/knxUltimateMatterBridge.json +7 -3
- package/nodes/locales/fr/knxUltimateMatterBridge.json +7 -3
- package/nodes/locales/it/knxUltimateMatterBridge.json +7 -3
- package/nodes/locales/zh-CN/knxUltimateMatterBridge.json +7 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
# CHANGELOG
|
|
8
8
|
|
|
9
|
+
**Version 6.0.4** - July 2026<br/>
|
|
10
|
+
|
|
11
|
+
- **Expose KNX to Matter (BETA) — clearer editor layout**: reorganized the device editor into dedicated **KNX mappings** and **Advanced options** tabs, following the established KNXUltimate node UI. Type-specific compatibility settings are easier to find, and checkbox labels now include icons with the checkbox positioned after the text. All saved fields and runtime behavior remain unchanged.<br/>
|
|
12
|
+
|
|
9
13
|
**Version 6.0.3** - July 2026<br/>
|
|
10
14
|
|
|
11
15
|
- **Expose KNX to Matter (BETA) — Alexa cover percentage workaround**: covers/shutters can optionally be exposed to Matter controllers as dimmable lights when Alexa does not send percentage commands to a native Window Covering endpoint. Brightness represents openness (`100%` open, `0%` closed), while On/Off opens or closes the cover. Commands and status remain mapped through the existing KNX cover position GA/DPT, including position inversion and loop-protected KNX-to-Matter feedback. The standard Matter Window Covering endpoint remains the default.<br/>
|
|
@@ -105,6 +105,9 @@
|
|
|
105
105
|
try { RED.sidebar.show('help'); } catch (error) { /* empty */ }
|
|
106
106
|
const node = this;
|
|
107
107
|
|
|
108
|
+
// Use the same jQuery UI tab structure as the main KNXUltimate node.
|
|
109
|
+
$('#mb-tabs').tabs();
|
|
110
|
+
|
|
108
111
|
// Resolves the KNX gateway at query time: the selected one, or - as a
|
|
109
112
|
// fallback - the first knxUltimate-config available, so the GA list works
|
|
110
113
|
// even before the user picks the gateway on this device node.
|
|
@@ -143,7 +146,7 @@
|
|
|
143
146
|
// on one or more rows (same pattern used across the rest of the KNX-Ultimate nodes).
|
|
144
147
|
const $fields = $('#mb-ga-fields').css({ display: 'flex', flexWrap: 'wrap', alignItems: 'flex-end', gap: '10px' });
|
|
145
148
|
const $invertRow = $('#mb-invert-row');
|
|
146
|
-
const $advancedRows = $('#mb-
|
|
149
|
+
const $advancedRows = $('#mb-compatibility-options');
|
|
147
150
|
const $dimmerAdvancedRows = $('.mb-dimmer-advanced-row');
|
|
148
151
|
const $coverAdvancedRows = $('.mb-cover-advanced-row');
|
|
149
152
|
const gaInputs = {};
|
|
@@ -311,90 +314,101 @@
|
|
|
311
314
|
<select id="node-input-deviceType" style="width:260px;"></select>
|
|
312
315
|
</div>
|
|
313
316
|
|
|
314
|
-
<div
|
|
315
|
-
<
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
<div class="form-row mb-dimmer-advanced-row" style="display:none; margin-top:8px;">
|
|
336
|
-
<label for="node-input-turnOnBehavior" style="width:260px;">
|
|
337
|
-
<i class="fa fa-lightbulb-o"></i> <span data-i18n="knxUltimateMatterBridge.advanced.turn_on_behavior"></span>
|
|
338
|
-
</label>
|
|
339
|
-
<select id="node-input-turnOnBehavior" style="width:280px;">
|
|
340
|
-
<option value="ignoreLevelAfterOn" data-i18n="knxUltimateMatterBridge.advanced.turn_on_ignore_level"></option>
|
|
341
|
-
<option value="forwardAll" data-i18n="knxUltimateMatterBridge.advanced.turn_on_forward_all"></option>
|
|
342
|
-
</select>
|
|
343
|
-
</div>
|
|
344
|
-
|
|
345
|
-
<div class="form-row mb-dimmer-advanced-row" style="display:none;">
|
|
346
|
-
<label for="node-input-ignoreLevelAfterOnMs" style="width:260px;">
|
|
347
|
-
<i class="fa fa-clock-o"></i> <span data-i18n="knxUltimateMatterBridge.advanced.ignore_level_ms"></span>
|
|
348
|
-
</label>
|
|
349
|
-
<input type="number" id="node-input-ignoreLevelAfterOnMs" min="0" step="100" style="width:120px;">
|
|
350
|
-
</div>
|
|
351
|
-
|
|
352
|
-
<div class="form-row mb-cover-advanced-row" style="display:none; margin-top:8px;">
|
|
353
|
-
<label for="node-input-coverExposeAsDimmableLight" style="width:auto;">
|
|
354
|
-
<input type="checkbox" id="node-input-coverExposeAsDimmableLight" style="width:auto; display:inline-block; vertical-align:middle;">
|
|
355
|
-
<span data-i18n="knxUltimateMatterBridge.advanced.cover_expose_as_light"></span>
|
|
356
|
-
</label>
|
|
357
|
-
<div class="form-tips" style="margin-top:5px;" data-i18n="knxUltimateMatterBridge.advanced.cover_expose_as_light_help"></div>
|
|
317
|
+
<div id="mb-tabs" style="margin-top:12px;">
|
|
318
|
+
<ul>
|
|
319
|
+
<li><a href="#mb-tab-mappings"><i class="fa fa-exchange"></i> <span data-i18n="knxUltimateMatterBridge.tabs.mappings"></span></a></li>
|
|
320
|
+
<li><a href="#mb-tab-advanced"><i class="fa fa-sliders"></i> <span data-i18n="knxUltimateMatterBridge.tabs.advanced"></span></a></li>
|
|
321
|
+
</ul>
|
|
322
|
+
|
|
323
|
+
<div id="mb-tab-mappings" style="padding-top:12px;">
|
|
324
|
+
<div class="form-tips" style="display:block; width:100%; max-width:none; box-sizing:border-box; margin-bottom:12px; border-left:4px solid #d9822b;">
|
|
325
|
+
<i class="fa fa-triangle-exclamation"></i>
|
|
326
|
+
<span data-i18n="knxUltimateMatterBridge.type_change_warning"></span>
|
|
327
|
+
</div>
|
|
328
|
+
|
|
329
|
+
<div id="mb-ga-fields"></div>
|
|
330
|
+
|
|
331
|
+
<div class="form-row" id="mb-invert-row" style="display:none;">
|
|
332
|
+
<label for="node-input-invertPosition" style="width:auto;">
|
|
333
|
+
<i class="fa fa-exchange"></i>
|
|
334
|
+
<span data-i18n="knxUltimateMatterBridge.fields.invert"></span>
|
|
335
|
+
<input type="checkbox" id="node-input-invertPosition" style="width:auto; display:inline-block; vertical-align:middle; margin-left:6px;">
|
|
336
|
+
</label>
|
|
337
|
+
</div>
|
|
358
338
|
</div>
|
|
359
339
|
|
|
360
|
-
<div
|
|
361
|
-
<
|
|
362
|
-
<
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
340
|
+
<div id="mb-tab-advanced" style="padding-top:12px;">
|
|
341
|
+
<div id="mb-compatibility-options" style="display:none;">
|
|
342
|
+
<div class="form-tips" style="display:block; width:100%; max-width:none; box-sizing:border-box; margin-bottom:12px; border-left:4px solid #4b8cc4;">
|
|
343
|
+
<i class="fa fa-info-circle"></i>
|
|
344
|
+
<b data-i18n="knxUltimateMatterBridge.advanced.title"></b>
|
|
345
|
+
<span data-i18n="knxUltimateMatterBridge.advanced.help"></span>
|
|
346
|
+
</div>
|
|
347
|
+
|
|
348
|
+
<div class="form-row mb-dimmer-advanced-row" style="display:none; margin-top:8px;">
|
|
349
|
+
<label for="node-input-turnOnBehavior" style="width:260px;">
|
|
350
|
+
<i class="fa fa-lightbulb-o"></i> <span data-i18n="knxUltimateMatterBridge.advanced.turn_on_behavior"></span>
|
|
351
|
+
</label>
|
|
352
|
+
<select id="node-input-turnOnBehavior" style="width:280px;">
|
|
353
|
+
<option value="ignoreLevelAfterOn" data-i18n="knxUltimateMatterBridge.advanced.turn_on_ignore_level"></option>
|
|
354
|
+
<option value="forwardAll" data-i18n="knxUltimateMatterBridge.advanced.turn_on_forward_all"></option>
|
|
355
|
+
</select>
|
|
356
|
+
</div>
|
|
357
|
+
|
|
358
|
+
<div class="form-row mb-dimmer-advanced-row" style="display:none;">
|
|
359
|
+
<label for="node-input-ignoreLevelAfterOnMs" style="width:260px;">
|
|
360
|
+
<i class="fa fa-clock-o"></i> <span data-i18n="knxUltimateMatterBridge.advanced.ignore_level_ms"></span>
|
|
361
|
+
</label>
|
|
362
|
+
<input type="number" id="node-input-ignoreLevelAfterOnMs" min="0" step="100" style="width:120px;">
|
|
363
|
+
</div>
|
|
364
|
+
|
|
365
|
+
<div class="form-row mb-cover-advanced-row" style="display:none; margin-top:8px;">
|
|
366
|
+
<label for="node-input-coverExposeAsDimmableLight" style="width:auto;">
|
|
367
|
+
<i class="fa fa-lightbulb-o"></i>
|
|
368
|
+
<span data-i18n="knxUltimateMatterBridge.advanced.cover_expose_as_light"></span>
|
|
369
|
+
<input type="checkbox" id="node-input-coverExposeAsDimmableLight" style="width:auto; display:inline-block; vertical-align:middle; margin-left:6px;">
|
|
370
|
+
</label>
|
|
371
|
+
<div class="form-tips" style="margin-top:5px;" data-i18n="knxUltimateMatterBridge.advanced.cover_expose_as_light_help"></div>
|
|
372
|
+
</div>
|
|
373
|
+
|
|
374
|
+
<div class="form-row mb-cover-advanced-row" style="display:none; margin-top:8px;">
|
|
375
|
+
<label for="node-input-coverUpdateMode" style="width:260px;">
|
|
376
|
+
<i class="fa fa-window-maximize"></i> <span data-i18n="knxUltimateMatterBridge.advanced.cover_update_mode"></span>
|
|
377
|
+
</label>
|
|
378
|
+
<select id="node-input-coverUpdateMode" style="width:280px;">
|
|
379
|
+
<option value="optimistic" data-i18n="knxUltimateMatterBridge.advanced.cover_optimistic"></option>
|
|
380
|
+
<option value="waitStatus" data-i18n="knxUltimateMatterBridge.advanced.cover_wait_status"></option>
|
|
381
|
+
</select>
|
|
382
|
+
</div>
|
|
383
|
+
|
|
384
|
+
<div class="form-row mb-cover-advanced-row" style="display:none;">
|
|
385
|
+
<label for="node-input-coverStatusTimeoutMs" style="width:260px;">
|
|
386
|
+
<i class="fa fa-clock-o"></i> <span data-i18n="knxUltimateMatterBridge.advanced.cover_status_timeout"></span>
|
|
387
|
+
</label>
|
|
388
|
+
<input type="number" id="node-input-coverStatusTimeoutMs" min="0" step="500" style="width:120px;">
|
|
389
|
+
</div>
|
|
390
|
+
</div>
|
|
391
|
+
|
|
392
|
+
<div class="form-row">
|
|
393
|
+
<label for="node-input-readStatusAtStartup" style="width:260px;">
|
|
394
|
+
<i class="fa fa-question-circle"></i> <span data-i18n="knxUltimateMatterBridge.read_status_startup"></span>
|
|
395
|
+
</label>
|
|
396
|
+
<select id="node-input-readStatusAtStartup" style="width:120px;">
|
|
397
|
+
<option value="yes" data-i18n="knxUltimateMatterBridge.opt_yes"></option>
|
|
398
|
+
<option value="no" data-i18n="knxUltimateMatterBridge.opt_no"></option>
|
|
399
|
+
</select>
|
|
400
|
+
</div>
|
|
401
|
+
|
|
402
|
+
<div class="form-row">
|
|
403
|
+
<label for="node-input-enableNodePINS" style="width:260px;">
|
|
404
|
+
<i class="fa fa-code"></i> <span data-i18n="knxUltimateMatterBridge.node_pins"></span>
|
|
405
|
+
</label>
|
|
406
|
+
<select id="node-input-enableNodePINS" style="width:220px;">
|
|
407
|
+
<option value="no" data-i18n="knxUltimateMatterBridge.node_pins_hide"></option>
|
|
408
|
+
<option value="yes" data-i18n="knxUltimateMatterBridge.node_pins_show"></option>
|
|
409
|
+
</select>
|
|
410
|
+
</div>
|
|
368
411
|
</div>
|
|
369
|
-
|
|
370
|
-
<div class="form-row mb-cover-advanced-row" style="display:none;">
|
|
371
|
-
<label for="node-input-coverStatusTimeoutMs" style="width:260px;">
|
|
372
|
-
<i class="fa fa-clock-o"></i> <span data-i18n="knxUltimateMatterBridge.advanced.cover_status_timeout"></span>
|
|
373
|
-
</label>
|
|
374
|
-
<input type="number" id="node-input-coverStatusTimeoutMs" min="0" step="500" style="width:120px;">
|
|
375
|
-
</div>
|
|
376
|
-
</details>
|
|
377
|
-
|
|
378
|
-
<hr/>
|
|
379
|
-
|
|
380
|
-
<div class="form-row">
|
|
381
|
-
<label for="node-input-readStatusAtStartup" style="width:260px;">
|
|
382
|
-
<i class="fa fa-question-circle"></i> <span data-i18n="knxUltimateMatterBridge.read_status_startup"></span>
|
|
383
|
-
</label>
|
|
384
|
-
<select id="node-input-readStatusAtStartup" style="width:120px;">
|
|
385
|
-
<option value="yes" data-i18n="knxUltimateMatterBridge.opt_yes"></option>
|
|
386
|
-
<option value="no" data-i18n="knxUltimateMatterBridge.opt_no"></option>
|
|
387
|
-
</select>
|
|
388
|
-
</div>
|
|
389
|
-
|
|
390
|
-
<div class="form-row">
|
|
391
|
-
<label for="node-input-enableNodePINS" style="width:260px;">
|
|
392
|
-
<i class="fa fa-code"></i> <span data-i18n="knxUltimateMatterBridge.node_pins"></span>
|
|
393
|
-
</label>
|
|
394
|
-
<select id="node-input-enableNodePINS" style="width:220px;">
|
|
395
|
-
<option value="no" data-i18n="knxUltimateMatterBridge.node_pins_hide"></option>
|
|
396
|
-
<option value="yes" data-i18n="knxUltimateMatterBridge.node_pins_show"></option>
|
|
397
|
-
</select>
|
|
398
412
|
</div>
|
|
399
413
|
|
|
400
414
|
<br/>
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"name_placeholder": "z.B. Küchenlicht",
|
|
18
18
|
"invert": "Position % invertieren"
|
|
19
19
|
},
|
|
20
|
-
|
|
20
|
+
"advanced": {
|
|
21
21
|
"title": "Erweiterte Kompatibilität",
|
|
22
22
|
"help": " Verwende diese Optionen nur, wenn ein Matter-Controller oder ein KNX-Aktor eine besondere Behandlung benötigt.",
|
|
23
23
|
"turn_on_behavior": "Einschaltverhalten",
|
|
@@ -29,8 +29,12 @@
|
|
|
29
29
|
"cover_update_mode": "Jalousie-/Rollladenstatus",
|
|
30
30
|
"cover_optimistic": "Matter-Position optimistisch aktualisieren",
|
|
31
31
|
"cover_wait_status": "Nur auf KNX-Status warten",
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
"cover_status_timeout": "Timeout für Positionsstatus (ms)"
|
|
33
|
+
},
|
|
34
|
+
"tabs": {
|
|
35
|
+
"mappings": "KNX-Zuordnungen",
|
|
36
|
+
"advanced": "Erweiterte Optionen"
|
|
37
|
+
},
|
|
34
38
|
"functions": {
|
|
35
39
|
"fn_onoff_cmd": "Ein/Aus Befehls-GA",
|
|
36
40
|
"fn_onoff_status": "Ein/Aus Status-GA",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"name_placeholder": "e.g. Kitchen light",
|
|
18
18
|
"invert": "Invert position %"
|
|
19
19
|
},
|
|
20
|
-
|
|
20
|
+
"advanced": {
|
|
21
21
|
"title": "Advanced compatibility",
|
|
22
22
|
"help": " Use these options only when a Matter controller or a KNX actuator needs special handling.",
|
|
23
23
|
"turn_on_behavior": "Turn-on behavior",
|
|
@@ -29,8 +29,12 @@
|
|
|
29
29
|
"cover_update_mode": "Cover state update",
|
|
30
30
|
"cover_optimistic": "Optimistically update Matter position",
|
|
31
31
|
"cover_wait_status": "Wait for KNX status only",
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
"cover_status_timeout": "Cover status timeout (ms)"
|
|
33
|
+
},
|
|
34
|
+
"tabs": {
|
|
35
|
+
"mappings": "KNX mappings",
|
|
36
|
+
"advanced": "Advanced options"
|
|
37
|
+
},
|
|
34
38
|
"functions": {
|
|
35
39
|
"fn_onoff_cmd": "On/Off command GA",
|
|
36
40
|
"fn_onoff_status": "On/Off status GA",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"name_placeholder": "p.ej. Luz cocina",
|
|
18
18
|
"invert": "Invertir posición %"
|
|
19
19
|
},
|
|
20
|
-
|
|
20
|
+
"advanced": {
|
|
21
21
|
"title": "Compatibilidad avanzada",
|
|
22
22
|
"help": " Usa estas opciones solo cuando un controlador Matter o un actuador KNX necesite un tratamiento especial.",
|
|
23
23
|
"turn_on_behavior": "Comportamiento al encender",
|
|
@@ -29,8 +29,12 @@
|
|
|
29
29
|
"cover_update_mode": "Actualización de estado de persiana",
|
|
30
30
|
"cover_optimistic": "Actualizar la posición Matter de forma optimista",
|
|
31
31
|
"cover_wait_status": "Esperar solo el estado KNX",
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
"cover_status_timeout": "Timeout estado persiana (ms)"
|
|
33
|
+
},
|
|
34
|
+
"tabs": {
|
|
35
|
+
"mappings": "Asignaciones KNX",
|
|
36
|
+
"advanced": "Opciones avanzadas"
|
|
37
|
+
},
|
|
34
38
|
"functions": {
|
|
35
39
|
"fn_onoff_cmd": "GA comando On/Off",
|
|
36
40
|
"fn_onoff_status": "GA estado On/Off",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"name_placeholder": "ex. Lumière cuisine",
|
|
18
18
|
"invert": "Inverser la position %"
|
|
19
19
|
},
|
|
20
|
-
|
|
20
|
+
"advanced": {
|
|
21
21
|
"title": "Compatibilité avancée",
|
|
22
22
|
"help": " Utilisez ces options seulement lorsqu'un contrôleur Matter ou un actionneur KNX demande un traitement spécial.",
|
|
23
23
|
"turn_on_behavior": "Comportement à l'allumage",
|
|
@@ -29,8 +29,12 @@
|
|
|
29
29
|
"cover_update_mode": "Mise à jour état volet",
|
|
30
30
|
"cover_optimistic": "Mettre à jour la position Matter de façon optimiste",
|
|
31
31
|
"cover_wait_status": "Attendre seulement l'état KNX",
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
"cover_status_timeout": "Timeout état volet (ms)"
|
|
33
|
+
},
|
|
34
|
+
"tabs": {
|
|
35
|
+
"mappings": "Mappages KNX",
|
|
36
|
+
"advanced": "Options avancées"
|
|
37
|
+
},
|
|
34
38
|
"functions": {
|
|
35
39
|
"fn_onoff_cmd": "GA commande On/Off",
|
|
36
40
|
"fn_onoff_status": "GA état On/Off",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"name_placeholder": "es. Luce cucina",
|
|
18
18
|
"invert": "Inverti posizione %"
|
|
19
19
|
},
|
|
20
|
-
|
|
20
|
+
"advanced": {
|
|
21
21
|
"title": "Compatibilità avanzata",
|
|
22
22
|
"help": " Usa queste opzioni solo quando un controller Matter o un attuatore KNX richiede una gestione speciale.",
|
|
23
23
|
"turn_on_behavior": "Comportamento all'accensione",
|
|
@@ -29,8 +29,12 @@
|
|
|
29
29
|
"cover_update_mode": "Aggiornamento stato tapparella",
|
|
30
30
|
"cover_optimistic": "Aggiorna ottimisticamente la posizione Matter",
|
|
31
31
|
"cover_wait_status": "Attendi solo lo stato KNX",
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
"cover_status_timeout": "Timeout stato tapparella (ms)"
|
|
33
|
+
},
|
|
34
|
+
"tabs": {
|
|
35
|
+
"mappings": "Mappature KNX",
|
|
36
|
+
"advanced": "Opzioni avanzate"
|
|
37
|
+
},
|
|
34
38
|
"functions": {
|
|
35
39
|
"fn_onoff_cmd": "GA comando On/Off",
|
|
36
40
|
"fn_onoff_status": "GA stato On/Off",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"name_placeholder": "例如 厨房灯",
|
|
18
18
|
"invert": "反转位置 %"
|
|
19
19
|
},
|
|
20
|
-
|
|
20
|
+
"advanced": {
|
|
21
21
|
"title": "高级兼容性",
|
|
22
22
|
"help": " 仅当 Matter 控制器或 KNX 执行器需要特殊处理时使用这些选项。",
|
|
23
23
|
"turn_on_behavior": "开灯行为",
|
|
@@ -29,8 +29,12 @@
|
|
|
29
29
|
"cover_update_mode": "窗帘状态更新",
|
|
30
30
|
"cover_optimistic": "乐观更新 Matter 位置",
|
|
31
31
|
"cover_wait_status": "仅等待 KNX 状态",
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
"cover_status_timeout": "窗帘状态超时 (ms)"
|
|
33
|
+
},
|
|
34
|
+
"tabs": {
|
|
35
|
+
"mappings": "KNX 映射",
|
|
36
|
+
"advanced": "高级选项"
|
|
37
|
+
},
|
|
34
38
|
"functions": {
|
|
35
39
|
"fn_onoff_cmd": "开/关 命令 GA",
|
|
36
40
|
"fn_onoff_status": "开/关 状态 GA",
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"engines": {
|
|
4
4
|
"node": ">=20.18.1"
|
|
5
5
|
},
|
|
6
|
-
"version": "6.0.
|
|
6
|
+
"version": "6.0.4",
|
|
7
7
|
"description": "Control your KNX and KNX Secure intallation via Node-Red! A bunch of KNX nodes, with integrated Philips HUE control, ETS group address importer, KNX AI for diagnosticsand KNX routing between interfaces. Easy to use and highly configurable.",
|
|
8
8
|
"files": [
|
|
9
9
|
"nodes/",
|