Hallo Miteinander, ich bräuchte eure Hilfe bei der Integration einer Matter Birne.
Ausgang:
IKEA Dirigera, ca. 15 Matter over Thread Geräte ( Birnen, Temperatursensoren, Fernbedienungen, ESP32 Chips)
Bisherige Vorgehensweise:
Über IKEA Dirigera neuen Code geholt, Gladys Integrationen Matter Gerät hinzufüge, Cod eingeben, Scan starten, hinzufügen.
Jetzt aber:
IKEA Birne:
Erster Scan:
Zweiter Scan:
Nochmals? OK ein Versuch:
Ihr seht, dass Gladys die Birne irgendwann erkennt und sie sogar hinzugefügt zu haben scheint, aber sie erscheint nicht unter den Geräten?
Das ist seltsam, ich kenne leider im Moment keine Lösung.
Bisher habe ich immer alle Matter-Geräte auf diese Weise hinzufügen können. Der Abstand zwischen der Birne und dem Hub beträgt etwa 5 Meter. Das WLAN funktioniert. Alle anderen Geräte funktionieren.
Hier ist der entsprechende Auszug aus dem Docker-Log:
…
Ich wäre dankbar, wenn jemand eine Idee hätte, wie man dieses Problem lösen könnte. Vielen Dank im Voraus für eure Aufmerksamkeit und Unterstützung. Viele Grüße, Tom
Hallo zusammen!
Dieses Thema ist nun in Entwicklung .
Ein PR wurde eröffnet, um den Matter-Pairing-Fehler „Node ID X ist bereits kommissioniert“ zu beheben (Aktualisierung von matter.js auf 0.17.9):
master ← claude/confident-hypatia-wpt1ah
ouvert 02:39PM - 21 Sep 26 UTC
### Description
Pairing a new Matter device could fail with:
```
matter.pairDe… vice.js:50 Error commissioning device: Error: Node ID 1 is already commissioned and can not be reused
```
and, on the next attempt, `Node ID 2 ...`, `Node ID 3 ...` — one node ID burned per attempt, on a controller that already has nodes 1–16.
**Root cause (matter.js 0.17.6, the version pinned by the service lockfile):** when allocating the next sequential node ID for a commissioning, `ControllerBehavior.allocatePeerAddress()` checks collisions through `IdentityService.peerAddressInUse()`, which in 0.17.6 only knew about addresses reserved at runtime (`peers.added` events). Nodes already commissioned by the controller were not taken into account, so as soon as the persisted `nextNodeId` counter was behind the existing nodes, the allocator handed out an ID that `ControllerCommissioner` then rejected against the `PeerSet` with `NodeIdConflictError`.
**Fix:** matter.js 0.17.7 ships *"Fix: Consider existing node IDs when determining the next node ID to commission"* — `peerAddressInUse()` now also consults the `PeerSet`:
```diff
peerAddressInUse(address) {
- return this.#reservedPeerAddresses.has(PeerAddress(address));
+ address = PeerAddress(address);
+ return this.#reservedPeerAddresses.has(address) || !!this.#node.env.maybeGet(PeerSet)?.has(address);
}
```
0.17.8 / 0.17.9 additionally bring fixes for unreachable peers and subscription re-establishment.
`server/services/matter/package.json` already declared `^0.17.6`, but the service lockfile pinned 0.17.6 and `cli/install_service_dependencies.js` runs `npm install`, which keeps a lockfile that satisfies the range — so nobody ever got the upstream fix. This PR bumps the service dependencies (`@matter/main`, `@project-chip/matter.js`) and the server devDependency (`@matter/main`) to `^0.17.9` and refreshes both lockfiles. Lockfile changes are limited to the `@matter/*` packages and their `@noble/hashes` dependency. No Gladys code change.
Verification done locally:
- `npm run test-service --service=matter`: 302 passing
- smoke-loaded the real 0.17.9 modules used by the service (`@matter/main`, `@matter/main/types`, `@matter/main/clusters`, `@project-chip/matter.js`) and confirmed the installed `IdentityService.peerAddressInUse()` carries the upstream fix
- `prettier --check` on the four changed manifest files
### Related request
Forum: https://community.gladysassistant.com/t/matter-over-thread-decouvert-mais-non-accepte/10881
### Checklist
- [x] If a forum topic or GitHub issue exists, the description links it (`Forum: https://community.gladysassistant.com/t/...` or `Closes #...`)
- [x] Tests pass: `cd server && npm run coverage` (Codecov requires 100% coverage on changed lines) and Cypress (`npm run cypress:run`) if the UI changed — dependency-only change, no JS lines touched; the Matter service suite (302 tests) passes locally
- [x] Linter and prettier pass on both front and server (`npm run eslint`, `npm run prettier`)
- [x] No undocumented breaking change
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01ThmubNV1qfGSC65L5cD3qc
---
_Generated by [Claude Code](https://claude.ai/code/session_01ThmubNV1qfGSC65L5cD3qc)_
## Summary by CodeRabbit
- **Chores**
- Updated internal components to newer versions.
- No user-facing feature changes, behavior changes, or interface updates are included in this release.
Zögert nicht, dem PR zu folgen, zu testen (optional, vor allem bei kleinen Anfragen) und euer Feedback hier zu hinterlassen, falls nötig.
Hallo Tom,
Danke für die Logs, sie sind sehr aussagekräftig! Die entscheidende Nachricht ist diese:
Error commissioning device: Error: Node ID 1 is already commissioned and can not be reused
dann Node ID 2 ... beim nächsten Versuch. Es ist also weder deine Lampe, noch das Wi-Fi, noch die Dirigera: Das Pairing selbst funktioniert (man sieht, dass Gladys mit der Glühbirne spricht), sondern die von Gladys verwendete Matter-Bibliothek (matter.js 0.17.6), die der neuen Glühbirne eine Node-ID zuweist, die bereits von einem deiner bestehenden Geräte belegt ist. Du hast 16 Nodes (deine Geräte + die Dirigera), und der interne Zähler startet bei 1: Jeder Versuch „verbrennt“ eine Nummer, scheitert und versucht es mit der nächsten. Das ist ein Bug in matter.js, der in der Version 0.17.7 behoben wurde.
Ich habe den Fix auf Gladys-Seite vorbereitet (Aktualisierung von matter.js auf 0.17.9): #3122 .
Er wird im nächsten Release enthalten sein.
@ruegerth Der Fix ist live in Gladys Assistant 5.1.0
Wau, wau, wau… Vielen Dank, wirklich vielen Dank, für diese ultra-schnelle Antwort und für Ihre Hilfe… Ich war schon am Verzweifeln. Ich werde das morgen testen und Sie auf dem Laufenden halten.
Mit freundlichen Grüßen,
Tom
Bereits getestet, Gladys Version 5.1.0:
Es ist so schnell, dass man nicht einmal Zeit hat, es zu „betrachten“… Alles ist in wenigen Sekunden erledigt.
Exzellente Arbeit, vielen Dank für Ihre Hilfe
ladys | 2026-09-22T00:15:24+0200 matter.handleNode.js:138 (MatterHandler.handleNode) Matter: Node 13 bearbeitet, 1 Gerät(e) mit Funktionen (verbunden)
gladys | 2026-09-22T00:15:24+0200 matter.handleNode.js:138 (MatterHandler.handleNode) Matter: Node 12 bearbeitet, 2 Gerät(e) mit Funktionen (verbunden)
gladys | 2026-09-22T00:15:24+0200 matter.handleNode.js:138 (MatterHandler.handleNode) Matter: Node 11 bearbeitet, 3 Gerät(e) mit Funktionen (verbunden)
gladys | 2026-09-22T00:15:24+0200 matter.handleNode.js:138 (MatterHandler.handleNode) Matter: Node 3 bearbeitet, 2 Gerät(e) mit Funktionen (verbunden)
gladys | 2026-09-22T00:15:24+0200 matter.refreshDevices.js:30 (MatterHandler.refreshDevices) Matter: Aktualisierung abgeschlossen, 19 Gerät(e) mit Funktionen entdeckt
gladys | 2026-09-22 00:15:59.959 WARN PeerConnection @1 :8 udp://[fd1a:9a82:f69e:1:6e6a:3dcd:5d61:badd]:5540 Peer-Fehler (Wiederholung in 5m): [channel-status-response] (Failure (1) / NoSharedTrustRoots (1)) Allgemeiner Fehlerstatus für Protokoll 0 (Sigma2(Resume)) erhalten
gladys | 2026-09-22T00:18:05+0200 matter.setValue.js:72 (MatterHandler.setValue) Wert für Node 17 festlegen, Wert = 0
gladys | 2026-09-22T00:18:06+0200 matter.setValue.js:72 (MatterHandler.setValue) Wert für Node 17 festlegen, Wert = 1
gladys | 2026-09-22T00:19:26+0200 device.getDuckDbMigrationState.js:11 (DeviceManager.getDuckDbMigrationState) Gerät: getDuckDbMigrationState
gladys | 2026-09-22T00:19:26+0200 system.runHostPowerDbusCommand.js:156 (System.runHostPowerDbusCommand) System: Führe Host-Energiebefehl CanReboot über docker-helper aus
gladys | 2026-09-22T00:19:26+0200 system.isDocker.js:13 (System.isDocker) System.isDocker: Dieses System läuft in Docker.
gladys | 2026-09-22T00:19:26+0200 device.getDuckDbMigrationState.js:20 (DeviceManager.getDuckDbMigrationState) Gerät: getDuckDbMigrationState: isDuckDbMigrated: true
gladys | 2026-09-22T00:19:26+0200 device.getDuckDbMigrationState.js:21 (DeviceManager.getDuckDbMigrationState) Gerät: getDuckDbMigrationState: duckDbDeviceStateCount: 495039
gladys | 2026-09-22T00:19:26+0200 device.getDuckDbMigrationState.js:22 (DeviceManager.getDuckDbMigrationState) Gerät: getDuckDbMigrationState: sqliteDeviceStateCount: 0
gladys | 2026-09-22T00:19:26+0200 device.getDuckDbMigrationState.js:23 (DeviceManager.getDuckDbMigrationState) Gerät: getDuckDbMigrationState: sqliteDeviceStateAggregateCount: 0
gladys | 2026-09-22T00:19:27+0200 system.detectHostPowerManagement.js:69 (probeHostPowerCapabilities) System: Host-Energieverwaltung nicht über docker-helper erreichbar: Host-Energie-Helfer-Container wurde mit Status 1 beendet: �Fehler beim Öffnen der Verbindung zum « system »-Nachrichtenbus: Verbindung zur Socket /run/dbus/system_bus_socket konnte nicht hergestellt werden: Datei oder Verzeichnis nicht gefunden
gladys |
gladys | 2026-09-22T00:19:57+0200 system.isDocker.js:13 (System.isDocker) System.isDocker: Dieses System läuft in Docker.
gladys | 2026-09-22T00:20:27+0200 system.isDocker.js:13 (System.isDocker) System.isDocker: Dieses System läuft in Docker.
gladys | 2026-09-22T00:20:57+0200 system.runHostPowerDbusCommand.js:156 (System.runHostPowerDbusCommand) System: Führe Host-Energiebefehl CanReboot über docker-helper aus
gladys | 2026-09-22T00:20:57+0200 system.isDocker.js:13 (System.isDocker) System.isDocker: Dieses System läuft in Docker.
gladys | 2026-09-22T00:20:57+0200 system.detectHostPowerMan