Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Matter Device Type recommendation (CON-1459) #1196

Open
bilalmalik76 opened this issue Dec 7, 2024 · 13 comments
Open

Matter Device Type recommendation (CON-1459) #1196

bilalmalik76 opened this issue Dec 7, 2024 · 13 comments

Comments

@bilalmalik76
Copy link

We are working on a Matter device that supports multiple types of devices. It provides users the option to configure the device type through a configuration page. The Matter device can represent various types, such as on/off, dimmable, color control, etc. We need to dynamically add endpoints based on the device types selected by the user.

What are your recommendations for implementing this? Would using a bridge be a suitable option for such a Matter device?

@github-actions github-actions bot changed the title Matter Device Type recommendation Matter Device Type recommendation (CON-1459) Dec 7, 2024
@shubhamdp
Copy link
Contributor

Can you please check all_device_types_app, it uses the cli for choosing the device type.
NOTE: This lets you have only one device per factory reset.

@bilalmalik76
Copy link
Author

@shubhamdp we want to support multiple device types and at a time device can support 4-5 device types.

@shubhamdp
Copy link
Contributor

Well in that case, you can start building on top of all_device_types_app. You may have to define the upper limit for fitting in all these in your selected SoC.

@bilalmalik76
Copy link
Author

@shubhamdp what about Matter bridge device?

@shubhamdp
Copy link
Contributor

IMO, If you are bridging non-Matter devices to Matter then please go ahead, bridge is the solution for your problem. But, if you still want to use bridge you can do that and keep adding more bridged endpoints.

But, your question was to build the dynamic device and that is possible and we have demonstrated it in all_device_types_app. (NOTE: I'm unsure how the certification would work out for such an application)

@bilalmalik76
Copy link
Author

bilalmalik76 commented Dec 10, 2024

My device will have both matter and non-matter devices like it will get data over some non-matter protocol from non-matter devices. Regarding certification from where I can confirm it? Can you connect with someone with certification experience from espressif?

@chshu
Copy link
Collaborator

chshu commented Dec 18, 2024

Regarding certification, for each device type supported by your product, you need to declare them in the PICS file and provide the lab with instructions on how to enable each device type and conduct the required testing.

Since a bridge is also a Matter device type, you must list all possible bridged device types and prepare the necessary non-Matter devices for testing.

You may refer to certification for more instructions, and contact CSA for official answers.

@jonsmirl
Copy link
Contributor

Lighting is a special case, you are allowed to list the four of the device types on a single endpoint: on/off, dimmable, color temp, extended color. This is the simplest solution. You are not allowed to add more than those four.

You are not allowed to combine device types from different devices onto a single endpoint. Lighting is special because the four devices are a nested set. Each device type is a super set of the previous one.

It is possible to get fancier and dynamically change the list of device types... but none of the controller apps except Apple will recognize this. You need to update the Descriptor cluster to make Apple rescan.

A very advanced solution is to create a Matter bridge internal to the device with four endpoints for each possible lamp (on/off, dimmable, color temp, extended color) then only enable the correct one. That will work with all of the apps (Google, Amazon, Apple, Samsung) and display the right icons.

Unless you have a lot of free engineers available, I'd stick with the fist option.

@bilalmalik76
Copy link
Author

Hi @jonsmirl Thank you for your detailed response.

I understand it is possible for Lighting case. In one of our device which is already in certification phase, we added 12 on/off and dimmable endpoints. Because this device has fixed number of predefined endpoints with each endpoint having fixed on/off or dimmable clusters, it works fine on all ecosystems.

In the device we plan to develop, dynamic endpoints will be supported. However, once the user configures the device types through the user-programmable interface, they must stick to the selected device types unless they perform a Matter factory reset and recommission the device with different device types.

For instance, if the device is designed to support 12 endpoints, we will define fixed clusters for each endpoint. The user can then select the desired device type associated with each endpoint. Once the configuration is completed through the settings page, only the selected endpoints will be enabled and visible in the Matter app after commissioning.

@jonsmirl what do you think? Matter bridge is also something we are considering.

@jonsmirl
Copy link
Contributor

What you described will work. To do that dynamically and have it work on all of the apps, you have to make an internal bridge.

@bilalmalik76
Copy link
Author

@jonsmirl We are also thinking to go with internal bridge. what do you say about concerns of @jonsmirl and @chshu they mentioned above regarding testing?

@jonsmirl
Copy link
Contributor

I have not tried taking an internal bridge through testing

@bilalmalik76
Copy link
Author

@jonsmirl Thanks I will speak with ATL to discuss this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants