| # Matter |
| |
| [![Builds](https://github.com/project-chip/connectedhomeip/workflows/Builds/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/build.yaml) |
| |
| **Builds** |
| |
| [![Android](https://github.com/project-chip/connectedhomeip/workflows/Android/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/android.yaml) |
| [![Ameba](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20Ameba/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-ameba.yaml) |
| [![ASR](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20ASR/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-asr.yaml) |
| [![BouffaloLab](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20BouffaloLab/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-bouffalolab.yaml) |
| [![Darwin](https://github.com/project-chip/connectedhomeip/workflows/Darwin/badge.svg)](https://github.com/project-chip/connectedhomeip/blob/master/.github/workflows/darwin.yaml) |
| [![TI CC26X2X7](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20TI%20CC13XX_26XX/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-cc13xx_26xx.yaml) |
| [![TI CC32XX](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20TI%20CC32XX/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-cc32xx.yaml) |
| [![EFR32](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20EFR32/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-efr32.yaml) |
| [![ESP32](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20ESP32/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-esp32.yaml) |
| [![Infineon](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-infineon.yaml/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-infineon.yaml) |
| [![i.MX Linux](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20i.MX%20Linux/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-linux-imx.yaml) |
| [![K32W with SE051](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20K32W%20with%20SE051/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-k32w.yaml) |
| [![Linux ARM](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20Linux%20ARM/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-linux-arm.yaml) |
| [![Linux Standalone](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20Linux%20Standalone/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-linux-standalone.yaml) |
| [![Linux Standalone](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20Linux%20Standalone/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-linux-standalone.yaml) |
| [![Mbed OS](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20Mbed%20OS/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-mbed.yaml) |
| [![MW320](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20MW320/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-mw320.yaml) |
| [![nRF Connect SDK](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20nRF%20Connect%20SDK/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-nrfconnect.yaml) |
| [![Open IoT SDK](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20Open%20IoT%20SDK/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-openiotsdk.yaml) |
| [![QPG](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20QPG/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-qpg.yaml) |
| [![STM32](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20stm32/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-stm32.yaml) |
| [![Telink](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20Telink/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-telink.yaml) |
| [![Tizen](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20Tizen/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-tizen.yaml) |
| |
| **Tests** |
| |
| [![Unit / Integration Tests](https://github.com/project-chip/connectedhomeip/workflows/Unit%20/%20Integration%20Tests/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/unit_integration_test.yaml) |
| [![Cirque](https://github.com/project-chip/connectedhomeip/workflows/Cirque/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/cirque.yaml) |
| [![QEMU](https://github.com/project-chip/connectedhomeip/workflows/QEMU/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/qemu.yaml) |
| |
| **Tools** |
| |
| [![ZAP Templates](https://github.com/project-chip/connectedhomeip/workflows/ZAP/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/zap_templates.yaml) |
| |
| **Documentation** |
| |
| [![Documentation Build](https://github.com/project-chip/connectedhomeip/actions/workflows/docbuild.yaml/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/docbuild.yaml) |
| |
| - [Matter SDK documentation page](https://project-chip.github.io/connectedhomeip-doc/index.html) |
| |
| # About |
| |
| Matter (formerly Project CHIP) creates more connections between more objects, |
| simplifying development for manufacturers and increasing compatibility for |
| consumers, guided by the Connectivity Standards Alliance. |
| |
| # What is Matter? |
| |
| Matter is a unified, open-source application-layer connectivity standard built |
| to enable developers and device manufacturers to connect and build reliable, and |
| secure ecosystems and increase compatibility among connected home devices. It is |
| built with market-proven technologies using Internet Protocol (IP) and is |
| compatible with Thread and Wi-Fi network transports. Matter was developed by a |
| Working Group within the Connectivity Standards Alliance (Alliance). This |
| Working Group develops and promotes the adoption of the Matter standard, a |
| royalty-free connectivity standard to increase compatibility among smart home |
| products, with security as a fundamental design tenet. The vision that led major |
| industry players to come together to build Matter is that smart connectivity |
| should be simple, reliable, and interoperable. |
| |
| Matter simplifies development for manufacturers and increases compatibility for |
| consumers. |
| |
| The standard was built around a shared belief that smart home devices should be |
| secure, reliable, and seamless to use. By building upon Internet Protocol (IP), |
| Matter enables communication across smart home devices, mobile apps, and cloud |
| services and defines a specific set of IP-based networking technologies for |
| device certification. |
| |
| The Matter specification details everything necessary to implement a Matter |
| application and transport layer stack. It is intended to be used by implementers |
| as a complete specification. |
| |
| The Alliance officially opened the Matter Working Group on January 17, 2020, and |
| the specification is |
| [available](https://csa-iot.org/developer-resource/specifications-download-request/) |
| for adoption now. |
| |
| Visit [buildwithmatter.com](https://buildwithmatter.com) to learn more and read |
| the latest news and updates about the project. |
| |
| # Project Overview |
| |
| ## Development Goals |
| |
| Matter is developed with the following goals and principles in mind: |
| |
| **Unifying:** Matter is built with and on top of market-tested, existing |
| technologies. |
| |
| **Interoperable:** The specification permits communication between any |
| Matter-certified device, subject to users’ permission. |
| |
| **Secure:** The specification leverages modern security practices and protocols. |
| |
| **User Control:** The end user controls authorization for interaction with |
| devices. |
| |
| **Federated:** No single entity serves as a throttle or a single point of |
| failure for root of trust. |
| |
| **Robust:** The set of protocols specifies a complete lifecycle of a device — |
| starting with the seamless out-of-box experience, through operational protocols, |
| to device and system management specifications required for proper function in |
| the presence of change. |
| |
| **Low Overhead:** The protocols are practically implementable on low |
| compute-resource devices, such as MCUs. |
| |
| **Pervasive:** The protocols are broadly deployable and accessible, by |
| leveraging IP and being implementable on low-capability devices. |
| |
| **Ecosystem-Flexible:** The protocol is flexible enough to accommodate |
| deployment in ecosystems with differing policies. |
| |
| **Easy to Use:** The protocol provides smooth, cohesive, integrated provisioning |
| and out-of-box experience. |
| |
| **Open:** The Project’s design and technical processes are open and transparent |
| to the general public, including non-members wherever possible. |
| |
| ## Architecture Overview |
| |
| Matter aims to build a universal IPv6-based communication protocol for smart |
| home devices. The protocol defines the application layer that will be deployed |
| on devices and the different link layers to help maintain interoperability. The |
| following diagram illustrates the normal operational mode of the stack: |
| ![Matter Architecture Overview](docs/images/Matter_Arch_Overview.png) |
| |
| The architecture is divided into layers to help separate the different |
| responsibilities and introduce a good level of encapsulation among the various |
| pieces of the protocol stack. The vast majority of interactions flow through the |
| stack captured in the following Figure: |
| |
| ![Matter Stack Architecture](docs/images/Matter_Layered_Arch.png) |
| |
| 1. **Application:** High-order business logic of a device. For example, an |
| application that is focused on lighting might contain logic to handle turning |
| on/off the bulb as well as its color characteristics. |
| |
| 2) **Data Model:** The data layer corresponds to the data and verb elements that |
| help support the functionality of the application. The Application operates |
| on these data structures when there is an intent to interact with the device. |
| |
| 3. **Interaction Model:** The Interaction Model layer defines a set of |
| interactions that can be performed between a client and server device. For |
| example, reading or writing attributes on a server device would correspond to |
| application behavior on the device. These interactions operate on the |
| elements defined at the data model layer. |
| |
| 4) **Action Framing:** Once an action is constructed using the Interaction |
| Model, it is serialized into a prescribed packed binary format to encode for |
| network transmission. |
| |
| 5. **Security:** An encoded action frame is then sent down to the Security Layer |
| to encrypt and sign the payload to ensure that data is secured and |
| authenticated by both sender and receiver of a packet. |
| |
| 6. **Message Framing & Routing:** With an interaction encrypted and signed, the |
| Message Layer constructs the payload format with required and optional header |
| fields; which specify the message's properties and some routing information. |
| |
| 7) **IP Framing & Transport Management:** After the final payload has been |
| constructed, it is sent to the underlying transport protocol for IP |
| management of the data. |
| |
| # Current Status of Matter |
| |
| Matter’s design and technical processes are intended to be open and transparent |
| to the general public, including to Working Group non-members wherever possible. |
| The availability of this GitHub repository and its source code under an Apache |
| v2 license is an important and demonstrable step to achieving this commitment. |
| Matter endeavors to bring together the best aspects of market-tested |
| technologies and redeploy them as a unified and cohesive whole-system solution. |
| The overall goal of this approach is to bring the benefits of Matter to |
| consumers and manufacturers as quickly as possible. As a result, what you |
| observe in this repository is an implementation-first approach to the technical |
| specification, vetting integrations in practice. The Matter repository is |
| growing and evolving to implement the overall architecture. The repository |
| currently contains the security foundations, message framing and dispatch, and |
| an implementation of the interaction model and data model. The code examples |
| show simple interactions, and are supported on multiple transports -- Wi-Fi and |
| Thread -- starting with resource-constrained (i.e., memory, processing) silicon |
| platforms to help ensure Matter’s scalability. |
| |
| # How to Contribute |
| |
| We welcome your contributions to Matter. Read our contribution guidelines |
| [here](./CONTRIBUTING.md). |
| |
| # Building and Developing in Matter |
| |
| Instructions about how to build Matter can be found [here](./docs/README.md) . |
| |
| # Directory Structure |
| |
| The Matter repository is structured as follows: |
| |
| | File/Folder | Content | |
| | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | |
| | build | Build system support content and built output directories | |
| | build_overrides | Build system parameter customization for different platforms | |
| | config | Project configurations | |
| | credentials | Development and test credentials | |
| | docs | Documentation, including guides. Visit the [Matter SDK documentation page](https://project-chip.github.io/connectedhomeip-doc/index.html) to read it. | |
| | examples | Example firmware applications that demonstrate use of Matter | |
| | integrations | 3rd party integrations | |
| | scripts | Scripts needed to work with the Matter repository | |
| | src | Implementation of Matter | |
| | third_party | 3rd party code used by Matter | |
| | zzz_generated | ZAP generated template code - Revolving around cluster information | |
| | BUILD.gn | Build file for the GN build system | |
| | CODE_OF_CONDUCT.md | Code of conduct for Matter and contribution to it | |
| | CONTRIBUTING.md | Guidelines for contributing to Matter | |
| | LICENSE | Matter license file | |
| | REVIEWERS.md | PR reviewers | |
| | gn_build.sh | Build script for specific projects such as Android, EFR32, etc. | |
| | README.md | This file | |
| |
| # License |
| |
| Matter is released under the [Apache 2.0 license](./LICENSE). |