Open
Description
Summary
What’s the problem?
The current Arduino Matter library only implements server-side clusters and local device change callbacks. There are no APIs to:
- Discover or get a handle to a remote Matter node
- Create client clusters on that remote node
- Subscribe to attribute changes on a remote cluster
- Receive those updates via callbacks
Proposed solution
Add controller/client support alongside the existing server APIs:
- A way to lookup/discover commissioned nodes (e.g.
Matter.getDiscoveredNodeIds()
) - An API to obtain a remote-node handle (e.g.
Matter.getRemoteNode(nodeId)
) - Methods to create client clusters (flags like
CLUSTER_FLAG_CLIENT
) on that handle - A
subscribe(attrId)
orsubscribeAll()
method per client cluster - A
onAttributeReport(attrId, callback)
hook for receiving updates - A
poll()
or built-in pump to drive the subscribe engine inloop()
This would enable true peer-to-peer Matter applications (e.g. an EPD dashboard subscribing to a remote AQI sensor).
References
- Espressif’s native
esp_matter
component provides these client APIs (esp_matter_binding_create()
,esp_matter_cluster_*_client_create()
,esp_matter_binding_subscribe()
) - The release notes for v2.1.0 mention “device change callbacks,” but that only covers local clusters
- Example in
File → Examples → Matter → matter_lightbulb_callback
is purely for local attribute changes
Thanks for considering this enhancement!