node-red-contrib-knx-ultimate 8.1.0 → 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 CHANGED
@@ -6,6 +6,10 @@
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
+
9
13
  **Version 8.1.0** - October 2026
10
14
 
11
15
  - Updated the KNX engine to `knxultimate` 6.2.0.
@@ -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
- if (_evt === null || _src === null || _dest === null) {
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.1.0",
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.2.0",
22
+ "knxultimate": "6.2.1",
23
23
  "lodash": "4.18.1",
24
24
  "mqtt": "^5.15.2",
25
25
  "ping": "0.4.4",