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 | |
Justin Wood | c1581aa | 2023-06-20 15:16:53 -0400 | [diff] [blame] | 5 | **Builds** |
| 6 | |
| 7 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/android.yaml) |
Justin Wood | 662d0bd | 2023-06-20 12:15:53 -0400 | [diff] [blame] | 8 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-ameba.yaml) |
| 9 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-asr.yaml) |
| 10 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-bouffalolab.yaml) |
Justin Wood | c1581aa | 2023-06-20 15:16:53 -0400 | [diff] [blame] | 11 | [](https://github.com/project-chip/connectedhomeip/blob/master/.github/workflows/darwin.yaml) |
Anu Biradar | c9dac81 | 2024-04-08 08:35:23 -0500 | [diff] [blame] | 12 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-cc13xx_26xx.yaml) |
Justin Wood | 662d0bd | 2023-06-20 12:15:53 -0400 | [diff] [blame] | 13 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-cc32xx.yaml) |
| 14 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-efr32.yaml) |
| 15 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-esp32.yaml) |
| 16 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-infineon.yaml) |
| 17 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-linux-imx.yaml) |
| 18 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-k32w.yaml) |
| 19 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-linux-arm.yaml) |
| 20 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-linux-standalone.yaml) |
| 21 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-linux-standalone.yaml) |
| 22 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-mbed.yaml) |
| 23 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-mw320.yaml) |
| 24 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-nrfconnect.yaml) |
| 25 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-openiotsdk.yaml) |
| 26 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-qpg.yaml) |
yzamstm | 1f9907d | 2023-09-22 15:25:25 +0200 | [diff] [blame] | 27 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-stm32.yaml) |
Justin Wood | 662d0bd | 2023-06-20 12:15:53 -0400 | [diff] [blame] | 28 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-telink.yaml) |
| 29 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/examples-tizen.yaml) |
Justin Wood | 5a8a618 | 2021-02-03 12:55:57 -0800 | [diff] [blame] | 30 | |
Justin Wood | c1581aa | 2023-06-20 15:16:53 -0400 | [diff] [blame] | 31 | **Tests** |
Justin Wood | 5a8a618 | 2021-02-03 12:55:57 -0800 | [diff] [blame] | 32 | |
Boris Zbarsky | c988a2c | 2022-12-05 10:59:45 -0500 | [diff] [blame] | 33 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/unit_integration_test.yaml) |
Arkadiusz Bokowy | c21bebd | 2022-02-11 03:37:16 +0100 | [diff] [blame] | 34 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/cirque.yaml) |
| 35 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/qemu.yaml) |
Justin Wood | c9bbb25 | 2020-03-03 10:03:58 -0800 | [diff] [blame] | 36 | |
Justin Wood | c1581aa | 2023-06-20 15:16:53 -0400 | [diff] [blame] | 37 | **Tools** |
| 38 | |
Arkadiusz Bokowy | c21bebd | 2022-02-11 03:37:16 +0100 | [diff] [blame] | 39 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/zap_templates.yaml) |
Justin Wood | 5a8a618 | 2021-02-03 12:55:57 -0800 | [diff] [blame] | 40 | |
Justin Wood | c1581aa | 2023-06-20 15:16:53 -0400 | [diff] [blame] | 41 | **Documentation** |
| 42 | |
Grzegorz Ferenc | 2d4895e | 2023-03-29 15:30:20 +0200 | [diff] [blame] | 43 | [](https://github.com/project-chip/connectedhomeip/actions/workflows/docbuild.yaml) |
| 44 | |
| 45 | - [Matter SDK documentation page](https://project-chip.github.io/connectedhomeip-doc/index.html) |
| 46 | |
Nikki Ahmadi | 64fe656 | 2022-11-03 14:52:48 +0100 | [diff] [blame] | 47 | # About |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 48 | |
| 49 | Matter (formerly Project CHIP) creates more connections between more objects, |
| 50 | simplifying development for manufacturers and increasing compatibility for |
| 51 | consumers, guided by the Connectivity Standards Alliance. |
Nikki Ahmadi | 64fe656 | 2022-11-03 14:52:48 +0100 | [diff] [blame] | 52 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 53 | # What is Matter? |
Justin Wood | c9bbb25 | 2020-03-03 10:03:58 -0800 | [diff] [blame] | 54 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 55 | Matter is a unified, open-source application-layer connectivity standard built |
| 56 | to enable developers and device manufacturers to connect and build reliable, and |
| 57 | secure ecosystems and increase compatibility among connected home devices. It is |
| 58 | built with market-proven technologies using Internet Protocol (IP) and is |
| 59 | compatible with Thread and Wi-Fi network transports. Matter was developed by a |
| 60 | Working Group within the Connectivity Standards Alliance (Alliance). This |
| 61 | Working Group develops and promotes the adoption of the Matter standard, a |
| 62 | royalty-free connectivity standard to increase compatibility among smart home |
| 63 | products, with security as a fundamental design tenet. The vision that led major |
| 64 | industry players to come together to build Matter is that smart connectivity |
| 65 | should be simple, reliable, and interoperable. |
Justin Wood | c9bbb25 | 2020-03-03 10:03:58 -0800 | [diff] [blame] | 66 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 67 | Matter simplifies development for manufacturers and increases compatibility for |
| 68 | consumers. |
Justin Wood | d4a0615 | 2020-07-01 08:58:02 -0700 | [diff] [blame] | 69 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 70 | The standard was built around a shared belief that smart home devices should be |
| 71 | secure, reliable, and seamless to use. By building upon Internet Protocol (IP), |
| 72 | Matter enables communication across smart home devices, mobile apps, and cloud |
| 73 | services and defines a specific set of IP-based networking technologies for |
| 74 | device certification. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 75 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 76 | The Matter specification details everything necessary to implement a Matter |
| 77 | application and transport layer stack. It is intended to be used by implementers |
| 78 | as a complete specification. |
Nikki Ahmadi | 64fe656 | 2022-11-03 14:52:48 +0100 | [diff] [blame] | 79 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 80 | The Alliance officially opened the Matter Working Group on January 17, 2020, and |
| 81 | the specification is |
| 82 | [available](https://csa-iot.org/developer-resource/specifications-download-request/) |
| 83 | for adoption now. |
Nikki Ahmadi | 64fe656 | 2022-11-03 14:52:48 +0100 | [diff] [blame] | 84 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 85 | Visit [buildwithmatter.com](https://buildwithmatter.com) to learn more and read |
| 86 | the latest news and updates about the project. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 87 | |
| 88 | # Project Overview |
| 89 | |
| 90 | ## Development Goals |
| 91 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 92 | Matter is developed with the following goals and principles in mind: |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 93 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 94 | **Unifying:** Matter is built with and on top of market-tested, existing |
| 95 | technologies. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 96 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 97 | **Interoperable:** The specification permits communication between any |
| 98 | Matter-certified device, subject to users’ permission. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 99 | |
| 100 | **Secure:** The specification leverages modern security practices and protocols. |
| 101 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 102 | **User Control:** The end user controls authorization for interaction with |
| 103 | devices. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 104 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 105 | **Federated:** No single entity serves as a throttle or a single point of |
| 106 | failure for root of trust. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 107 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 108 | **Robust:** The set of protocols specifies a complete lifecycle of a device — |
| 109 | starting with the seamless out-of-box experience, through operational protocols, |
| 110 | to device and system management specifications required for proper function in |
| 111 | the presence of change. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 112 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 113 | **Low Overhead:** The protocols are practically implementable on low |
| 114 | compute-resource devices, such as MCUs. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 115 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 116 | **Pervasive:** The protocols are broadly deployable and accessible, by |
| 117 | leveraging IP and being implementable on low-capability devices. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 118 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 119 | **Ecosystem-Flexible:** The protocol is flexible enough to accommodate |
| 120 | deployment in ecosystems with differing policies. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 121 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 122 | **Easy to Use:** The protocol provides smooth, cohesive, integrated provisioning |
| 123 | and out-of-box experience. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 124 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 125 | **Open:** The Project’s design and technical processes are open and transparent |
| 126 | to the general public, including non-members wherever possible. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 127 | |
| 128 | ## Architecture Overview |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 129 | |
| 130 | Matter aims to build a universal IPv6-based communication protocol for smart |
| 131 | home devices. The protocol defines the application layer that will be deployed |
| 132 | on devices and the different link layers to help maintain interoperability. The |
| 133 | following diagram illustrates the normal operational mode of the stack: |
Nikki Ahmadi | 64fe656 | 2022-11-03 14:52:48 +0100 | [diff] [blame] | 134 |  |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 135 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 136 | The architecture is divided into layers to help separate the different |
| 137 | responsibilities and introduce a good level of encapsulation among the various |
| 138 | pieces of the protocol stack. The vast majority of interactions flow through the |
| 139 | stack captured in the following Figure: |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 140 | |
Nikki Ahmadi | 64fe656 | 2022-11-03 14:52:48 +0100 | [diff] [blame] | 141 |  |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 142 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 143 | 1. **Application:** High-order business logic of a device. For example, an |
| 144 | application that is focused on lighting might contain logic to handle turning |
| 145 | on/off the bulb as well as its color characteristics. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 146 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 147 | 2) **Data Model:** The data layer corresponds to the data and verb elements that |
| 148 | help support the functionality of the application. The Application operates |
| 149 | on these data structures when there is an intent to interact with the device. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 150 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 151 | 3. **Interaction Model:** The Interaction Model layer defines a set of |
| 152 | interactions that can be performed between a client and server device. For |
| 153 | example, reading or writing attributes on a server device would correspond to |
| 154 | application behavior on the device. These interactions operate on the |
| 155 | elements defined at the data model layer. |
Nikki Ahmadi | 64fe656 | 2022-11-03 14:52:48 +0100 | [diff] [blame] | 156 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 157 | 4) **Action Framing:** Once an action is constructed using the Interaction |
| 158 | Model, it is serialized into a prescribed packed binary format to encode for |
Frederico Hakamine | 1edcf88 | 2023-01-18 06:08:45 -0600 | [diff] [blame] | 159 | network transmission. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 160 | |
| 161 | 5. **Security:** An encoded action frame is then sent down to the Security Layer |
| 162 | to encrypt and sign the payload to ensure that data is secured and |
| 163 | authenticated by both sender and receiver of a packet. |
| 164 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 165 | 6. **Message Framing & Routing:** With an interaction encrypted and signed, the |
| 166 | Message Layer constructs the payload format with required and optional header |
| 167 | fields; which specify the message's properties and some routing information. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 168 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 169 | 7) **IP Framing & Transport Management:** After the final payload has been |
| 170 | constructed, it is sent to the underlying transport protocol for IP |
| 171 | management of the data. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 172 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 173 | # Current Status of Matter |
Justin Wood | d4a0615 | 2020-07-01 08:58:02 -0700 | [diff] [blame] | 174 | |
Andrei Litvin | a177469 | 2022-11-03 13:40:10 -0400 | [diff] [blame] | 175 | Matter’s design and technical processes are intended to be open and transparent |
| 176 | to the general public, including to Working Group non-members wherever possible. |
| 177 | The availability of this GitHub repository and its source code under an Apache |
| 178 | v2 license is an important and demonstrable step to achieving this commitment. |
| 179 | Matter endeavors to bring together the best aspects of market-tested |
| 180 | technologies and redeploy them as a unified and cohesive whole-system solution. |
| 181 | The overall goal of this approach is to bring the benefits of Matter to |
| 182 | consumers and manufacturers as quickly as possible. As a result, what you |
| 183 | observe in this repository is an implementation-first approach to the technical |
| 184 | specification, vetting integrations in practice. The Matter repository is |
| 185 | growing and evolving to implement the overall architecture. The repository |
| 186 | currently contains the security foundations, message framing and dispatch, and |
| 187 | an implementation of the interaction model and data model. The code examples |
| 188 | show simple interactions, and are supported on multiple transports -- Wi-Fi and |
| 189 | Thread -- starting with resource-constrained (i.e., memory, processing) silicon |
| 190 | platforms to help ensure Matter’s scalability. |
Robert Szewczyk | 2ab68ff | 2020-09-07 21:05:42 -0700 | [diff] [blame] | 191 | |
Justin Wood | d4a0615 | 2020-07-01 08:58:02 -0700 | [diff] [blame] | 192 | # How to Contribute |
| 193 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 194 | We welcome your contributions to Matter. Read our contribution guidelines |
| 195 | [here](./CONTRIBUTING.md). |
Justin Wood | d4a0615 | 2020-07-01 08:58:02 -0700 | [diff] [blame] | 196 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 197 | # Building and Developing in Matter |
Justin Wood | d4a0615 | 2020-07-01 08:58:02 -0700 | [diff] [blame] | 198 | |
Andrei Litvin | 0062c5d | 2023-03-02 12:20:44 -0500 | [diff] [blame] | 199 | 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] | 200 | |
Justin Wood | c9bbb25 | 2020-03-03 10:03:58 -0800 | [diff] [blame] | 201 | # Directory Structure |
| 202 | |
Andrei Litvin | 706e9bb | 2022-11-03 13:46:06 -0400 | [diff] [blame] | 203 | The Matter repository is structured as follows: |
| 204 | |
Grzegorz Ferenc | 2d4895e | 2023-03-29 15:30:20 +0200 | [diff] [blame] | 205 | | File/Folder | Content | |
| 206 | | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 207 | | build | Build system support content and built output directories | |
| 208 | | build_overrides | Build system parameter customization for different platforms | |
| 209 | | config | Project configurations | |
| 210 | | credentials | Development and test credentials | |
| 211 | | docs | Documentation, including guides. Visit the [Matter SDK documentation page](https://project-chip.github.io/connectedhomeip-doc/index.html) to read it. | |
| 212 | | examples | Example firmware applications that demonstrate use of Matter | |
Hyukjin Kwon | 0aa3a0c | 2023-12-23 03:08:46 +0900 | [diff] [blame] | 213 | | integrations | 3rd party integrations | |
Grzegorz Ferenc | 2d4895e | 2023-03-29 15:30:20 +0200 | [diff] [blame] | 214 | | scripts | Scripts needed to work with the Matter repository | |
| 215 | | src | Implementation of Matter | |
| 216 | | third_party | 3rd party code used by Matter | |
Hyukjin Kwon | 0aa3a0c | 2023-12-23 03:08:46 +0900 | [diff] [blame] | 217 | | zzz_generated | ZAP generated template code - Revolving around cluster information | |
| 218 | | BUILD.gn | Build file for the GN build system | |
Grzegorz Ferenc | 2d4895e | 2023-03-29 15:30:20 +0200 | [diff] [blame] | 219 | | CODE_OF_CONDUCT.md | Code of conduct for Matter and contribution to it | |
| 220 | | CONTRIBUTING.md | Guidelines for contributing to Matter | |
| 221 | | LICENSE | Matter license file | |
| 222 | | REVIEWERS.md | PR reviewers | |
| 223 | | gn_build.sh | Build script for specific projects such as Android, EFR32, etc. | |
Hyukjin Kwon | 0aa3a0c | 2023-12-23 03:08:46 +0900 | [diff] [blame] | 224 | | README.md | This file | |
Justin Wood | c9bbb25 | 2020-03-03 10:03:58 -0800 | [diff] [blame] | 225 | |
| 226 | # License |
| 227 | |
Grzegorz Ferenc | bae3e7d | 2021-10-19 15:49:45 +0200 | [diff] [blame] | 228 | Matter is released under the [Apache 2.0 license](./LICENSE). |