Skip to content

[request] Add Matter client/controller (subscribe) APIs to the Matter Arduino library #126

Open
@hypnotoad08

Description

@hypnotoad08

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:

  1. A way to lookup/discover commissioned nodes (e.g. Matter.getDiscoveredNodeIds())
  2. An API to obtain a remote-node handle (e.g. Matter.getRemoteNode(nodeId))
  3. Methods to create client clusters (flags like CLUSTER_FLAG_CLIENT) on that handle
  4. A subscribe(attrId) or subscribeAll() method per client cluster
  5. A onAttributeReport(attrId, callback) hook for receiving updates
  6. A poll() or built-in pump to drive the subscribe engine in loop()

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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions