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

Feature request of a Matter standard over Thread (Project CHIP) firmware image for b-parasite #87

Open
Hedda opened this issue Dec 18, 2022 · 8 comments

Comments

@Hedda
Copy link
Contributor

Hedda commented Dec 18, 2022

I like to request an optional Matter over Thread firmware image for b-parasite as optional alternative to Bluetooth and Zigbee FW.

https://csa-iot.org/all-solutions/matter/

Battery-operated b-parasite device based on Nordic Semiconducor's nRF52840 radio module should be a SED ("Sleepy End Device") or SSED ("Synchronized Sleepy End Device") device on your Thread network.

https://openthread.io/guides/thread-primer/node-roles-and-types#device_types

  • Sleepy End Device (SED) = SED is usually off and wakes occasionally to receive messages from its parent.
  • Synchronized Sleepy End Device (SSED) = SSED is an enhanced SED. It transmits less data than SED and relies on receiving messages from its parent only in specified time intervals.

https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/ug_thread_commissioning.html#thread-ot-device-types

To add Matter devices over Thread, users will a Thread Border Router (e.g. OpenThread USB radio dongle) and a Matter controller.

https://www.theverge.com/22832127/matter-smart-home-products-thread-wifi-explainer

https://en.wikipedia.org/wiki/Matter_(standard)

https://en.wikipedia.org/wiki/Thread_(network_protocol)

FYI, since the new Matter standard (including Matter over Thread protocol) also relies on the same ZCL (Zigbee Cluster Library specification) for device clusters and attributes as the very latest revision of the Zigbee 3.0 specification, it, in theory, should mean that so as long as try to strictly adhere to cluster and attribute standard with the official Zigbee Cluster Library (R8) and Zigbee PRO 2017 (R22) Protocol Specification then should, again, in theory, an application made for Zigbee should also be compatibility to build a matching firmware for the Matter standard over Thread protocol:

Nordic Semi nRF52840 SoC b-parasite use already supported Thread protocol and now applications for the new Matter standard:

https://www.nordicsemi.com/products/matter

https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/ug_thread_commissioning.html#thread-ot-device-types

https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/samples/samples_matter.html

https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/samples/matter/template/README.html

https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/applications/matter_weather_station/README.html#matter-weather-station-app

https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/ug_matter_gs_adding_clusters.html#ug-matter-creating-accessory

https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/nrfconnect

https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-minimal-app/nrfconnect

https://webinars.nordicsemi.com/developing-matter-10-products-with-5

https://www.youtube.com/watch?v=9Ar13rMxGIk

For reference also check out:

https://github.com/project-chip/zap

https://github.com/project-chip/connectedhomeip/tree/master/examples/ota-requestor-app/ota-requestor-common

https://github.com/project-chip/connectedhomeip/tree/master/examples/common/QRCode

https://github.com/project-chip/connectedhomeip/tree/master/examples/common/screen-framework

PS: Home Assistant now support Matter and Thread via their new Home Assistant SkyConnect USB stick or Home Assistant Yellow:

https://www.home-assistant.io/blog/2022/12/07/release-202212/

https://www.crowdsupply.com/nabu-casa/home-assistant-yellow/updates/more-yellows-shipping-and-thread-plus-matter-updates

https://www.home-assistant.io/integrations/matter/

https://play.google.com/apps/testing/io.homeassistant.companion.android

https://www.home-assistant.io/skyconnect/

https://community.home-assistant.io/t/home-assistant-skyconnect-usb-stick-announced-will-be-compatible-with-both-zigbee-and-thread-including-matter-chip-over-thread/433594

https://www.home-assistant.io/blog/2021/09/13/home-assistant-yellow/

https://yellow.home-assistant.io/

PPS: Others that will soon get support for Matter over Thread is the upcoming hubs from Athom Homey and Samsung SmartThings, as well as integrated Thread radios inside some Google Nest Hub / speakers (for Google Home) and Amazon Echo (for Amazon Alexa) which it is said that later hardware models will get updated firmware for Matter controller.

@Hedda
Copy link
Contributor Author

Hedda commented Dec 18, 2022

btw, nRF offers possibility for concurrent/simultaneous multiprotocol support for Thread and Zigbee in parallel at the same time:

https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.4.2/nrf/ug_multiprotocol_support.html

https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.thread_zigbee.v1.0.0%2Fthread_multiprotocol.html

Another alternative to the dynamic multiprotocol option there is to support both Thread and Zigbee in the same firmware image and allow the end user to choose which of those protocols they want to use by commissioning the device to either a Thread network or a Zigbee network. To in that scenario, you do not support running both protocols at the same time.

One idea there could be to allow users to configure which protocol to use over Bluetooth, to enable Thread and/or Zigbee.

@rbaron
Copy link
Owner

rbaron commented Dec 18, 2022

I've been looking at Thread recently and it seems both interesting and feasible to put together a proof of concept based on the nRF Connect Thread Samples. The goal in separating the common core in a prstlib was exactly to make these things easier.
What it's currently not clear to me is how the Thread licensing/certification plays with an open source projects. Ideally I would want to create a clearly uncertified, experimental, DIY-style, dev-board-style firmware sample with Thread support, but I'm not 100% clear whether it's possible without becoming a member. I would love to understand how this works better.

@Hedda
Copy link
Contributor Author

Hedda commented Dec 19, 2022

Note to separate "Thread" from "Matter" at the application level, as Thread is more or less just the transport layer (similar to Wi-Fi) for the IP network dependency that is a prerequisite for the Matter device (e.i. the device in the application level).

That is, you can have a Thread device that does not use Matter, and you can have a Matter device that does not use Thread. That is the reason they refer Matter devices that uses Thread as "Matter over Thread" devices to clarify that both are used/needed then.

What it's currently not clear to me is how the Thread licensing/certification plays with an open source projects. Ideally I would want to create a clearly uncertified, experimental, DIY-style, dev-board-style firmware sample with Thread support, but I'm not 100% clear whether it's possible without becoming a member. I would love to understand how this works better.

As I understand it, the Matter standard still allows for uncertified products for DIY and development, etc. on a local Matter fabric network as long as the user's Matter controller enables support for adding uncertified products if the Matter controller support it (which open-source home automation solutions like Home Assistant should obviously support sooner or later if they do not already).

FYI, while the node-matter project by mfucci (which depends on project-chip's matter.js library) is still in early development it has already proven that it is possible to add virtual DIY node.js devices via the Matter to latest Apple iOS platform (which was the first commercial smart home platform to release support for Matter). That node-matter project does not use Thread or even an MCU radio but it is still a nice proof of concept that it is possible to add DIY devices to a Matter controller:

https://github.com/mfucci/node-matter

Home Assistant / Nabu Casa has also got a DIY workshop on how to build your own Matter device (for Wi-Fi) with an Espressif ESP32-C3 devkit, and while the Matter Integration installation instruction documentation for Home Assistant in that workshop is a little bit outdated (since Home Assistant 2022.12 has now been released with Matter support so no need to external development repositories for that6 part), the part about building your own Matter device using an Espressif ESP32-C3 devkit development board with their example applications and firmware should still be valid (again their workshop is currently only for Wi-Fi as just proof-of-concept).

https://www.home-assistant.io/blog/2022/05/29/matter-in-home-assistant-workshop-announcement/

https://www.youtube.com/watch?v=9fOHBl5w0_k&ab_channel=HomeAssistant

https://docs.google.com/document/d/1MldgA337wHTEx-vPkoxlCqKHrhVm5QIcHV32iLsv_2k/

https://nabucasa.github.io/matter-example-apps/

https://github.com/NabuCasa/matter-example-apps

Espressif has as well relevantly recently made available a new "ESP32-H2" series of SoC and radio module (which replace the WiFi radio part of the ESP32-C3) with an 802.15.4 radio supporting Zigbee 3.0, Thread, and Bluetooth (BLE 5.2), so I would expect there to come more examples soon on how to build DIY devices that use Matter over Thread based on it.

https://www.espressif.com/en/news/ESP32_H2

https://docs.espressif.com/projects/esp-matter/en/main/esp32/

https://github.com/espressif/esp-matter

Anyway, the Thread protocol is only the network layer part which does not require licensing or certification for DIY usage, same with Matter I believe, Matter is also a separate specification and that is part of the application layer. All commercial Matter devices need to be officially tested and certified by the CSA (Connectivity Standards Alliance) to get into their official database listing of CSA certified products as a signed "Certified End Product", which means commercial companies need to get their products certified and signed for marketing purposes if nothing less as certification is meant to help customers and companies to show that the device and firmware have been tested as a "Certified End Product" and registered in the official "Distributed Compliance Ledger (DCL)" for Matter certified devices (in which device signatures I believe is stored in a decentralized blockchain ledger that it meant to get regularly updated on all certified Matter controllers).

PS: Regarding interoperability for the Matter standard, it should be noted that even if a device is an official "Certified End Product" it is still up to each Matter controller to approve which devices it will allow an end user to add. So do not expect brand-centric manufacturers example the latest IKEA Trådfri "Dirigera" Gateway to allow users to add non-IKEA devices even though it could technically support it, and similar goes for other commercial hubs, such as Aqara and Tuya, etc. as they will probably all only allow you to add devices that have their own brand.

@rbaron
Copy link
Owner

rbaron commented Dec 19, 2022

Anyway, the Thread protocol is only the network layer part which does not require licensing or certification

Can you help me find a link to back this claim?

@Hedda
Copy link
Contributor Author

Hedda commented Dec 19, 2022

Licensing of code/binaries is one thing which is a little more black and white so that part should be easier to get what is approved.

Regardless I think for certification you have to read between the lines because I believe that the documentation about certification is really targeting companies that make and sell commercial products and as such do not cover the scenario of making DIY products as those are normally not certified as made du individuals and not companies. However, it is still nice that the SDK used has been pre-certified as that testing demonstrates compliance, and it will help if any company would ever like to get a specific product certified based on the code from this project.

https://csa-iot.org/all-solutions/matter/matter-faq/

https://www.threadgroup.org/What-is-Thread/Certification

https://devzone.nordicsemi.com/f/nordic-q-a/52448/thread-certification-needed

https://www.nordicsemi.com/products/matter

"Nordic is actively involved and one of the main contributors the development of Matter. We are the first company to receive a Thread 1.3 certification badge. This badge can be inherited by our customers for their Thread products and is a prerequisite for Matter over Thread."

As I understand it, you should only need a certification if you as a company make commercial products if plan on selling them a certified product in order to use their certificate badging (which then is per device) in order to be legally allowed to use the Matter badge for public marketing.

Also note that Matter device certification is separate from Thread device certification, and certification for both is actually needed if want to sell a device that is certified for Matter over Thread.

So if you are planning on selling commercial products as certified products then know that using the nRF Connect SDK or nRF5 SDK then the OpenThread pre-built binary libraries have already been pre-certified by the Thread Group for various Nordic Semiconductor devices so you can apply for a product-specific "certification by inheritance". What that means is that a device can be quickly certified via paperwork alone as no more testing is needed as long as you use their SDK as designed and meet the requirements for "certification by inheritance".

As such, certification should not be needed for DIY devices because they will by definition not get certified as no one is likely to pay in order to go through the certification process, and even if they did the certification would likely only be legally binding to the legal entity that submitted the device for certification.

https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/ug_thread_certification.html

https://www.nordicsemi.com/News/2017/09/Thread-certification

https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_tz_v4.2.0%2Fthread_certification.html

https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_tz_v3.2.0%2Fthread_openthread_certification.html

Disclaimer: I am not a lawyer.

@daniel-nicolai-hansten
Copy link

Hi

I am using Zephyr with Openthread on the b-parasite hardware. I have not implemented Matter yet.
The part of the code that posts to my backend would not fit with the rest of your project, but I could create a Zephyr project with boardfiles for the b-parasite. That could be a good startingpoint for people trying to get Matter support with nrf Connect.

Where in this repo (IE where in the folderstructure) should an eventual PR put the firmwarefiles for Zehyr/ nrf Connect?

@rbaron
Copy link
Owner

rbaron commented Mar 21, 2023

Hi @daniel-nicolai-hansten,

That's exciting, tks for joining in.

We extracted common board definitions and utilities into prstlib. I would be pretty picky that new firmwares must use the common devicetrees/Kconfig for all board revisions, as well as prstlib utils for initialization, io, logging, sensor sampling etc. So in a sense we already have the board definitions you're proposing to add.

As for the thread sample, as you noted, the application layer is pretty flexible and setup-dependent, in that we would have to define our own protocol on top of it. I have on my TODO list to get one of the nrf-connect sdk samples to b-parasite using the common prstlib, so hopefully I can get that to work soon.

I think a good contribution would be to link your standalone project here so we can take a look and learn from it. Tks!

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

3 participants