Matter over Thread - Discovered but not accepted

Hello everyone, I would need your help with the integration of a Matter bulb.
Starting point:
IKEA Dirigera, approx. 15 Matter over Thread devices (bulbs, temperature sensors, remotes, ESP32 chips)
Previous procedure:
Get new code via IKEA Dirigera, add Matter device in Gladys integrations, enter code, start scan, add.
Now, however:

  1. IKEA bulb:

  1. First scan:

  2. Second scan:

  1. Again? OK, one more try:

You notice that Gladys detects the bulb at some point and even seems to have added it, but it doesn’t appear among the devices?

This is strange, unfortunately I don’t know a solution yet.

So far, I have always been able to add all Matter devices this way. The distance between the bulb and the hub is about 5 meters. Wi-Fi is working. All other devices are working.

Here is the corresponding Docker log excerpt:




I would be grateful if someone had an idea to solve this problem. Thanks in advance for your attention and support. Best regards, Tom

Hi everyone!

This topic is now in development.

A PR has been opened to fix the Matter pairing error « Node ID X is already commissioned » (update of matter.js to 0.17.9):

Feel free to follow the PR, test (optional, especially for small requests) and give your feedback here if needed.

Hi Tom,

Thanks for the logs, they are very informative! The key message is this one:

Error commissioning device: Error: Node ID 1 is already commissioned and can not be reused

then Node ID 2 ... in the next attempt. So it’s neither your lamp, nor the Wi-Fi, nor the Dirigera: the pairing itself is working fine (we can see that Gladys is talking to the bulb), it’s the Matter library used by Gladys (matter.js 0.17.6) that assigns the new bulb a node number already taken by one of your existing devices. You have 16 nodes (your devices + the Dirigera), and the internal counter has restarted from 1: each attempt « burns Â» a number, fails, and retries with the next one. This is a bug in matter.js, fixed upstream in version 0.17.7.

I have prepared the fix on the Gladys side (update of matter.js to 0.17.9): #3122.

It will be in the next release.

@ruegerth The fix is live in Gladys Assistant 5.1.0 :slight_smile:

Wow, wow, wow
 Thank you so much, really, for this ultra-fast response and for your help
 I was already on the verge of despair. I’ll test it tomorrow and keep you posted.
Best regards,
Tom

Already tested, Gladys version 5.1.0:

It’s so fast that you don’t even have time to « look »  Everything is settled in a few seconds.

Excellent work, thank you so much for your help

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