Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 1 | # Matter |
Justin Wood | c9bbb25 | 2020-03-03 10:03:58 -0800 | [diff] [blame] | 2 | |
Arkadiusz Bokowy | c21bebd | 2022-02-11 03:37:16 +0100 | [diff] [blame^] | 3 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/build.yaml) |
Justin Wood | 5a8a618 | 2021-02-03 12:55:57 -0800 | [diff] [blame] | 4 | |
Arkadiusz Bokowy | c21bebd | 2022-02-11 03:37:16 +0100 | [diff] [blame^] | 5 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-efr32.yaml) |
| 6 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-esp32.yaml) |
| 7 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-linux-imx.yaml) |
| 8 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-k32w.yaml) |
| 9 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-linux-standalone.yaml) |
| 10 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-nrfconnect.yaml) |
| 11 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-qpg.yaml) |
Justin Wood | 5a8a618 | 2021-02-03 12:55:57 -0800 | [diff] [blame] | 12 | |
Arkadiusz Bokowy | c21bebd | 2022-02-11 03:37:16 +0100 | [diff] [blame^] | 13 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/android.yaml) |
Justin Wood | 5a8a618 | 2021-02-03 12:55:57 -0800 | [diff] [blame] | 14 | |
Arkadiusz Bokowy | c21bebd | 2022-02-11 03:37:16 +0100 | [diff] [blame^] | 15 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/unit_integration_test.yaml) |
| 16 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/cirque.yaml) |
| 17 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/qemu.yaml) |
Justin Wood | c9bbb25 | 2020-03-03 10:03:58 -0800 | [diff] [blame] | 18 | |
Arkadiusz Bokowy | c21bebd | 2022-02-11 03:37:16 +0100 | [diff] [blame^] | 19 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/zap_templates.yaml) |
Justin Wood | 5a8a618 | 2021-02-03 12:55:57 -0800 | [diff] [blame] | 20 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 21 | # What is Matter? |
Justin Wood | c9bbb25 | 2020-03-03 10:03:58 -0800 | [diff] [blame] | 22 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 23 | Matter (formerly Project Connected Home over IP, or Project CHIP) is a new |
| 24 | Working Group within the Connectivity Standards Alliance (CSA, formerly Zigbee |
| 25 | Alliance). This Working Group plans to develop and promote the adoption of a |
| 26 | new, royalty-free connectivity standard to increase compatibility among smart |
| 27 | home products, with security as a fundamental design tenet. |
Justin Wood | c9bbb25 | 2020-03-03 10:03:58 -0800 | [diff] [blame] | 28 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 29 | The goal of the Matter project is to simplify development for manufacturers and |
| 30 | increase compatibility for consumers. The project is built around a shared |
| 31 | belief that smart home devices should be secure, reliable, and seamless to use. |
| 32 | By building upon Internet Protocol (IP), the project aims to enable |
| 33 | communication across smart home devices, mobile apps, and cloud services and to |
| 34 | define a specific set of IP-based networking technologies for device |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 35 | certification. |
Justin Wood | d4a0615 | 2020-07-01 08:58:02 -0700 | [diff] [blame] | 36 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 37 | The CSA officially opened the Matter Working Group on January 17, 2020 and is in |
| 38 | the process of drafting the specification. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 39 | |
FC | 5258184 | 2021-05-19 07:26:31 +0200 | [diff] [blame] | 40 | Visit [buildwithmatter.com](https://buildwithmatter.com) to learn more and read |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 41 | the latest news and updates about the project. |
| 42 | |
| 43 | # Project Overview |
| 44 | |
| 45 | ## Development Goals |
| 46 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 47 | Matter is developed with the following goals and principles in mind: |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 48 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 49 | **Unifying:** Matter will produce a new specification, building with and on top |
| 50 | of market-tested, existing technologies. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 51 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 52 | **Interoperable:** The specification permits communication between any |
| 53 | Matter-certified device, subject to users’ permission. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 54 | |
| 55 | **Secure:** The specification leverages modern security practices and protocols. |
| 56 | |
| 57 | **User Control:** The end user is in control of authorization for interaction |
| 58 | with devices. |
| 59 | |
| 60 | **Federated:** No single entity serves as a throttle or a |
| 61 | single-point-of-failure for root of trust. |
| 62 | |
| 63 | **Robust:** The set of protocols specify a complete lifecycle of a device — |
| 64 | starting with the seamless out-of-box experience, through operational protocols, |
| 65 | to device and system management specifications required for proper function in |
| 66 | the presence of change. |
| 67 | |
| 68 | **Low Overhead:** The protocols are practically implementable on low |
| 69 | compute-resource devices, such as MCUs. |
| 70 | |
| 71 | **Pervasive:** The protocols are broadly deployable and accessible, thanks to |
| 72 | leveraging IP and being implementable on low-capability devices. |
| 73 | |
| 74 | **Ecosystem-Flexible:** The protocol must be flexible enough to accommodate |
| 75 | deployment in ecosystems with differing policies. |
| 76 | |
| 77 | **Easy to Use:** The protocol should aim to provide smooth, cohesive, integrated |
| 78 | provisioning and out-of-box experience. |
| 79 | |
| 80 | **Open:** The Project’s design and technical processes should be open and |
| 81 | transparent to the general public, including to non-members wherever possible. |
| 82 | |
| 83 | ## Architecture Overview |
| 84 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 85 |  |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 86 | |
| 87 | The Project, as illustrated above, defines the application layer that will be |
| 88 | deployed on devices and controllers as well as the supported IPv6-based networks |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 89 | to help achieve our interoperability architectural goal. Matter will initially |
| 90 | support Wi-Fi and Thread for core, operational communications and Bluetooth Low |
| 91 | Energy (BLE) to simplify device commissioning and setup. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 92 | |
lzgrablic02 | a9f7b80 | 2021-12-16 03:24:03 -0500 | [diff] [blame] | 93 | The Application Layer can be further broken down into seven main components: |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 94 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 95 |  |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 96 | |
| 97 | 1. **Application:** High order business logic of a device. For example, an |
| 98 | application that is focused on lighting might contain logic to handle turning |
lzgrablic02 | a9f7b80 | 2021-12-16 03:24:03 -0500 | [diff] [blame] | 99 | on/off the bulb as well as its color characteristics. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 100 | |
| 101 | 2. **Data Model:** Data primitives that help describe the various |
| 102 | functionalities of the devices. The Application operates on these data |
| 103 | structures when there is intent to interact with the device. |
| 104 | |
| 105 | 3. **Interaction Model:** Represents a set of actions that can be performed on |
| 106 | the devices to interact with it. For example, reading or writing attributes |
| 107 | on a device would correspond to interactions with the devices. These actions |
| 108 | operate on the structures defined by the data model. |
| 109 | |
| 110 | 4. **Action Framing:** Once an action is constructed using the Interaction |
| 111 | Model, it is framed into a prescriptive packed binary format to enable being |
| 112 | well represented on the “wire”. |
| 113 | |
| 114 | 5. **Security:** An encoded action frame is then sent down to the Security Layer |
| 115 | to encrypt and sign the payload to ensure that data is secured and |
| 116 | authenticated by both sender and receiver of a packet. |
| 117 | |
| 118 | 6. **Message Framing & Routing:** With an interaction encrypted and signed, the |
| 119 | Message Layer constructs the payload format with required and optional header |
lzgrablic02 | a9f7b80 | 2021-12-16 03:24:03 -0500 | [diff] [blame] | 120 | fields; which specify properties of the message as well as some routing |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 121 | information. |
| 122 | |
| 123 | 7. **IP Framing & Transport Management:** After the final payload has been |
| 124 | constructed, it is sent to the underlying transport protocol for IP |
| 125 | management of the data. |
| 126 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 127 | # Current Status of Matter |
Justin Wood | d4a0615 | 2020-07-01 08:58:02 -0700 | [diff] [blame] | 128 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 129 | Matter’s design and technical processes are intended to be open and transparent |
| 130 | to the general public, including to Work Group non-members wherever possible. |
| 131 | The availability of this GitHub repository and its source code under an Apache |
| 132 | v2 license is an important and demonstrable step to achieving this commitment. |
Justin Wood | d4a0615 | 2020-07-01 08:58:02 -0700 | [diff] [blame] | 133 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 134 | Matter endeavors to bring together the best aspects of market-tested |
Justin Wood | d4a0615 | 2020-07-01 08:58:02 -0700 | [diff] [blame] | 135 | technologies and to redeploy them as a unified and cohesive whole-system |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 136 | solution. The overall goal of this approach is to bring the benefits of Matter |
| 137 | to consumers and manufacturers as quickly as possible. As a result, what you |
| 138 | observe in this repository is an implementation-first approach to the technical |
| 139 | specification, vetting integrations in practice. |
Justin Wood | d4a0615 | 2020-07-01 08:58:02 -0700 | [diff] [blame] | 140 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 141 | The Matter repository is growing and evolving to implement the overall |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 142 | architecture. The repository currently contains the security foundations, |
| 143 | message framing and dispatch, an implementation of the interaction model and |
| 144 | data model. The code examples show simple interactions, and are supported on |
| 145 | multiple transports -- Wi-Fi and Thread -- starting with resource-constrained |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 146 | (i.e., memory, processing) silicon platforms to help ensure Matter’s |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 147 | scalability. |
| 148 | |
Justin Wood | d4a0615 | 2020-07-01 08:58:02 -0700 | [diff] [blame] | 149 | # How to Contribute |
| 150 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 151 | We welcome your contributions to Matter. Read our contribution guidelines |
| 152 | [here](./CONTRIBUTING.md). |
Justin Wood | d4a0615 | 2020-07-01 08:58:02 -0700 | [diff] [blame] | 153 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 154 | # Building and Developing in Matter |
Justin Wood | d4a0615 | 2020-07-01 08:58:02 -0700 | [diff] [blame] | 155 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 156 | Instructions about how to build Matter can be found [here](./docs/README.md). |
Justin Wood | c9bbb25 | 2020-03-03 10:03:58 -0800 | [diff] [blame] | 157 | |
Justin Wood | c9bbb25 | 2020-03-03 10:03:58 -0800 | [diff] [blame] | 158 | # Directory Structure |
| 159 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 160 | The Matter repository is structured as follows: |
Justin Wood | c9bbb25 | 2020-03-03 10:03:58 -0800 | [diff] [blame] | 161 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 162 | | File / Folder | Contents | |
| 163 | | -------------------------------------- | ---------------------------------------------------------------------------------- | |
| 164 | | `build/` | Build system support content and build output directories | |
| 165 | | [BUILDING.md](docs/guides/BUILDING.md) | More detailed information on configuring and building Matter for different targets | |
| 166 | | `CODE_OF_CONDUCT.md` | Code of Conduct for Matter, and contributions to it | |
| 167 | | [CONTRIBUTING.md](./CONTRIBUTING.md) | Guidelines for contributing to Matter | |
| 168 | | `docs/` | Documentation, including [guides](./docs/guides) | |
| 169 | | `examples/` | Example firmware applications that demonstrate use of the Matter technology | |
| 170 | | `integrations/` | Third party integrations related to this project | |
| 171 | | `integrations/docker/` | Docker scripts and Dockerfiles | |
| 172 | | `LICENSE` | Matter [License file](./LICENSE) (Apache 2.0) | |
| 173 | | `BUILD.gn` | Top level GN build file | |
| 174 | | `README.md` | This file | |
| 175 | | `src/` | Implementation of Matter | |
| 176 | | `third_party/` | Third-party code used by Matter | |
| 177 | | `scripts/` | Scripts needed to work with the Matter repository | |
Justin Wood | c9bbb25 | 2020-03-03 10:03:58 -0800 | [diff] [blame] | 178 | |
| 179 | # License |
| 180 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 181 | Matter is released under the [Apache 2.0 license](./LICENSE). |