node-red-contrib-knx-ultimate 5.2.1 → 5.2.2

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.
Files changed (32) hide show
  1. package/CHANGELOG.md +13 -10
  2. package/nodes/commonFunctions.js +9 -9
  3. package/nodes/knxUltimateMatterBridge.html +212 -299
  4. package/nodes/knxUltimateMatterBridge.js +166 -309
  5. package/nodes/knxUltimateMatterDevice.html +46 -0
  6. package/nodes/locales/de/knxUltimateMatterBridge.html +13 -24
  7. package/nodes/locales/de/knxUltimateMatterBridge.json +4 -1
  8. package/nodes/locales/de/matterbridge-config.html +34 -0
  9. package/nodes/locales/de/matterbridge-config.json +20 -0
  10. package/nodes/locales/en/knxUltimateMatterBridge.html +14 -25
  11. package/nodes/locales/en/knxUltimateMatterBridge.json +4 -1
  12. package/nodes/locales/en/matterbridge-config.html +34 -0
  13. package/nodes/locales/en/matterbridge-config.json +20 -0
  14. package/nodes/locales/es/knxUltimateMatterBridge.html +13 -24
  15. package/nodes/locales/es/knxUltimateMatterBridge.json +4 -1
  16. package/nodes/locales/es/matterbridge-config.html +34 -0
  17. package/nodes/locales/es/matterbridge-config.json +20 -0
  18. package/nodes/locales/fr/knxUltimateMatterBridge.html +13 -24
  19. package/nodes/locales/fr/knxUltimateMatterBridge.json +4 -1
  20. package/nodes/locales/fr/matterbridge-config.html +34 -0
  21. package/nodes/locales/fr/matterbridge-config.json +20 -0
  22. package/nodes/locales/it/knxUltimateMatterBridge.html +13 -24
  23. package/nodes/locales/it/knxUltimateMatterBridge.json +4 -1
  24. package/nodes/locales/it/matterbridge-config.html +34 -0
  25. package/nodes/locales/it/matterbridge-config.json +20 -0
  26. package/nodes/locales/zh-CN/knxUltimateMatterBridge.html +13 -24
  27. package/nodes/locales/zh-CN/knxUltimateMatterBridge.json +4 -1
  28. package/nodes/locales/zh-CN/matterbridge-config.html +34 -0
  29. package/nodes/locales/zh-CN/matterbridge-config.json +20 -0
  30. package/nodes/matterbridge-config.html +121 -0
  31. package/nodes/matterbridge-config.js +220 -0
  32. package/package.json +2 -1
package/CHANGELOG.md CHANGED
@@ -6,16 +6,19 @@
6
6
 
7
7
  # CHANGELOG
8
8
 
9
- **Version 5.2.1** - July 2026<br/>
10
-
11
- - New **Matter Bridge (BETA)** node: exposes **KNX group addresses as Matter devices**. Alexa, Google Home, Apple Home (or any Matter controller) commission the bridge once — via QR code or 11-digit manual code shown right in the node editor — and see all your KNX devices with the names you typed, ready for app and voice control. It is the opposite direction of the Matter Device node introduced in 5.1.0.<br/>
12
- - **17 virtual device types**: on/off light, dimmable light, **RGB color light** (DPT 232.600, converted to/from the Matter color wheel), **tunable white light** (color temperature in Kelvin, DPT 7.600), plug, cover/shutter (up/down, stop, position % with optional inversion), thermostat (current temperature + heating setpoint, both ways), **fan/ventilation** (speed %), sensors (temperature, humidity, illuminance, occupancy, contact), **smoke/CO alarm**, **water leak detector**, **air quality sensor** (CO2 ppm with automatic air-quality classification) and **robot vacuum** (flow-only: integrate your robot with any Node-RED node and expose it to the voice assistants).<br/>
13
- - Bidirectional with loop protection: assistant commands write to the KNX *command* group addresses; telegrams on the *status* group addresses update the Matter attributes (and the apps). At startup the node can send a `GroupValue_Read` to every status GA so the Matter attributes are populated before the first app query.<br/>
14
- - **Live device reconciliation**: the Matter server stays alive across re-deploys added/renamed/removed devices appear on the paired controllers within seconds, without restarting Node-RED and without re-pairing.<br/>
15
- - Optional **node Input/Output PINs**: the output forwards every controller command to the flow; the input updates the Matter state of a virtual device from flow messages (`msg.payload = { device, function, value }`). Devices without a command GA become flow-only devices.<br/>
16
- - The **KNX gateway is optional**: without it the bridge runs in flow-only mode, useful to expose flow-computed or non-KNX devices to Alexa & Co.<br/>
17
- - Multi-fabric: several controllers can be paired at the same time; the pairing panel lists them and a **Reset pairing** button decommissions everything. The bridge identity persists across re-deploys (no re-pairing needed).<br/>
18
- - Devices editor with ETS group-address autocomplete filtered per function and per-type fields. Localized in EN/IT/DE/FR/ES/zh-CN.<br/>
9
+ **Version 5.2.2** - July 2026<br/>
10
+
11
+ - New **Matter Bridge (BETA)**: exposes **KNX group addresses as Matter devices**. Alexa, Google Home, Apple Home (or any Matter controller) commission the bridge once — via QR code or 11-digit manual code shown in the editor — and see all your KNX devices with the names you typed, ready for app and voice control. It is the opposite direction of the Matter Device node introduced in 5.1.0.<br/>
12
+ - Two-node architecture (like the HUE and Matter Controller integrations): a **Matter Bridge** configuration node is the bridge itself (holds the pairing, the QR code and the port), and a **Matter Bridge device** node is added per exposed device and points to it. Spread the device nodes across your flows, each with its own status no giant list.<br/>
13
+ - **17 device types**: on/off light, dimmable light, **RGB color light** (DPT 232.600, converted to/from the Matter color wheel), **tunable white light** (color temperature in Kelvin, DPT 7.600), plug, cover/shutter (up/down, stop, position % with optional inversion), thermostat (current temperature + heating setpoint, both ways), **fan/ventilation** (speed %), sensors (temperature, humidity, illuminance, occupancy, contact), **smoke/CO alarm**, **water leak detector**, **air quality sensor** (CO2 ppm with automatic air-quality classification) and **robot vacuum** (flow-only: integrate your robot with any Node-RED node and expose it to the voice assistants).<br/>
14
+ - Bidirectional with loop protection: assistant commands write to the KNX *command* group addresses; telegrams on the *status* group addresses update the Matter attributes (and the apps). At startup each device node can send a `GroupValue_Read` to its status GAs so the Matter attributes are populated before the first app query.<br/>
15
+ - **Live device reconciliation**: the Matter server stays alive across re-deploys added/renamed/removed device nodes appear on the paired controllers within seconds, without restarting Node-RED and without re-pairing.<br/>
16
+ - Optional **node Input/Output PINs**: the output forwards every controller command to the flow; the input updates the Matter state from flow messages (`msg.payload = { function, value }`). Devices without a command GA become flow-only devices.<br/>
17
+ - The **KNX gateway is optional** on the device node: without it the device runs in flow-only mode, useful to expose flow-computed or non-KNX devices to Alexa & Co.<br/>
18
+ - Multi-fabric: several controllers can be paired at the same time; the pairing panel lists them and a **Reset pairing** button decommissions everything. The bridge identity persists across re-deploys (no re-pairing needed). Each configuration node can use a different UDP port, so multiple independent bridges are possible.<br/>
19
+ - Editor with ETS group-address autocomplete filtered per function: the KNX gateway is resolved automatically (auto-selected when only one exists), so the address list is always available. Localized in EN/IT/DE/FR/ES/zh-CN.<br/>
20
+ - Note for early 5.2.x BETA testers: the two-node split changes the Matter identity of the bridge - remove the old bridge from your Matter app and pair the new configuration node once.<br/>
21
+ - **Matter Device** node editor: the mappings list grows to fill the edit panel and has a native resize grip (bottom-right corner) to drag it to any height.<br/>
19
22
  - Matter integration hardening: try/catch protection on all critical paths (controller startup, client registration, structure queries, commissioning aftermath) so errors never crash Node-RED. Fixed the devices editor losing the configured group addresses on close/reopen (with automatic recovery of configurations saved by the affected versions).<br/>
20
23
  - **Documentation**: node help for the three Matter nodes in all six languages, new **Matter section** in the online docs sidebar with the Matter Controller, Matter Device and Matter Bridge pages (EN/IT/DE/FR/ES/zh-CN), the two new nodes on the homepage node list and the Matter logo alongside Home Assistant and MQTT.<br/>
21
24
 
@@ -1006,15 +1006,15 @@ module.exports = (RED) => {
1006
1006
  }
1007
1007
  })
1008
1008
 
1009
- // MATTER BRIDGE: returns the pairing info (QR code, manual code, commissioned fabrics) of a bridge node
1010
- RED.httpAdmin.get('/KNXUltimateMatterBridgeInfo', RED.auth.needsPermission('knxUltimateMatterBridge.read'), (req, res) => {
1009
+ // MATTER BRIDGE: returns the pairing info (QR code, manual code, commissioned fabrics) of a matterbridge-config node
1010
+ RED.httpAdmin.get('/KNXUltimateMatterBridgeInfo', RED.auth.needsPermission('matterbridge-config.read'), (req, res) => {
1011
1011
  try {
1012
- const bridgeNode = RED.nodes.getNode(req.query.nodeId)
1013
- if (bridgeNode === null || bridgeNode === undefined || typeof bridgeNode.getBridgePairingInfo !== 'function') {
1012
+ const bridgeConfig = RED.nodes.getNode(req.query.configId)
1013
+ if (bridgeConfig === null || bridgeConfig === undefined || typeof bridgeConfig.getPairingInfo !== 'function') {
1014
1014
  res.json({ error: 'PLEASE DEPLOY FIRST: then try again.' })
1015
1015
  return
1016
1016
  }
1017
- res.json(bridgeNode.getBridgePairingInfo())
1017
+ res.json(bridgeConfig.getPairingInfo())
1018
1018
  } catch (error) {
1019
1019
  RED.log.error(`Err KNXUltimateMatterBridgeInfo: ${error.message}`)
1020
1020
  res.json({ error: error.message })
@@ -1022,14 +1022,14 @@ module.exports = (RED) => {
1022
1022
  })
1023
1023
 
1024
1024
  // MATTER BRIDGE: factory reset (removes all paired controllers, restarts pairing advertising)
1025
- RED.httpAdmin.get('/KNXUltimateMatterBridgeReset', RED.auth.needsPermission('knxUltimateMatterBridge.write'), async (req, res) => {
1025
+ RED.httpAdmin.get('/KNXUltimateMatterBridgeReset', RED.auth.needsPermission('matterbridge-config.write'), async (req, res) => {
1026
1026
  try {
1027
- const bridgeNode = RED.nodes.getNode(req.query.nodeId)
1028
- if (bridgeNode === null || bridgeNode === undefined || typeof bridgeNode.factoryResetBridge !== 'function') {
1027
+ const bridgeConfig = RED.nodes.getNode(req.query.configId)
1028
+ if (bridgeConfig === null || bridgeConfig === undefined || typeof bridgeConfig.factoryResetBridge !== 'function') {
1029
1029
  res.json({ error: 'PLEASE DEPLOY FIRST: then try again.' })
1030
1030
  return
1031
1031
  }
1032
- await bridgeNode.factoryResetBridge()
1032
+ await bridgeConfig.factoryResetBridge()
1033
1033
  res.json({ status: 'ok' })
1034
1034
  } catch (error) {
1035
1035
  RED.log.error(`Err KNXUltimateMatterBridgeReset: ${error.message}`)