node-red-contrib-knx-ultimate 8.0.6 → 8.1.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 +9 -1
- package/docs/README.md +3 -2
- package/nodes/knxUltimate-config.js +23 -7
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -6,9 +6,17 @@
|
|
|
6
6
|
|
|
7
7
|
# CHANGELOG
|
|
8
8
|
|
|
9
|
+
**Version 8.1.1** - October 2026
|
|
10
|
+
|
|
11
|
+
- Updated the KNX engine to `knxultimate` 6.2.1.
|
|
12
|
+
|
|
13
|
+
**Version 8.1.0** - October 2026
|
|
14
|
+
|
|
15
|
+
- Updated the KNX engine to `knxultimate` 6.2.0.
|
|
16
|
+
|
|
9
17
|
**Version 8.0.6** - September 2026
|
|
10
18
|
|
|
11
|
-
- Updated the KNX engine to `knxultimate` 6.0.8 to restore reception of authenticated Data Secure status telegrams from gateways such as Apricum that omit the outer KNX/IP wrapper.
|
|
19
|
+
- Updated the KNX engine to `knxultimate` 6.0.8 to restore reception of authenticated Data Secure status telegrams from gateways such as Apricum/MDT that omit the outer KNX/IP wrapper.
|
|
12
20
|
- Secure status nodes now update after group writes while MAC validation and replay protection remain enabled.
|
|
13
21
|
|
|
14
22
|
**Version 8.0.5** - September 2026
|
package/docs/README.md
CHANGED
|
@@ -4,6 +4,7 @@ The site uses GitHub Pages/Jekyll and keeps the existing URLs and six languages:
|
|
|
4
4
|
|
|
5
5
|
- `docs/_data/knx8.json`: translated home-page content and version notices.
|
|
6
6
|
- `docs/_includes/homepage/content.html`: shared home-page structure.
|
|
7
|
+
- `docs/_data/homepage-community.json` and `docs/_includes/homepage/community.html`: partners, community links and translated Made in Italy/KNX acknowledgements, with logos in `docs/assets/community/`.
|
|
7
8
|
- `docs/wiki/`: node reference, getting started, migration and examples. Use the same `translation_key` for translations and preserve existing `permalink` values.
|
|
8
9
|
- `scripts/wiki-menu.json`: navigation source. `npm run docs:prepare` regenerates `docs/_data/wiki-nav.json` and copies the package examples to `docs/examples/`.
|
|
9
10
|
- `examples/`: the maintained importable flows. The copies in `docs/examples/` are generated and ignored by Git.
|
|
@@ -12,14 +13,14 @@ The old HUE and Matter pages are version 7 references, marked by `legacy_package
|
|
|
12
13
|
|
|
13
14
|
## Local preview
|
|
14
15
|
|
|
15
|
-
Install the Ruby/Jekyll dependencies from `docs/Gemfile`, then run from the repository root with `
|
|
16
|
+
Install the Ruby/Jekyll dependencies from `docs/Gemfile`, then run from the repository root with `ruby` available on PATH:
|
|
16
17
|
|
|
17
18
|
```sh
|
|
18
19
|
npm run docs:build
|
|
19
20
|
npm run docs:serve
|
|
20
21
|
```
|
|
21
22
|
|
|
22
|
-
Open `http://127.0.0.1:4000/node-red-contrib-knx-ultimate/`. The preview uses the same Liquid templates as the real site.
|
|
23
|
+
Open `http://127.0.0.1:4000/node-red-contrib-knx-ultimate/`. The preview uses the same Liquid templates as the real site. The scripts locate Jekyll through RubyGems, so the gem executable directory does not need to be on PATH. `docs:serve:norl` uses the same launcher.
|
|
23
24
|
|
|
24
25
|
`npm run wiki:refresh` imports help for the current Device, Gateway, Viewer, IoT Bridge and routing nodes. It preserves page metadata and archive notices. Getting started, migration, Utility overview/function references and examples are maintained directly in `docs/wiki/`.
|
|
25
26
|
|
|
@@ -32,6 +32,19 @@ try { NODE_VERSION = require('../package.json').version } catch (e) { /* empty *
|
|
|
32
32
|
let KNX_ENGINE_VERSION = 'unknown'
|
|
33
33
|
try { KNX_ENGINE_VERSION = require('knxultimate/package.json').version } catch (e) { /* empty */ }
|
|
34
34
|
|
|
35
|
+
// Returns the group service of a bus telegram, or null when it is not one:
|
|
36
|
+
// transport control TPDUs (T_Connect, T_Disconnect, T_ACK, T_NAK: TPCI only, no APCI)
|
|
37
|
+
// and point-to-point telegrams (cEMI Ctrl2 address type 0 = individual destination).
|
|
38
|
+
const getGroupServiceEvent = (cEMIMessage) => {
|
|
39
|
+
const npdu = cEMIMessage?.npdu
|
|
40
|
+
if (!npdu || npdu.isTransportControl === true) return null
|
|
41
|
+
if (cEMIMessage.control?.addressType === 0) return null
|
|
42
|
+
if (npdu.isGroupRead) return 'GroupValue_Read'
|
|
43
|
+
if (npdu.isGroupResponse) return 'GroupValue_Response'
|
|
44
|
+
if (npdu.isGroupWrite) return 'GroupValue_Write'
|
|
45
|
+
return null
|
|
46
|
+
}
|
|
47
|
+
|
|
35
48
|
// DATAPONT MANIPULATION HELPERS
|
|
36
49
|
// ####################
|
|
37
50
|
const sortBy = (field) => (a, b) => {
|
|
@@ -1399,18 +1412,20 @@ module.exports = (RED) => {
|
|
|
1399
1412
|
return
|
|
1400
1413
|
}
|
|
1401
1414
|
|
|
1402
|
-
let _evt = null
|
|
1403
|
-
if (_datagram.cEMIMessage.npdu.isGroupRead) _evt = 'GroupValue_Read'
|
|
1404
|
-
if (_datagram.cEMIMessage.npdu.isGroupResponse) _evt = 'GroupValue_Response'
|
|
1405
|
-
if (_datagram.cEMIMessage.npdu.isGroupWrite) _evt = 'GroupValue_Write'
|
|
1406
|
-
|
|
1407
1415
|
let _src = null
|
|
1408
1416
|
_src = _datagram.cEMIMessage.srcAddress.toString()
|
|
1409
1417
|
|
|
1410
1418
|
let _dest = null
|
|
1411
1419
|
_dest = _datagram.cEMIMessage.dstAddress.toString()
|
|
1412
1420
|
|
|
1413
|
-
|
|
1421
|
+
// Point-to-point and transport control telegrams (e.g. an ETS device scan) are valid, but not for us
|
|
1422
|
+
const _evt = getGroupServiceEvent(_datagram.cEMIMessage)
|
|
1423
|
+
if (_evt === null) {
|
|
1424
|
+
node.sysLogger?.debug(`HandleBusEvent: ignored non group telegram src=${_src} dest=${_dest}`)
|
|
1425
|
+
return
|
|
1426
|
+
}
|
|
1427
|
+
|
|
1428
|
+
if (_src === null || _dest === null) {
|
|
1414
1429
|
node.sysLogger?.warn(`HandleBusEvent: unable to parse telegram, ignored (evt=${_evt || 'n/a'} src=${_src || 'n/a'} dest=${_dest || 'n/a'})`)
|
|
1415
1430
|
return
|
|
1416
1431
|
};
|
|
@@ -2754,5 +2769,6 @@ module.exports = (RED) => {
|
|
|
2754
2769
|
}
|
|
2755
2770
|
|
|
2756
2771
|
module.exports.__test = {
|
|
2757
|
-
resolveHostAddress
|
|
2772
|
+
resolveHostAddress,
|
|
2773
|
+
getGroupServiceEvent
|
|
2758
2774
|
}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"engines": {
|
|
4
4
|
"node": ">=20.18.1"
|
|
5
5
|
},
|
|
6
|
-
"version": "8.
|
|
6
|
+
"version": "8.1.1",
|
|
7
7
|
"description": "KNX integration for Node-RED with KNX/IP and KNX Secure, ETS import, routing, diagnostics, automation utilities, MQTT and Modbus adapters. Optional Hue Ultimate and Matter Ultimate packages connect through the KNX gateway.",
|
|
8
8
|
"files": [
|
|
9
9
|
"nodes/",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"scripts/check-legacy-flows.js"
|
|
20
20
|
],
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"knxultimate": "6.
|
|
22
|
+
"knxultimate": "6.2.1",
|
|
23
23
|
"lodash": "4.18.1",
|
|
24
24
|
"mqtt": "^5.15.2",
|
|
25
25
|
"ping": "0.4.4",
|
|
@@ -97,8 +97,8 @@
|
|
|
97
97
|
"docs:sync": "node scripts/export-wiki-to-pages.js",
|
|
98
98
|
"wiki:refresh": "npm run wiki:help-export && node scripts/generate-wiki-navbar.js && node scripts/prepare-wiki-pages.js && npm run docs:sync",
|
|
99
99
|
"docs:prepare": "node scripts/generate-wiki-navbar.js && node scripts/prepare-docs.js",
|
|
100
|
-
"docs:build": "npm run docs:prepare && jekyll build --source docs --destination docs/_site",
|
|
101
|
-
"docs:serve": "npm run docs:prepare && jekyll serve --source docs --destination docs/_site --host 127.0.0.1",
|
|
100
|
+
"docs:build": "npm run docs:prepare && ruby -e \"load Gem.bin_path('jekyll', 'jekyll')\" -- build --source docs --destination docs/_site",
|
|
101
|
+
"docs:serve": "npm run docs:prepare && ruby -e \"load Gem.bin_path('jekyll', 'jekyll')\" -- serve --source docs --destination docs/_site --host 127.0.0.1",
|
|
102
102
|
"docs:serve:norl": "npm run docs:serve",
|
|
103
103
|
"knx-utility:generate": "node scripts/generate-knx-utility-profiles.js",
|
|
104
104
|
"knx-utility:check": "node scripts/generate-knx-utility-profiles.js --check",
|
|
@@ -113,4 +113,4 @@
|
|
|
113
113
|
"marked": "^14.1.0",
|
|
114
114
|
"js-yaml": "4.3.2"
|
|
115
115
|
}
|
|
116
|
-
}
|
|
116
|
+
}
|