| # Matter |
| |
| ![Builds](https://github.com/project-chip/connectedhomeip/workflows/Builds/badge.svg) |
| |
| ![Examples - EFR32](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20EFR32/badge.svg) |
| ![Examples - nRF Connect SDK](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20nRF%20Connect%20SDK/badge.svg) |
| ![Examples - QPG](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20QPG/badge.svg) |
| ![Examples - Linux Standalone](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20Linux%20Standalone/badge.svg) |
| ![Examples - ESP32](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20ESP32/badge.svg) |
| ![Examples - K32W with SE051](https://github.com/project-chip/connectedhomeip/workflows/Build%20example%20-%20K32W%20with%20SE051/badge.svg) |
| |
| ![Android](https://github.com/project-chip/connectedhomeip/workflows/Android/badge.svg) |
| |
| ![Unit / Interation Tests](https://github.com/project-chip/connectedhomeip/workflows/Unit%20/%20Interation%20Tests/badge.svg) |
| ![Cirque](https://github.com/project-chip/connectedhomeip/workflows/Cirque/badge.svg) |
| ![QEMU](https://github.com/project-chip/connectedhomeip/workflows/QEMU/badge.svg) |
| |
| ![ZAP Templates](https://github.com/project-chip/connectedhomeip/workflows/ZAP/badge.svg) |
| |
| # What is Matter? |
| |
| Matter (formerly Project Connected Home over IP, or Project CHIP) is a new |
| Working Group within the Connectivity Standards Alliance (CSA, formerly Zigbee |
| Alliance). This Working Group plans to develop and promote the adoption of a |
| new, royalty-free connectivity standard to increase compatibility among smart |
| home products, with security as a fundamental design tenet. |
| |
| The goal of the Matter project is to simplify development for manufacturers and |
| increase compatibility for consumers. The project is built around a shared |
| belief that smart home devices should be secure, reliable, and seamless to use. |
| By building upon Internet Protocol (IP), the project aims to enable |
| communication across smart home devices, mobile apps, and cloud services and to |
| define a specific set of IP-based networking technologies for device |
| certification. |
| |
| The CSA officially opened the Matter Working Group on January 17, 2020 and is in |
| the process of drafting the specification. |
| |
| 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 will produce a new specification, building 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 is in control of 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 specify 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, thanks to |
| leveraging IP and being implementable on low-capability devices. |
| |
| **Ecosystem-Flexible:** The protocol must be flexible enough to accommodate |
| deployment in ecosystems with differing policies. |
| |
| **Easy to Use:** The protocol should aim to provide smooth, cohesive, integrated |
| provisioning and out-of-box experience. |
| |
| **Open:** The Project’s design and technical processes should be open and |
| transparent to the general public, including to non-members wherever possible. |
| |
| ## Architecture Overview |
| |
| ![Matter Architecture Overview](docs/images/CHIP_IP_pyramid.png) |
| |
| The Project, as illustrated above, defines the application layer that will be |
| deployed on devices and controllers as well as the supported IPv6-based networks |
| to help achieve our interoperability architectural goal. Matter will initially |
| support Wi-Fi and Thread for core, operational communications and Bluetooth Low |
| Energy (BLE) to simplify device commissioning and setup. |
| |
| The Application Layer can be further broken down seven main components: |
| |
| ![Matter Stack Architecture](docs/images/CHIP_Arch_Pyramid.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 its color characteristics. |
| |
| 2. **Data Model:** Data primitives that help describe the various |
| functionalities of the devices. The Application operates on these data |
| structures when there is intent to interact with the device. |
| |
| 3. **Interaction Model:** Represents a set of actions that can be performed on |
| the devices to interact with it. For example, reading or writing attributes |
| on a device would correspond to interactions with the devices. These actions |
| operate on the structures defined by the data model. |
| |
| 4. **Action Framing:** Once an action is constructed using the Interaction |
| Model, it is framed into a prescriptive packed binary format to enable being |
| well represented on the “wire”. |
| |
| 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 properties of the message as well 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 Work 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 to 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, 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 | Contents | |
| | -------------------------------------- | ---------------------------------------------------------------------------------- | |
| | `build/` | Build system support content and build output directories | |
| | [BUILDING.md](docs/guides/BUILDING.md) | More detailed information on configuring and building Matter for different targets | |
| | `CODE_OF_CONDUCT.md` | Code of Conduct for Matter, and contributions to it | |
| | [CONTRIBUTING.md](./CONTRIBUTING.md) | Guidelines for contributing to Matter | |
| | `docs/` | Documentation, including [guides](./docs/guides) | |
| | `examples/` | Example firmware applications that demonstrate use of the Matter technology | |
| | `integrations/` | Third party integrations related to this project | |
| | `integrations/docker/` | Docker scripts and Dockerfiles | |
| | `LICENSE` | Matter [License file](./LICENSE) (Apache 2.0) | |
| | `BUILD.gn` | Top level GN build file | |
| | `README.md` | This file | |
| | `src/` | Implementation of Matter | |
| | `third_party/` | Third-party code used by Matter | |
| | `scripts/` | Scripts needed to work with the Matter repository | |
| |
| # License |
| |
| Matter is released under the [Apache 2.0 license](./LICENSE). |