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:
Vous remarquez que Gladys détecte l’ampoule à un moment donné et semble même l’avoir ajoutée, mais elle n’apparaît pas parmi les appareils ?
C’est étrange, je ne connais malheureusement pas de solution pour l’instant.
Jusqu’à présent, j’ai toujours réussi à ajouter tous les appareils Matter de cette manière. La distance entre l’ampoule et le hub est d’environ 5 mètres. Le Wi-Fi fonctionne. Tous les autres appareils fonctionnent.
Voici l’extrait correspondant du journal de Docker :
…
Je serais ravi si quelqu’un avait une idée pour résoudre ce problème. Merci d’avance pour votre attention et votre soutien. Cordialement, Tom
Salut tout le monde !
Ce sujet est désormais en cours de développement .
Une PR a été ouverte pour corriger l’erreur de pairing Matter « Node ID X is already commissioned » (mise à jour de matter.js vers 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)_
N’hésitez pas à suivre la PR, à tester (optionnel, surtout pour les petites demandes) et à faire vos retours ici si besoin.
Salut Tom,
Merci pour les logs, ils sont très parlants ! Le message clé est celui-ci :
Error commissioning device: Error: Node ID 1 is already commissioned and can not be reused
puis Node ID 2 ... à l’essai suivant. Ce n’est donc ni ta lampe, ni le Wi-Fi, ni la Dirigera : l’appairage lui-même se passe bien (on voit que Gladys parle à l’ampoule), c’est la librairie Matter utilisée par Gladys (matter.js 0.17.6) qui attribue à la nouvelle ampoule un numéro de node déjà pris par un de tes appareils existants. Tu as 16 nodes (tes appareils + la Dirigera), et le compteur interne est reparti de 1 : chaque tentative « brûle » un numéro, échoue, et recommence au suivant. C’est un bug de matter.js, corrigé en amont dans la version 0.17.7.
J’ai préparé le correctif côté Gladys (mise à jour de matter.js en 0.17.9) : #3122 .
Il sera dans la prochaine release.
@ruegerth Le fix est live dans Gladys Assistant 5.1.0
Waouh, waouh, waouh… Merci beaucoup, vraiment beaucoup, pour cette réponse ultra-rapide et pour votre aide… J’étais déjà au bord du désespoir. Je vais tester ça demain et je vous tiendrai au courant.
Cordialement,
Tom
Déjà testé, Gladys version 5.1.0 :
C’est tellement rapide qu’on n’a même pas le temps de « regarder »… Tout est réglé en quelques secondes.
Excellent travail, merci beaucoup pour votre aide
ladys | 2026-09-22T00:15:24+0200 matter.handleNode.js:138 (MatterHandler.handleNode) Matter: Node 13 handled, 1 device(s) with features (connected)
gladys | 2026-09-22T00:15:24+0200 matter.handleNode.js:138 (MatterHandler.handleNode) Matter: Node 12 handled, 2 device(s) with features (connected)
gladys | 2026-09-22T00:15:24+0200 matter.handleNode.js:138 (MatterHandler.handleNode) Matter: Node 11 handled, 3 device(s) with features (connected)
gladys | 2026-09-22T00:15:24+0200 matter.handleNode.js:138 (MatterHandler.handleNode) Matter: Node 3 handled, 2 device(s) with features (connected)
gladys | 2026-09-22T00:15:24+0200 matter.refreshDevices.js:30 (MatterHandler.refreshDevices) Matter: Refresh complete, 19 device(s) with features discovered
gladys | 2026-09-22 00:15:59.959 WARN PeerConnection @1 :8 udp://[fd1a:9a82:f69e:1:6e6a:3dcd:5d61:badd]:5540 Peer error (retry in 5m): [channel-status-response] (Failure (1) / NoSharedTrustRoots (1)) Received general error status for protocol 0 (Sigma2(Resume))
gladys | 2026-09-22T00:18:05+0200 matter.setValue.js:72 (MatterHandler.setValue) Setting value for node 17, value = 0
gladys | 2026-09-22T00:18:06+0200 matter.setValue.js:72 (MatterHandler.setValue) Setting value for node 17, value = 1
gladys | 2026-09-22T00:19:26+0200 device.getDuckDbMigrationState.js:11 (DeviceManager.getDuckDbMigrationState) Device : getDuckDbMigrationState
gladys | 2026-09-22T00:19:26+0200 system.runHostPowerDbusCommand.js:156 (System.runHostPowerDbusCommand) System: running host power command CanReboot via docker-helper
gladys | 2026-09-22T00:19:26+0200 system.isDocker.js:13 (System.isDocker) System.isDocker: This system is running inside Docker.
gladys | 2026-09-22T00:19:26+0200 device.getDuckDbMigrationState.js:20 (DeviceManager.getDuckDbMigrationState) Device : getDuckDbMigrationState : isDuckDbMigrated: true
gladys | 2026-09-22T00:19:26+0200 device.getDuckDbMigrationState.js:21 (DeviceManager.getDuckDbMigrationState) Device : getDuckDbMigrationState : duckDbDeviceStateCount: 495039
gladys | 2026-09-22T00:19:26+0200 device.getDuckDbMigrationState.js:22 (DeviceManager.getDuckDbMigrationState) Device : getDuckDbMigrationState : sqliteDeviceStateCount: 0
gladys | 2026-09-22T00:19:26+0200 device.getDuckDbMigrationState.js:23 (DeviceManager.getDuckDbMigrationState) Device : getDuckDbMigrationState : sqliteDeviceStateAggregateCount: 0
gladys | 2026-09-22T00:19:27+0200 system.detectHostPowerManagement.js:69 (probeHostPowerCapabilities) System: host power management not reachable via docker-helper: Host power helper container exited with status 1: �Failed to open connection to « system » message bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
gladys |
gladys | 2026-09-22T00:19:57+0200 system.isDocker.js:13 (System.isDocker) System.isDocker: This system is running inside Docker.
gladys | 2026-09-22T00:20:27+0200 system.isDocker.js:13 (System.isDocker) System.isDocker: This system is running inside Docker.
gladys | 2026-09-22T00:20:57+0200 system.runHostPowerDbusCommand.js:156 (System.runHostPowerDbusCommand) System: running host power command CanReboot via docker-helper
gladys | 2026-09-22T00:20:57+0200 system.isDocker.js:13 (System.isDocker) System.isDocker: This system is running inside Docker.
gladys | 2026-09-22T00:20:57+0200 system.detectHostPowerMan