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

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 (47) hide show
  1. package/CHANGELOG.md +20 -10
  2. package/nodes/commonFunctions.js +9 -9
  3. package/nodes/knxUltimateIoTBridge.html +59 -2
  4. package/nodes/knxUltimateIoTBridge.js +4 -0
  5. package/nodes/knxUltimateMatterBridge.html +212 -299
  6. package/nodes/knxUltimateMatterBridge.js +166 -309
  7. package/nodes/knxUltimateMatterDevice.html +46 -0
  8. package/nodes/lib/mqtt-bridge.js +43 -1
  9. package/nodes/locales/de/knxUltimateIoTBridge.html +1 -0
  10. package/nodes/locales/de/knxUltimateIoTBridge.json +6 -0
  11. package/nodes/locales/de/knxUltimateMatterBridge.html +13 -24
  12. package/nodes/locales/de/knxUltimateMatterBridge.json +4 -1
  13. package/nodes/locales/de/matterbridge-config.html +34 -0
  14. package/nodes/locales/de/matterbridge-config.json +20 -0
  15. package/nodes/locales/en/knxUltimateIoTBridge.html +1 -0
  16. package/nodes/locales/en/knxUltimateIoTBridge.json +6 -0
  17. package/nodes/locales/en/knxUltimateMatterBridge.html +14 -25
  18. package/nodes/locales/en/knxUltimateMatterBridge.json +4 -1
  19. package/nodes/locales/en/matterbridge-config.html +34 -0
  20. package/nodes/locales/en/matterbridge-config.json +20 -0
  21. package/nodes/locales/es/knxUltimateIoTBridge.html +1 -0
  22. package/nodes/locales/es/knxUltimateIoTBridge.json +6 -0
  23. package/nodes/locales/es/knxUltimateMatterBridge.html +13 -24
  24. package/nodes/locales/es/knxUltimateMatterBridge.json +4 -1
  25. package/nodes/locales/es/matterbridge-config.html +34 -0
  26. package/nodes/locales/es/matterbridge-config.json +20 -0
  27. package/nodes/locales/fr/knxUltimateIoTBridge.html +1 -0
  28. package/nodes/locales/fr/knxUltimateIoTBridge.json +6 -0
  29. package/nodes/locales/fr/knxUltimateMatterBridge.html +13 -24
  30. package/nodes/locales/fr/knxUltimateMatterBridge.json +4 -1
  31. package/nodes/locales/fr/matterbridge-config.html +34 -0
  32. package/nodes/locales/fr/matterbridge-config.json +20 -0
  33. package/nodes/locales/it/knxUltimateIoTBridge.html +1 -0
  34. package/nodes/locales/it/knxUltimateIoTBridge.json +6 -0
  35. package/nodes/locales/it/knxUltimateMatterBridge.html +13 -24
  36. package/nodes/locales/it/knxUltimateMatterBridge.json +4 -1
  37. package/nodes/locales/it/matterbridge-config.html +34 -0
  38. package/nodes/locales/it/matterbridge-config.json +20 -0
  39. package/nodes/locales/zh-CN/knxUltimateIoTBridge.html +1 -0
  40. package/nodes/locales/zh-CN/knxUltimateIoTBridge.json +6 -0
  41. package/nodes/locales/zh-CN/knxUltimateMatterBridge.html +13 -24
  42. package/nodes/locales/zh-CN/knxUltimateMatterBridge.json +4 -1
  43. package/nodes/locales/zh-CN/matterbridge-config.html +34 -0
  44. package/nodes/locales/zh-CN/matterbridge-config.json +20 -0
  45. package/nodes/matterbridge-config.html +121 -0
  46. package/nodes/matterbridge-config.js +220 -0
  47. package/package.json +2 -1
@@ -48,6 +48,45 @@ function normalizeGa (ga) {
48
48
  return typeof ga === 'string' ? ga.trim() : ''
49
49
  }
50
50
 
51
+ // Clean up an entity name for Home Assistant: strip ASCII control characters and collapse
52
+ // runs of whitespace (ETS exports sometimes lose an accented char and leave a double space,
53
+ // e.g. "Velocità vento" -> "Velocit vento"). This keeps the friendly name and the entity_id
54
+ // HA derives from it tidy, and never lets an all-blank/control-only string through.
55
+ function sanitizeEntityName (value) {
56
+ return String(value == null ? '' : value)
57
+ // eslint-disable-next-line no-control-regex
58
+ .replace(/[\u0000-\u001f\u007f]/g, ' ')
59
+ .replace(/\s+/g, ' ')
60
+ .trim()
61
+ }
62
+
63
+ // ETS imports (CSV and ESF) build devicename as "(Main group->Middle group) GA name":
64
+ // the group-address path first, then the actual GA name. Reshape it according to the
65
+ // entity-name format chosen by the user for Home Assistant.
66
+ function formatEntityName (raw, ga, format) {
67
+ const full = sanitizeEntityName(raw)
68
+ if (full === '') return ga
69
+ if (!format || format === 'full') return full
70
+ const match = full.match(/^\(([^)]*)\)\s*(.*)$/)
71
+ const path = match ? match[1].trim() : ''
72
+ const name = match ? (match[2].trim() || ga) : full
73
+ let result
74
+ switch (format) {
75
+ case 'name-first':
76
+ result = path ? `${name} (${path})` : name
77
+ break
78
+ case 'name-only':
79
+ result = name
80
+ break
81
+ case 'name-ga':
82
+ result = `${name} (${ga})`
83
+ break
84
+ default:
85
+ result = full
86
+ }
87
+ return sanitizeEntityName(result) || ga
88
+ }
89
+
51
90
  function toFiniteNumber (value, fallback) {
52
91
  const n = Number(value)
53
92
  return Number.isFinite(n) ? n : fallback
@@ -69,6 +108,9 @@ function createMqttBridge (options) {
69
108
  const discoveryPrefix = (typeof opts.discoveryPrefix === 'string' && opts.discoveryPrefix.trim()) || 'homeassistant'
70
109
  const username = typeof opts.username === 'string' && opts.username ? opts.username : undefined
71
110
  const password = typeof opts.password === 'string' && opts.password ? opts.password : undefined
111
+ // How simple per-GA entity names are built from the ETS devicename: 'full' (as imported),
112
+ // 'name-first' (GA name first, path after), 'name-only' (path stripped), 'name-ga' (name + GA).
113
+ const nameFormat = typeof opts.nameFormat === 'string' && opts.nameFormat ? opts.nameFormat : 'full'
72
114
 
73
115
  // Source per-GA entities: [{ ga, dpt, devicename }]
74
116
  const sourceGAs = Array.isArray(opts.groupAddresses) ? opts.groupAddresses : []
@@ -325,7 +367,7 @@ function createMqttBridge (options) {
325
367
  : map.domain
326
368
  const slug = uniqueSlug(baseSlug)
327
369
  const uniqueId = `${deviceId}_${slug}`
328
- const name = (typeof entry.devicename === 'string' && entry.devicename.trim()) ? entry.devicename.trim() : ga
370
+ const name = formatEntityName(entry.devicename, ga, nameFormat)
329
371
  const stateTopic = `${root}/${slug}/state`
330
372
  const commandTopic = `${root}/${slug}/set`
331
373
 
@@ -16,6 +16,7 @@ Eine native MQTT-Bridge mit Home-Assistant-Discovery. Benötigt einen MQTT-Broke
16
16
  - *Flow-Nachrichten* — der Knoten zeigt einen Eingangs- und einen Ausgangs-Pin. Verbinden Sie den Ausgang eines KNXUltimate-Knotens im **Universal**-Modus mit dem Eingangs-Pin (KNX-Bus → MQTT) und den Ausgangs-Pin mit dem Eingang eines weiteren KNXUltimate-Knotens im **Universal**-Modus (MQTT → KNX-Bus).
17
17
  - **Broker-URL / Benutzername / Passwort** — Verbindung zu Ihrem MQTT-Broker.
18
18
  - **Basis-Topic / Discovery-Präfix** — Root-Topic für Status-/Befehls-Topics und das HA-Discovery-Präfix (Standard `homeassistant`).
19
+ - **Format des Entitätsnamens** — wie die Namen der Home-Assistant-Entitäten aus dem ETS-Import gebildet werden, dessen Namen mit dem Gruppenpfad beginnen, z. B. `(Licht->Erdgeschoss) Wohnzimmer`. Wählen Sie *Wie aus ETS importiert* (Standard), *Name zuerst* (`Wohnzimmer (Licht->Erdgeschoss)`), *Nur der Name* (`Wohnzimmer`) oder *Name + Gruppenadresse* (`Wohnzimmer (0/1/2)`).
19
20
  - **Bereitzustellende Gruppenadressen** — jede im KNX-Gateway importierte Adresse (ETS-Liste) wird mit einem Kontrollkästchen angezeigt. Angehakte Adressen werden als Home-Assistant-Entitäten veröffentlicht, automatisch nach dem DPT typisiert (switch, sensor, binary_sensor, number, text). Verwenden Sie das Filterfeld und die Schaltflächen *Alle auswählen* / *Keine auswählen*. Standardmäßig sind alle Adressen ausgewählt. Jede Zeile hat zudem eine Option **Nur lesen**: eine schreibgeschützte Adresse wird weiterhin an Home Assistant veröffentlicht (ihr Status bleibt sichtbar), akzeptiert aber nie Befehle zurück auf den KNX-Bus (switch werden zu binary_sensor, number zu sensor). Die Schaltflächen *Nur lesen setzen* / *Nur lesen entfernen* wenden dies auf alle aktuell angezeigten Adressen an.
20
21
  - **Rollläden & Thermostate** — fassen mehrere Adressen zu einer Entität zusammen:
21
22
  - *Rollladen*: Auf/Ab-GA (1.008), optionale Stopp-GA (1.007), optionale Positions-GA Befehl/Status (5.001). *Position invertieren* bildet die KNX-Konvention (0% = offen) auf Home Assistant (100% = offen) ab.
@@ -22,6 +22,12 @@
22
22
  "base_topic": "Basis-Topic",
23
23
  "discovery": "Home-Assistant-Discovery veröffentlichen",
24
24
  "discovery_prefix": "Discovery-Präfix",
25
+ "name_format": "Format des Entitätsnamens",
26
+ "name_format_full": "Wie aus ETS importiert: (Hauptgruppe->Mittelgruppe) Name",
27
+ "name_format_name_first": "Name zuerst: Name (Hauptgruppe->Mittelgruppe)",
28
+ "name_format_name_only": "Nur der Name (ETS-Gruppenpfad entfernen)",
29
+ "name_format_name_ga": "Name + Gruppenadresse: Name (1/2/3)",
30
+ "name_format_hint": "Wie die Namen der Home-Assistant-Entitäten aus den importierten ETS-Namen gebildet werden, die mit dem Gruppenpfad beginnen.",
25
31
  "hint": "Erfordert einen MQTT-Broker, der sowohl von Node-RED als auch von Home Assistant erreichbar ist, mit aktivierter MQTT-Integration in HA. Die Entitäten erscheinen unter einem Gerät mit dem Namen dieses Knotens. KNX-Buswerte werden an MQTT veröffentlicht und beschreibbare Datenpunkte akzeptieren Befehle von Home Assistant.",
26
32
  "exposed_gas": "Bereitzustellende Gruppenadressen",
27
33
  "exposed_gas_hint": "Wähle die Gruppenadressen aus, die an Home Assistant veröffentlicht werden sollen. Standardmäßig sind alle importierten Adressen ausgewählt. Von einem Rollladen/Thermostat (unten) verwendete Adressen werden dort behandelt und müssen hier nicht ausgewählt werden.",
@@ -1,11 +1,11 @@
1
1
  <script type="text/markdown" data-help-name="knxUltimateMatterBridge">
2
- # Matter Bridge (BETA)
2
+ # Matter Bridge device (BETA)
3
3
 
4
4
  > Dieser Node ist in **BETA**: Er funktioniert, aber Details können sich zwischen Releases noch ändern.
5
5
 
6
6
  ## Übersicht
7
7
 
8
- Der Matter Bridge Node stellt **KNX-Gruppenadressen als Matter-Geräte** bereit: Alexa, Google Home, Apple Home (oder jeder Matter-Controller) koppeln diese Bridge **einmal** und sehen alle konfigurierten KNX-Geräte mit den von dir vergebenen Namen — bereit für App- und Sprachsteuerung.
8
+ Jeder Matter Bridge device Node stellt **ein KNX-Gerät als Matter-Gerät** bereit: Die gekoppelten Controller (Alexa, Google Home, Apple Home...) sehen es mit dem von dir vergebenen Namen — bereit für App- und Sprachsteuerung. Verweise ihn auf einen **Matter Bridge**-Konfigurations-Node (die eigentliche Bridge, einmal gekoppelt - der Kopplungs-QR-Code lebt dort) und füge beliebig viele Device-Nodes hinzu, überall in deinen Flows.
9
9
 
10
10
  Das ist die Gegenrichtung zum *Matter Device*-Node: Dort steuert KNX ein Matter-Gerät, hier steuern Matter-Controller KNX.
11
11
 
@@ -13,15 +13,13 @@ Das ist die Gegenrichtung zum *Matter Device*-Node: Dort steuert KNX ein Matter-
13
13
 
14
14
  |Feld|Beschreibung|
15
15
  |--|--|
16
- | KNX GW | KNX-Gateway für die Telegramme. **Optional**: Ohne Gateway arbeitet die Bridge im Nur-Flow-Modus — aktiviere die Node-PINs und steuere jedes Gerät über Flow-Nachrichten |
17
- | Name der Matter-Bridge | Wie die Bridge selbst in den Matter-Apps heißt |
18
- | Port | UDP-Port des Matter-Servers (Standard 5540). Nur ein Bridge-Node pro Node-RED-Instanz. |
19
- | Geräte | Die auf Matter bereitgestellten virtuellen KNX-Geräte (siehe unten) |
20
- | Status-GAs beim Start lesen | Sendet beim Start ein `GroupValue_Read` an jede Status-GA, damit die Matter-Attribute gefüllt sind |
16
+ | Matter-Bridge | Der Matter-Bridge-Konfigurations-Node, zu dem dieses Gerät gehört |
17
+ | KNX GW | KNX-Gateway für die Telegramme. **Optional**: Ohne läuft das Gerät im Nur-Flow-Modus über die Node-PINs. Wird automatisch gewählt, wenn das Projekt nur ein Gateway hat |
18
+ | Name | Was Alexa & Co. anzeigen und für Sprachbefehle verwenden |
19
+ | Gerätetyp | Der Matter-Gerätetyp (siehe unten); bestimmt, welche Gruppenadress-Felder erscheinen |
20
+ | Status beim Start lesen | Sendet beim Start ein `GroupValue_Read` an die Status-GAs, damit die Matter-Attribute gefüllt sind |
21
21
 
22
- ## Geräte
23
-
24
- Jede Zeile ist ein Gerät, das Alexa & Co. anzeigen. Wähle den **Typ**, gib den **Namen** ein, den der Assistent verwendet, und fülle die Gruppenadressen aus (mit ETS-Autovervollständigung):
22
+ ## Gerätetypen und Gruppenadressen
25
23
 
26
24
  |Typ|Gruppenadressen|
27
25
  |--|--|
@@ -36,29 +34,20 @@ Jede Zeile ist ein Gerät, das Alexa & Co. anzeigen. Wähle den **Typ**, gib den
36
34
  | Rauch-/CO-Melder | Rauchalarm Status-GA + optionale CO-Alarm Status-GA (DPT 1.005): kritische Benachrichtigungen auf dem Telefon |
37
35
  | Wasserleckmelder | Leckage Status-GA (DPT 1.005) |
38
36
  | Luftqualitätssensor (CO2) | CO2 Status-GA in ppm (DPT 9.008); die Luftqualitätsklasse (gut/mäßig/schlecht...) wird automatisch abgeleitet |
39
- | Saugroboter | **Nur Flow**: keine Gruppenadressen. Aktiviere die Node-PINs: Befehle des Assistenten ("Reinigung starten", Pause/Fortsetzen/zur Basis) kommen am Output als `rvcmode`/`rvccommand` an; melde den Zustand zurück mit `msg.payload = { device, function: "rvcstate", value: "running"|"docked"|"charging"|"paused"|"error" }` und den Modus mit `function: "rvcmode", value: "cleaning"|"idle"`. Integriere deinen Roomba/Roborock mit beliebigen Node-RED-Nodes und stelle ihn Alexa/Apple bereit |
37
+ | Saugroboter | **Nur Flow**: keine Gruppenadressen. Aktiviere die Node-PINs: Befehle des Assistenten ("Reinigung starten", Pause/Fortsetzen/zur Basis) kommen am Output als `rvcmode`/`rvccommand` an; melde den Zustand zurück mit `msg.payload = { function: "rvcstate", value: "running"|"docked"|"charging"|"paused"|"error" }` und den Modus mit `function: "rvcmode", value: "cleaning"|"idle"` |
40
38
 
41
39
  - **Befehls-GA**: wird auf den KNX-Bus geschrieben, wenn der Assistent einen Befehl sendet.
42
40
  - **Status-GA**: wird vom Bus gelesen, um die Matter-Attribute (und die Apps) aktuell zu halten.
43
41
 
44
- ## Kopplung
45
-
46
- 1. **Deployen**, ein paar Sekunden warten, dann den Node erneut öffnen.
47
- 2. Das Kopplungs-Panel zeigt den **QR-Code** und den **manuellen Code**: scannen oder in Alexa / Google Home / Apple Home eingeben ("Matter-Gerät hinzufügen").
48
- 3. Mehrere Controller können mit derselben Bridge gekoppelt werden (Matter Multi-Fabric).
49
-
50
- Der Button **Kopplung zurücksetzen** entfernt alle gekoppelten Controller und startet die Kopplungs-Ankündigung neu.
51
-
52
42
  ## Node-PINs
53
43
 
54
44
  Wenn du die Input/Output-PINs des Nodes aktivierst:
55
45
 
56
- - **Input**: aktualisiere den Matter-Zustand eines virtuellen Geräts aus dem Flow, ohne über den KNX-Bus zu gehen: `msg.payload = { device: "Küchenlicht", function: "onoff", value: true }` (`device` akzeptiert den Namen oder die interne ID; `function` ist eine von `onoff`, `level`, `position`, `temperature`, `humidity`, `illuminance`, `occupancy`, `contact`, `currenttemp`, `setpoint`). Nützlich, um im Flow berechnete Werte (z.B. einen virtuellen Sensor) für Alexa & Co. bereitzustellen.
57
- - **Output**: Jeder von einem Matter-Controller empfangene Befehl wird an den Flow weitergeleitet: `msg.topic` = Gerätename, `msg.payload` = Wert, `msg.matter` = der rohe Befehl. Geräte ohne Befehls-GA werden zu **Nur-Flow-Geräten**: Der Befehl erreicht deinen Flow und du entscheidest, was damit geschieht.
46
+ - **Input**: aktualisiere den Matter-Zustand aus dem Flow, ohne den KNX-Bus: `msg.payload = { function: "onoff", value: true }` (`function` ist eine von `onoff`, `level`, `rgb`, `colortemp`, `position`, `temperature`, `humidity`, `illuminance`, `occupancy`, `contact`, `currenttemp`, `setpoint`, `fanspeed`, `smoke`, `co`, `leak`, `co2`, `rvcstate`, `rvcmode`). Nützlich, um im Flow berechnete Werte (z.B. einen virtuellen Sensor) für Alexa & Co. bereitzustellen.
47
+ - **Output**: Jeder von einem Matter-Controller empfangene Befehl wird an den Flow weitergeleitet: `msg.topic` = Gerätename, `msg.payload` = Wert, `msg.matter` = der rohe Befehl. Ein Gerät ohne Befehls-GAs wird zum **Nur-Flow-Gerät**.
58
48
 
59
49
  ## Hinweise
60
50
 
61
- - Der Node-RED-Host muss **IPv6 link-local** aktiviert haben (Standard-Matter-Anforderung) und vom Controller im lokalen Netzwerk erreichbar sein.
62
- - Die Bridge-Identität wird in `knxultimatestorage/matter` im Node-RED-Benutzerverzeichnis gespeichert: Re-Deploys erfordern KEINE neue Kopplung.
63
- - Umbenennungen und neue Geräte werden von den Controllern automatisch übernommen; entfernte Geräte verschwinden aus den Apps.
51
+ - Die Matter-Identität des Geräts ist an diesen Node gebunden: Wird der Node gelöscht und neu angelegt, sehen die Apps ein brandneues Gerät.
52
+ - Hinzugefügte/umbenannte/entfernte Device-Nodes werden von den gekoppelten Controllern innerhalb von Sekunden übernommen, ohne die Bridge neu zu koppeln.
64
53
  </script>
@@ -69,7 +69,10 @@
69
69
  "reset_button": "Kopplung zurücksetzen",
70
70
  "reset_confirm": "ALLE gekoppelten Controller entfernen und die Kopplung neu starten? Die Geräte verschwinden aus Alexa/Google/Apple.",
71
71
  "reset_ok": "Kopplung zurückgesetzt. Die Bridge wartet wieder auf Kopplung."
72
- }
72
+ },
73
+ "bridge": "Matter-Bridge",
74
+ "device_name": "Name (von Alexa & Co. angezeigt)",
75
+ "device_help": "Wähle den Gerätetyp und gib ihm den Namen, den der Sprachassistent verwendet, dann fülle die Gruppenadressen aus. Das KNX-Gateway ist optional: ohne, aktiviere die Node-PINs und steuere das Gerät über den Flow."
73
76
  },
74
77
  "common": {
75
78
  "ga": "GA",
@@ -0,0 +1,34 @@
1
+ <script type="text/markdown" data-help-name="matterbridge-config">
2
+ # Matter Bridge (BETA)
3
+
4
+ > Dieser Node ist in **BETA**: Er funktioniert, aber Details können sich zwischen Releases noch ändern.
5
+
6
+ ## Übersicht
7
+
8
+ Dieser Konfigurations-Node ist die **Matter-Bridge selbst**: Er betreibt den Matter-Server, den Alexa, Google Home, Apple Home (oder jeder Matter-Controller) **einmal** koppeln. Jeder **Matter Bridge device**-Node in deinen Flows verweist hierher und erscheint in den Apps als ein Gerät der Bridge.
9
+
10
+ ## Konfiguration
11
+
12
+ |Feld|Beschreibung|
13
+ |--|--|
14
+ | Name | Der Name dieses Konfigurations-Nodes in Node-RED |
15
+ | Name der Matter-Bridge | Wie die Bridge selbst in den Matter-Apps heißt |
16
+ | Port | UDP-Port des Matter-Servers (Standard 5540). Jede Bridge braucht ihren eigenen Port, daher sind **mehrere unabhängige Bridges** möglich |
17
+
18
+ ## Kopplung
19
+
20
+ 1. **Deployen**, ein paar Sekunden warten, dann diesen Node erneut öffnen.
21
+ 2. Das Kopplungs-Panel zeigt den **QR-Code** und den **manuellen Code**: scannen oder in Alexa / Google Home / Apple Home eingeben ("Matter-Gerät hinzufügen").
22
+ 3. Mehrere Controller können mit derselben Bridge gekoppelt werden (Matter Multi-Fabric).
23
+
24
+ Der Button **Kopplung zurücksetzen** entfernt alle gekoppelten Controller und startet die Kopplungs-Ankündigung neu.
25
+
26
+ ## Identität und Speicherung
27
+
28
+ Die Bridge-Identität ist an diesen Konfigurations-Node gebunden und wird in `knxultimatestorage/matter` im Node-RED-Benutzerverzeichnis gespeichert: Re-Deploys (auch mit geändertem Port oder Namen) erfordern **KEINE** neue Kopplung. Nur das Löschen dieses Konfigurations-Nodes und das Anlegen eines neuen ändert die Identität — in dem Fall die alte Bridge aus der Matter-App entfernen und neu koppeln.
29
+
30
+ ## Hinweise
31
+
32
+ - Der Node-RED-Host muss **IPv6 link-local** aktiviert haben (Standard-Matter-Anforderung) und von den Controllern im lokalen Netzwerk erreichbar sein.
33
+ - Hinzugefügte/umbenannte/entfernte Device-Nodes werden von den gekoppelten Controllern innerhalb von Sekunden übernommen, ohne neue Kopplung.
34
+ </script>
@@ -0,0 +1,20 @@
1
+ {
2
+ "matterbridge-config": {
3
+ "properties": {
4
+ "title": "Matter Bridge",
5
+ "intro": "Dieser Konfigurations-Node ist die Matter-Bridge selbst: Alexa, Google Home, Apple Home (oder jeder Matter-Controller) koppeln sie einmal und sehen alle KNX-Geräte, die du ihr zuweist. Füge \"Matter Bridge device\"-Nodes in deinen Flows hinzu und verweise sie hierher. Zuerst deployen, dann erneut öffnen für den Kopplungscode.",
6
+ "node-config-input-name": "Name",
7
+ "bridge_name": "Name der Matter-Bridge",
8
+ "port": "Port",
9
+ "pairing_title": "Kopplung (Alexa, Google Home, Apple Home...)",
10
+ "not_running": "Die Matter-Bridge läuft noch nicht. Deployen, ein paar Sekunden warten und dann auf Aktualisieren klicken.",
11
+ "commissioned": "Bridge mit diesen Controllern gekoppelt:",
12
+ "awaiting": "Warte auf Kopplung. Scanne den QR-Code oder gib den manuellen Code in deiner Matter-App ein:",
13
+ "qr_link": "QR-Code im Browser öffnen",
14
+ "deploy_first": "Bitte zuerst diesen Konfigurations-Node deployen und dann auf Aktualisieren klicken.",
15
+ "reset_button": "Kopplung zurücksetzen",
16
+ "reset_confirm": "ALLE gekoppelten Controller entfernen und die Kopplung neu starten? Die Geräte verschwinden aus Alexa/Google/Apple.",
17
+ "reset_ok": "Kopplung zurückgesetzt. Die Bridge wartet wieder auf Kopplung."
18
+ }
19
+ }
20
+ }
@@ -16,6 +16,7 @@ A native MQTT bridge with Home Assistant discovery. It needs an MQTT broker reac
16
16
  - *Flow messages* — the node exposes an input pin and an output pin. Wire the output of a KNXUltimate node in **Universal** mode to the input (KNX bus → MQTT) and the output pin to the input of another KNXUltimate node in **Universal** mode (MQTT → KNX bus).
17
17
  - **Broker URL / Username / Password** — connection to your MQTT broker.
18
18
  - **Base topic / Discovery prefix** — root topic for state/command topics and the HA discovery prefix (default `homeassistant`).
19
+ - **Entity name format** — how the Home Assistant entity names are built from the ETS import, whose names start with the group-address path, e.g. `(Lights->Ground floor) Living room`. Choose *As imported from ETS* (default), *Name first* (`Living room (Lights->Ground floor)`), *Name only* (`Living room`) or *Name + group address* (`Living room (0/1/2)`).
19
20
  - **Group addresses to expose** — every address imported in the KNX gateway (ETS list) is shown with a checkbox. Ticked addresses are published as Home Assistant entities, typed automatically from the DPT (switch, sensor, binary_sensor, number, text). Use the filter box and the *Select all* / *Select none* buttons. By default all addresses are selected. Each row also has a **Read only** toggle: a read-only address is still published to Home Assistant (its state stays visible) but never accepts commands back to the KNX bus (switches become binary_sensors, numbers become sensors). The *Set read only* / *Clear read only* buttons apply it to all currently shown addresses.
20
21
  - **Covers & Thermostats** — group several addresses into one entity:
21
22
  - *Cover*: Up/Down GA (1.008), optional Stop GA (1.007), optional Set/Status position GA (5.001). *Invert position* maps the KNX convention (0% = open) to Home Assistant (100% = open).
@@ -22,6 +22,12 @@
22
22
  "base_topic": "Base topic",
23
23
  "discovery": "Publish Home Assistant discovery",
24
24
  "discovery_prefix": "Discovery prefix",
25
+ "name_format": "Entity name format",
26
+ "name_format_full": "As imported from ETS: (Main group->Middle group) Name",
27
+ "name_format_name_first": "Name first: Name (Main group->Middle group)",
28
+ "name_format_name_only": "Name only (remove the ETS group path)",
29
+ "name_format_name_ga": "Name + group address: Name (1/2/3)",
30
+ "name_format_hint": "How the Home Assistant entity names are built from the imported ETS names, which start with the group-address path.",
25
31
  "hint": "Requires an MQTT broker reachable by both Node-RED and Home Assistant, with the MQTT integration enabled in HA. Entities appear under a device named after this node. KNX bus values are published to MQTT and writable datapoints accept commands from Home Assistant.",
26
32
  "exposed_gas": "Group addresses to expose",
27
33
  "exposed_gas_hint": "Tick the group addresses you want to publish to Home Assistant. By default every imported address is selected. Addresses used by a cover/thermostat below are handled there and don't need to be ticked here.",
@@ -1,27 +1,25 @@
1
1
  <script type="text/markdown" data-help-name="knxUltimateMatterBridge">
2
- # Matter Bridge (BETA)
2
+ # Matter Bridge device (BETA)
3
3
 
4
4
  > This node is in **BETA**: it works, but details may still change between releases.
5
5
 
6
6
  ## Overview
7
7
 
8
- The Matter Bridge node exposes **KNX group addresses as Matter devices**: Alexa, Google Home, Apple Home (or any Matter controller) commission this bridge **once** and see all your configured KNX devices, with the names you typed, ready for app and voice control.
8
+ Each Matter Bridge device node exposes **one KNX device as a Matter device**: the paired controllers (Alexa, Google Home, Apple Home...) see it, with the name you typed, ready for app and voice control. Point it to a **Matter Bridge** configuration node (the actual bridge, paired once - the pairing QR code lives there) and add as many device nodes as you want, anywhere in your flows.
9
9
 
10
- This is the opposite direction of the *Matter Device* node: there KNX controls a Matter device, here Matter controllers control KNX.
10
+ This is the opposite direction of the *Matter Device* node: there KNX controls a Matter device, here the Matter controllers control KNX.
11
11
 
12
12
  ## Configuration
13
13
 
14
14
  |Field|Description|
15
15
  |--|--|
16
- | KNX GW | KNX gateway used for telegrams. **Optional**: without a gateway the bridge works in flow-only mode — enable the node PINs and drive every device with flow messages |
17
- | Matter bridge name | How the bridge itself is named in the Matter apps |
18
- | Port | UDP port of the Matter server (default 5540). Only one bridge node per Node-RED instance. |
19
- | Devices | The KNX virtual devices exposed on Matter (see below) |
20
- | Read status at startup | Sends a `GroupValue_Read` to every status GA at startup, so the Matter attributes are populated |
16
+ | Matter bridge | The Matter Bridge configuration node this device belongs to |
17
+ | KNX GW | KNX gateway used for telegrams. **Optional**: without it the device runs in flow-only mode via the node PINs. Auto-selected when your project has only one gateway |
18
+ | Name | What Alexa & Co. show and use for voice commands |
19
+ | Device type | The Matter device type (see below); it drives which group address fields appear |
20
+ | Read status at startup | Sends a `GroupValue_Read` to the status GAs at startup, so the Matter attributes are populated |
21
21
 
22
- ## Devices
23
-
24
- Each row is one device shown by Alexa & Co. Pick the **type**, give it the **name** the assistant will use, then fill the group addresses (with ETS autocomplete):
22
+ ## Device types and group addresses
25
23
 
26
24
  |Type|Group addresses|
27
25
  |--|--|
@@ -36,29 +34,20 @@ Each row is one device shown by Alexa & Co. Pick the **type**, give it the **nam
36
34
  | Smoke/CO alarm | Smoke alarm status GA + optional CO alarm status GA (DPT 1.005): critical notifications on the phone |
37
35
  | Water leak detector | Leak status GA (DPT 1.005) |
38
36
  | Air quality sensor (CO2) | CO2 status GA in ppm (DPT 9.008); the air quality class (good/fair/moderate/poor...) is derived automatically |
39
- | Robot vacuum | **Flow-only**: no group addresses. Enable the node PINs: commands from the assistant ("start cleaning", pause/resume/go home) arrive on the output as `rvcmode`/`rvccommand`; report the state back with `msg.payload = { device, function: "rvcstate", value: "running"|"docked"|"charging"|"paused"|"error" }` and the mode with `function: "rvcmode", value: "cleaning"|"idle"`. Integrate your Roomba/Roborock with any Node-RED node and expose it to Alexa/Apple |
37
+ | Robot vacuum | **Flow-only**: no group addresses. Enable the node PINs: assistant commands ("start cleaning", pause/resume/go home) arrive on the output as `rvcmode`/`rvccommand`; report the state back with `msg.payload = { function: "rvcstate", value: "running"|"docked"|"charging"|"paused"|"error" }` and the mode with `function: "rvcmode", value: "cleaning"|"idle"` |
40
38
 
41
39
  - **Command GA**: written to the KNX bus when the assistant sends a command.
42
40
  - **Status GA**: read from the bus to keep the Matter attributes (and the apps) updated.
43
41
 
44
- ## Pairing
45
-
46
- 1. **Deploy**, wait a few seconds, then open the node again.
47
- 2. The pairing panel shows the **QR code** and the **manual pairing code**: scan or type it in Alexa / Google Home / Apple Home ("add Matter device").
48
- 3. Multiple controllers can be paired with the same bridge (Matter multi-fabric).
49
-
50
- The **Reset pairing** button removes all paired controllers and restarts the pairing advertising.
51
-
52
42
  ## Node PINs
53
43
 
54
44
  If you enable the node input/output PINs:
55
45
 
56
- - **Input**: update the Matter state of a virtual device from the flow, without going through the KNX bus: `msg.payload = { device: "Kitchen light", function: "onoff", value: true }` (`device` accepts the name or the internal id; `function` is one of `onoff`, `level`, `position`, `temperature`, `humidity`, `illuminance`, `occupancy`, `contact`, `currenttemp`, `setpoint`). Useful to expose flow-computed values (e.g. a virtual sensor) to Alexa & Co.
57
- - **Output**: every command received from a Matter controller is forwarded to the flow: `msg.topic` = device name, `msg.payload` = value, `msg.matter` = the raw command. Devices without a command GA become **flow-only devices**: the command reaches your flow and you decide what to do with it.
46
+ - **Input**: update the Matter state from the flow, without the KNX bus: `msg.payload = { function: "onoff", value: true }` (`function` is one of `onoff`, `level`, `rgb`, `colortemp`, `position`, `temperature`, `humidity`, `illuminance`, `occupancy`, `contact`, `currenttemp`, `setpoint`, `fanspeed`, `smoke`, `co`, `leak`, `co2`, `rvcstate`, `rvcmode`). Useful to expose flow-computed values (e.g. a virtual sensor) to Alexa & Co.
47
+ - **Output**: every command received from a Matter controller is forwarded to the flow: `msg.topic` = device name, `msg.payload` = value, `msg.matter` = the raw command. A device without command GAs becomes a **flow-only device**.
58
48
 
59
49
  ## Notes
60
50
 
61
- - The Node-RED host must have **IPv6 link-local** enabled (standard Matter requirement) and be reachable from the controller on the local network.
62
- - The bridge identity is stored in `knxultimatestorage/matter` inside the Node-RED user directory: re-deploys do NOT require a new pairing.
63
- - Device renames/additions are picked up by the controllers automatically; if you remove a device, it disappears from the apps.
51
+ - The Matter identity of the device is tied to this node: deleting the node and creating a new one makes the apps see a brand-new device.
52
+ - Added/renamed/removed device nodes are picked up by the paired controllers within seconds, without re-pairing the bridge.
64
53
  </script>
@@ -69,7 +69,10 @@
69
69
  "reset_button": "Reset pairing",
70
70
  "reset_confirm": "Remove ALL paired controllers and restart pairing? The devices will disappear from Alexa/Google/Apple.",
71
71
  "reset_ok": "Pairing reset. The bridge is now advertising for pairing again."
72
- }
72
+ },
73
+ "bridge": "Matter bridge",
74
+ "device_name": "Name (shown by Alexa & Co.)",
75
+ "device_help": "Pick the device type and give it the name the voice assistant will use, then fill the group addresses. The KNX gateway is optional: without it, enable the node PINs and drive the device from the flow."
73
76
  },
74
77
  "common": {
75
78
  "ga": "GA",
@@ -0,0 +1,34 @@
1
+ <script type="text/markdown" data-help-name="matterbridge-config">
2
+ # Matter Bridge (BETA)
3
+
4
+ > This node is in **BETA**: it works, but details may still change between releases.
5
+
6
+ ## Overview
7
+
8
+ This configuration node is the **Matter bridge itself**: it runs the Matter server that Alexa, Google Home, Apple Home (or any Matter controller) commission **once**. Every **Matter Bridge device** node in your flows points here and appears in the apps as one bridged device.
9
+
10
+ ## Configuration
11
+
12
+ |Field|Description|
13
+ |--|--|
14
+ | Name | The name of this configuration node in Node-RED |
15
+ | Matter bridge name | How the bridge itself is named in the Matter apps |
16
+ | Port | UDP port of the Matter server (default 5540). Each bridge needs its own port, so you can run **multiple independent bridges** |
17
+
18
+ ## Pairing
19
+
20
+ 1. **Deploy**, wait a few seconds, then open this node again.
21
+ 2. The pairing panel shows the **QR code** and the **manual pairing code**: scan or type it in Alexa / Google Home / Apple Home ("add Matter device").
22
+ 3. Multiple controllers can be paired with the same bridge (Matter multi-fabric).
23
+
24
+ The **Reset pairing** button removes all paired controllers and restarts the pairing advertising.
25
+
26
+ ## Identity and storage
27
+
28
+ The bridge identity is tied to this configuration node and stored in `knxultimatestorage/matter` inside the Node-RED user directory: re-deploys (even changing port or name) do **NOT** require a new pairing. Only deleting this configuration node and creating a new one changes the identity — in that case remove the old bridge from the Matter app and pair again.
29
+
30
+ ## Notes
31
+
32
+ - The Node-RED host must have **IPv6 link-local** enabled (standard Matter requirement) and be reachable from the controllers on the local network.
33
+ - Device nodes added/renamed/removed are picked up by the paired controllers within seconds, without re-pairing.
34
+ </script>
@@ -0,0 +1,20 @@
1
+ {
2
+ "matterbridge-config": {
3
+ "properties": {
4
+ "title": "Matter Bridge",
5
+ "intro": "This configuration node is the Matter bridge itself: Alexa, Google Home, Apple Home (or any Matter controller) pair it once and see every KNX device you attach to it. Add \"Matter Bridge device\" nodes across your flows and point them here. Deploy first, then reopen to get the pairing code.",
6
+ "node-config-input-name": "Name",
7
+ "bridge_name": "Matter bridge name",
8
+ "port": "Port",
9
+ "pairing_title": "Pairing (Alexa, Google Home, Apple Home...)",
10
+ "not_running": "The Matter bridge is not running yet. Deploy, wait a few seconds, then click refresh.",
11
+ "commissioned": "Bridge paired with these controllers:",
12
+ "awaiting": "Awaiting pairing. Scan the QR code or enter the manual code in your Matter app:",
13
+ "qr_link": "Open the QR code in the browser",
14
+ "deploy_first": "Deploy this configuration node first, then click refresh.",
15
+ "reset_button": "Reset pairing",
16
+ "reset_confirm": "Remove ALL paired controllers and restart pairing? The devices will disappear from Alexa/Google/Apple.",
17
+ "reset_ok": "Pairing reset. The bridge is now advertising for pairing again."
18
+ }
19
+ }
20
+ }
@@ -16,6 +16,7 @@ Un puente MQTT nativo con descubrimiento de Home Assistant. Requiere un broker M
16
16
  - *Mensajes de flujo* — el nodo muestra un pin de entrada y uno de salida. Conecta la salida de un nodo KNXUltimate en modo **Universal** al pin de entrada (bus KNX → MQTT) y el pin de salida a la entrada de otro nodo KNXUltimate en modo **Universal** (MQTT → bus KNX).
17
17
  - **URL del broker / Usuario / Contraseña** — conexión a tu broker MQTT.
18
18
  - **Topic base / Prefijo de descubrimiento** — topic raíz para los topics de estado/comando y el prefijo de descubrimiento de HA (predeterminado `homeassistant`).
19
+ - **Formato del nombre de entidad** — cómo se construyen los nombres de las entidades de Home Assistant a partir de la importación ETS, cuyos nombres empiezan por la ruta de grupos, p. ej. `(Luces->Planta baja) Salón`. Elige *Como se importó de ETS* (predeterminado), *Nombre primero* (`Salón (Luces->Planta baja)`), *Solo el nombre* (`Salón`) o *Nombre + dirección de grupo* (`Salón (0/1/2)`).
19
20
  - **Direcciones de grupo a exponer** — cada dirección importada en la pasarela KNX (lista ETS) se muestra con una casilla. Las direcciones marcadas se publican como entidades de Home Assistant, tipadas automáticamente a partir del DPT (switch, sensor, binary_sensor, number, text). Usa el filtro y los botones *Seleccionar todo* / *Deseleccionar todo*. Por defecto están todas seleccionadas. Cada fila tiene además una opción **Solo lectura**: una dirección de solo lectura se sigue publicando en Home Assistant (su estado permanece visible) pero nunca acepta comandos de vuelta al bus KNX (los switch pasan a binary_sensor y los number a sensor). Los botones *Marcar solo lectura* / *Quitar solo lectura* la aplican a todas las direcciones mostradas actualmente.
20
21
  - **Persianas y termostatos** — agrupan varias direcciones en una sola entidad:
21
22
  - *Persiana*: GA subir/bajar (1.008), GA stop opcional (1.007), GA posición comando/estado opcional (5.001). *Invertir posición* asigna la convención KNX (0% = abierto) a Home Assistant (100% = abierto).
@@ -22,6 +22,12 @@
22
22
  "base_topic": "Topic base",
23
23
  "discovery": "Publicar descubrimiento de Home Assistant",
24
24
  "discovery_prefix": "Prefijo de descubrimiento",
25
+ "name_format": "Formato del nombre de entidad",
26
+ "name_format_full": "Como se importó de ETS: (Grupo principal->Grupo intermedio) Nombre",
27
+ "name_format_name_first": "Nombre primero: Nombre (Grupo principal->Grupo intermedio)",
28
+ "name_format_name_only": "Solo el nombre (eliminar la ruta ETS)",
29
+ "name_format_name_ga": "Nombre + dirección de grupo: Nombre (1/2/3)",
30
+ "name_format_hint": "Cómo se construyen los nombres de las entidades de Home Assistant a partir de los nombres importados de ETS, que empiezan por la ruta de grupos.",
25
31
  "hint": "Requiere un broker MQTT accesible tanto por Node-RED como por Home Assistant, con la integración MQTT activada en HA. Las entidades aparecen bajo un dispositivo con el nombre de este nodo. Los valores del bus KNX se publican en MQTT y los datapoints escribibles aceptan comandos desde Home Assistant.",
26
32
  "exposed_gas": "Direcciones de grupo a exponer",
27
33
  "exposed_gas_hint": "Marca las direcciones de grupo que quieres publicar en Home Assistant. Por defecto están todas seleccionadas. Las direcciones usadas por una persiana/termostato (abajo) se gestionan allí y no necesitan marcarse aquí.",
@@ -1,11 +1,11 @@
1
1
  <script type="text/markdown" data-help-name="knxUltimateMatterBridge">
2
- # Matter Bridge (BETA)
2
+ # Matter Bridge device (BETA)
3
3
 
4
4
  > Este nodo está en **BETA**: funciona, pero algunos detalles pueden cambiar entre versiones.
5
5
 
6
6
  ## Descripción general
7
7
 
8
- El nodo Matter Bridge expone las **direcciones de grupo KNX como dispositivos Matter**: Alexa, Google Home, Apple Home (o cualquier controlador Matter) emparejan este bridge **una sola vez** y ven todos tus dispositivos KNX configurados, con los nombres que hayas elegido, listos para el control por app y por voz.
8
+ Cada nodo Matter Bridge device expone **un dispositivo KNX como dispositivo Matter**: los controladores emparejados (Alexa, Google Home, Apple Home...) lo ven, con el nombre que hayas elegido, listo para el control por app y por voz. Apúntalo a un nodo de configuración **Bridge Matter** (el bridge en sí, emparejado una sola vez - el QR de emparejamiento vive allí) y añade tantos nodos de dispositivo como quieras, en cualquier flow.
9
9
 
10
10
  Es la dirección opuesta al nodo *Matter Device*: allí KNX controla un dispositivo Matter, aquí los controladores Matter controlan KNX.
11
11
 
@@ -13,15 +13,13 @@ Es la dirección opuesta al nodo *Matter Device*: allí KNX controla un disposit
13
13
 
14
14
  |Campo|Descripción|
15
15
  |--|--|
16
- | GW KNX | Gateway KNX usado para los telegramas. **Opcional**: sin gateway el bridge funciona en modo solo-flow — habilita los PINes del nodo y controla cada dispositivo con mensajes del flow |
17
- | Nombre del bridge Matter | Cómo se llama el bridge en las apps Matter |
18
- | Puerto | Puerto UDP del servidor Matter (por defecto 5540). Solo un nodo bridge por instancia de Node-RED. |
19
- | Dispositivos | Los dispositivos KNX virtuales expuestos en Matter (ver abajo) |
20
- | Leer las GA de estado al inicio | Envía un `GroupValue_Read` a cada GA de estado al inicio, para poblar los atributos Matter |
16
+ | Bridge Matter | El nodo de configuración Bridge Matter al que pertenece este dispositivo |
17
+ | GW KNX | Gateway KNX usado para los telegramas. **Opcional**: sin él, el dispositivo funciona en modo solo-flow mediante los PINes del nodo. Se selecciona automáticamente si el proyecto tiene un solo gateway |
18
+ | Nombre | Lo que Alexa y cía. muestran y usan para los comandos de voz |
19
+ | Tipo de dispositivo | El tipo de dispositivo Matter (ver abajo); determina qué campos de dirección de grupo aparecen |
20
+ | Leer estado al inicio | Envía un `GroupValue_Read` a las GA de estado al inicio, para poblar los atributos Matter |
21
21
 
22
- ## Dispositivos
23
-
24
- Cada fila es un dispositivo mostrado por Alexa y cía. Elige el **tipo**, dale el **nombre** que usará el asistente y rellena las direcciones de grupo (con autocompletado ETS):
22
+ ## Tipos de dispositivo y direcciones de grupo
25
23
 
26
24
  |Tipo|Direcciones de grupo|
27
25
  |--|--|
@@ -36,29 +34,20 @@ Cada fila es un dispositivo mostrado por Alexa y cía. Elige el **tipo**, dale e
36
34
  | Alarma humo/CO | GA estado alarma de humo + GA estado alarma CO opcional (DPT 1.005): notificaciones críticas en el teléfono |
37
35
  | Detector de fugas de agua | GA estado fuga (DPT 1.005) |
38
36
  | Sensor de calidad del aire (CO2) | GA estado CO2 en ppm (DPT 9.008); la clase de calidad del aire (buena/regular/moderada/mala...) se deriva automáticamente |
39
- | Robot aspirador | **Solo-flow**: sin direcciones de grupo. Habilita los PINes del nodo: los comandos del asistente ("inicia la limpieza", pausa/reanudar/volver a la base) llegan a la salida como `rvcmode`/`rvccommand`; informa el estado con `msg.payload = { device, function: "rvcstate", value: "running"\|"docked"\|"charging"\|"paused"\|"error" }` y el modo con `function: "rvcmode", value: "cleaning"\|"idle"`. Integra tu Roomba/Roborock con cualquier nodo de Node-RED y exponlo a Alexa/Apple |
37
+ | Robot aspirador | **Solo-flow**: sin direcciones de grupo. Habilita los PINes del nodo: los comandos del asistente ("inicia la limpieza", pausa/reanudar/volver a la base) llegan a la salida como `rvcmode`/`rvccommand`; informa el estado con `msg.payload = { function: "rvcstate", value: "running"\|"docked"\|"charging"\|"paused"\|"error" }` y el modo con `function: "rvcmode", value: "cleaning"\|"idle"` |
40
38
 
41
39
  - **GA de comando**: se escribe en el bus KNX cuando el asistente envía un comando.
42
40
  - **GA de estado**: se lee del bus para mantener actualizados los atributos Matter (y las apps).
43
41
 
44
- ## Emparejamiento
45
-
46
- 1. Haz **deploy**, espera unos segundos y vuelve a abrir el nodo.
47
- 2. El panel de emparejamiento muestra el **código QR** y el **código manual**: escanéalo o escríbelo en Alexa / Google Home / Apple Home ("añadir dispositivo Matter").
48
- 3. Se pueden emparejar varios controladores con el mismo bridge (multi-fabric Matter).
49
-
50
- El botón **Restablecer emparejamiento** elimina todos los controladores emparejados y reinicia el anuncio de emparejamiento.
51
-
52
42
  ## PINes del nodo
53
43
 
54
44
  Si habilitas los PINes de entrada/salida del nodo:
55
45
 
56
- - **Entrada**: actualiza el estado Matter de un dispositivo virtual desde el flow, sin pasar por el bus KNX: `msg.payload = { device: "Luz cocina", function: "onoff", value: true }` (`device` acepta el nombre o el id interno; `function` es una de `onoff`, `level`, `position`, `temperature`, `humidity`, `illuminance`, `occupancy`, `contact`, `currenttemp`, `setpoint`). Útil para exponer a Alexa y cía. valores calculados en el flow (p.ej. un sensor virtual).
57
- - **Salida**: cada comando recibido de un controlador Matter se reenvía al flow: `msg.topic` = nombre del dispositivo, `msg.payload` = valor, `msg.matter` = el comando en bruto. Los dispositivos sin GA de comando se convierten en **dispositivos solo-flow**: el comando llega a tu flow y tú decides qué hacer con él.
46
+ - **Entrada**: actualiza el estado Matter desde el flow, sin pasar por el bus KNX: `msg.payload = { function: "onoff", value: true }` (`function` es una de `onoff`, `level`, `rgb`, `colortemp`, `position`, `temperature`, `humidity`, `illuminance`, `occupancy`, `contact`, `currenttemp`, `setpoint`, `fanspeed`, `smoke`, `co`, `leak`, `co2`, `rvcstate`, `rvcmode`). Útil para exponer a Alexa y cía. valores calculados en el flow (p.ej. un sensor virtual).
47
+ - **Salida**: cada comando recibido de un controlador Matter se reenvía al flow: `msg.topic` = nombre del dispositivo, `msg.payload` = valor, `msg.matter` = el comando en bruto. Un dispositivo sin GA de comando se convierte en un **dispositivo solo-flow**.
58
48
 
59
49
  ## Notas
60
50
 
61
- - El host de Node-RED debe tener **IPv6 link-local** habilitado (requisito estándar de Matter) y ser accesible desde el controlador en la red local.
62
- - La identidad del bridge se guarda en `knxultimatestorage/matter` dentro del directorio de usuario de Node-RED: los re-deploys NO requieren un nuevo emparejamiento.
63
- - Los cambios de nombre y los dispositivos añadidos se detectan automáticamente; si eliminas un dispositivo, desaparece de las apps.
51
+ - La identidad Matter del dispositivo está ligada a este nodo: si borras el nodo y creas uno nuevo, las apps ven un dispositivo completamente nuevo.
52
+ - Los nodos de dispositivo añadidos/renombrados/eliminados se detectan en pocos segundos, sin volver a emparejar el bridge.
64
53
  </script>
@@ -69,7 +69,10 @@
69
69
  "reset_button": "Restablecer emparejamiento",
70
70
  "reset_confirm": "¿Eliminar TODOS los controladores emparejados y reiniciar el emparejamiento? Los dispositivos desaparecerán de Alexa/Google/Apple.",
71
71
  "reset_ok": "Emparejamiento restablecido. El bridge vuelve a estar en espera de emparejamiento."
72
- }
72
+ },
73
+ "bridge": "Bridge Matter",
74
+ "device_name": "Nombre (mostrado por Alexa y cía.)",
75
+ "device_help": "Elige el tipo de dispositivo y dale el nombre que usará el asistente de voz, luego rellena las direcciones de grupo. El gateway KNX es opcional: sin él, habilita los PINes del nodo y controla el dispositivo desde el flow."
73
76
  },
74
77
  "common": {
75
78
  "ga": "GA",
@@ -0,0 +1,34 @@
1
+ <script type="text/markdown" data-help-name="matterbridge-config">
2
+ # Bridge Matter (BETA)
3
+
4
+ > Este nodo está en **BETA**: funciona, pero algunos detalles pueden cambiar entre versiones.
5
+
6
+ ## Descripción general
7
+
8
+ Este nodo de configuración es el **bridge Matter en sí**: ejecuta el servidor Matter que Alexa, Google Home, Apple Home (o cualquier controlador Matter) emparejan **una sola vez**. Cada nodo **Matter Bridge device** de tus flows apunta aquí y aparece en las apps como un dispositivo del bridge.
9
+
10
+ ## Configuración
11
+
12
+ |Campo|Descripción|
13
+ |--|--|
14
+ | Nombre | El nombre de este nodo de configuración en Node-RED |
15
+ | Nombre del bridge Matter | Cómo se llama el bridge en las apps Matter |
16
+ | Puerto | Puerto UDP del servidor Matter (por defecto 5540). Cada bridge necesita su propio puerto, por lo que puedes ejecutar **varios bridges independientes** |
17
+
18
+ ## Emparejamiento
19
+
20
+ 1. Haz **deploy**, espera unos segundos y vuelve a abrir este nodo.
21
+ 2. El panel de emparejamiento muestra el **código QR** y el **código manual**: escanéalo o escríbelo en Alexa / Google Home / Apple Home ("añadir dispositivo Matter").
22
+ 3. Se pueden emparejar varios controladores con el mismo bridge (multi-fabric Matter).
23
+
24
+ El botón **Restablecer emparejamiento** elimina todos los controladores emparejados y reinicia el anuncio de emparejamiento.
25
+
26
+ ## Identidad y almacenamiento
27
+
28
+ La identidad del bridge está ligada a este nodo de configuración y se guarda en `knxultimatestorage/matter` dentro del directorio de usuario de Node-RED: los re-deploys (incluso cambiando puerto o nombre) **NO** requieren un nuevo emparejamiento. Solo borrar este nodo de configuración y crear uno nuevo cambia la identidad — en ese caso elimina el bridge antiguo de la app Matter y vuelve a emparejar.
29
+
30
+ ## Notas
31
+
32
+ - El host de Node-RED debe tener **IPv6 link-local** habilitado (requisito estándar de Matter) y ser accesible desde los controladores en la red local.
33
+ - Los nodos de dispositivo añadidos/renombrados/eliminados se detectan en pocos segundos, sin volver a emparejar.
34
+ </script>
@@ -0,0 +1,20 @@
1
+ {
2
+ "matterbridge-config": {
3
+ "properties": {
4
+ "title": "Bridge Matter",
5
+ "intro": "Este nodo de configuración es el bridge Matter en sí: Alexa, Google Home, Apple Home (o cualquier controlador Matter) lo emparejan una vez y ven todos los dispositivos KNX que le conectes. Añade nodos \"Matter Bridge device\" en tus flows y apúntalos aquí. Haz deploy primero y vuelve a abrir para obtener el código.",
6
+ "node-config-input-name": "Nombre",
7
+ "bridge_name": "Nombre del bridge Matter",
8
+ "port": "Puerto",
9
+ "pairing_title": "Emparejamiento (Alexa, Google Home, Apple Home...)",
10
+ "not_running": "El bridge Matter aún no está en ejecución. Haz deploy, espera unos segundos y pulsa actualizar.",
11
+ "commissioned": "Bridge emparejado con estos controladores:",
12
+ "awaiting": "Esperando emparejamiento. Escanea el código QR o introduce el código manual en tu app Matter:",
13
+ "qr_link": "Abrir el código QR en el navegador",
14
+ "deploy_first": "Haz deploy de este nodo de configuración primero y pulsa actualizar.",
15
+ "reset_button": "Restablecer emparejamiento",
16
+ "reset_confirm": "¿Eliminar TODOS los controladores emparejados y reiniciar el emparejamiento? Los dispositivos desaparecerán de Alexa/Google/Apple.",
17
+ "reset_ok": "Emparejamiento restablecido. El bridge vuelve a estar en espera de emparejamiento."
18
+ }
19
+ }
20
+ }
@@ -16,6 +16,7 @@ Une passerelle MQTT native avec découverte Home Assistant. Nécessite un broker
16
16
  - *Messages de flux* — le nœud affiche une broche d'entrée et une de sortie. Reliez la sortie d'un nœud KNXUltimate en mode **Universel** à la broche d'entrée (bus KNX → MQTT) et la broche de sortie à l'entrée d'un autre nœud KNXUltimate en mode **Universel** (MQTT → bus KNX).
17
17
  - **URL du broker / Nom d'utilisateur / Mot de passe** — connexion à votre broker MQTT.
18
18
  - **Topic de base / Préfixe de découverte** — topic racine pour les topics d'état/commande et le préfixe de découverte HA (par défaut `homeassistant`).
19
+ - **Format du nom d'entité** — comment les noms des entités Home Assistant sont construits à partir de l'import ETS, dont les noms commencent par le chemin des groupes, p. ex. `(Lumières->Rez-de-chaussée) Salon`. Choisissez *Tel qu'importé d'ETS* (par défaut), *Nom d'abord* (`Salon (Lumières->Rez-de-chaussée)`), *Nom seul* (`Salon`) ou *Nom + adresse de groupe* (`Salon (0/1/2)`).
19
20
  - **Adresses de groupe à exposer** — chaque adresse importée dans la passerelle KNX (liste ETS) est affichée avec une case à cocher. Les adresses cochées sont publiées comme entités Home Assistant, typées automatiquement d'après le DPT (switch, sensor, binary_sensor, number, text). Utilisez le champ de filtre et les boutons *Tout sélectionner* / *Tout désélectionner*. Par défaut, toutes les adresses sont sélectionnées. Chaque ligne dispose aussi d'une option **Lecture seule** : une adresse en lecture seule est toujours publiée vers Home Assistant (son état reste visible) mais n'accepte jamais de commandes vers le bus KNX (les switch deviennent des binary_sensor et les number des sensor). Les boutons *Activer lecture seule* / *Retirer lecture seule* l'appliquent à toutes les adresses actuellement affichées.
20
21
  - **Volets et thermostats** — regroupent plusieurs adresses en une seule entité :
21
22
  - *Volet* : GA montée/descente (1.008), GA stop optionnelle (1.007), GA position commande/état optionnelle (5.001). *Inverser la position* fait correspondre la convention KNX (0% = ouvert) à Home Assistant (100% = ouvert).