blob: b8d6019dfe2e4d274d8ecbc037c0020feaa950a6 [file] [log] [blame] [view]
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +02001# Matter
Justin Woodc9bbb252020-03-03 10:03:58 -08002
Arkadiusz Bokowyc21bebd2022-02-11 03:37:16 +01003[![Builds](https://github.com/project-chip/connectedhomeip/workflows/Builds/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/build.yaml)
Justin Wood5a8a6182021-02-03 12:55:57 -08004
Arkadiusz Bokowyc21bebd2022-02-11 03:37:16 +01005[![Examples - 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)
6[![Examples - 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)
7[![Examples - 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)
8[![Examples - 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)
9[![Examples - 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)
10[![Examples - 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)
11[![Examples - 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)
Justin Wood5a8a6182021-02-03 12:55:57 -080012
Arkadiusz Bokowyc21bebd2022-02-11 03:37:16 +010013[![Android](https://github.com/project-chip/connectedhomeip/workflows/Android/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/android.yaml)
Justin Wood5a8a6182021-02-03 12:55:57 -080014
Arkadiusz Bokowyc21bebd2022-02-11 03:37:16 +010015[![Unit / Interation Tests](https://github.com/project-chip/connectedhomeip/workflows/Unit%20/%20Interation%20Tests/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/unit_integration_test.yaml)
16[![Cirque](https://github.com/project-chip/connectedhomeip/workflows/Cirque/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/cirque.yaml)
17[![QEMU](https://github.com/project-chip/connectedhomeip/workflows/QEMU/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/qemu.yaml)
Justin Woodc9bbb252020-03-03 10:03:58 -080018
Arkadiusz Bokowyc21bebd2022-02-11 03:37:16 +010019[![ZAP Templates](https://github.com/project-chip/connectedhomeip/workflows/ZAP/badge.svg)](https://github.com/project-chip/connectedhomeip/actions/workflows/zap_templates.yaml)
Justin Wood5a8a6182021-02-03 12:55:57 -080020
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +020021# What is Matter?
Justin Woodc9bbb252020-03-03 10:03:58 -080022
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +020023Matter (formerly Project Connected Home over IP, or Project CHIP) is a new
24Working Group within the Connectivity Standards Alliance (CSA, formerly Zigbee
25Alliance). This Working Group plans to develop and promote the adoption of a
26new, royalty-free connectivity standard to increase compatibility among smart
27home products, with security as a fundamental design tenet.
Justin Woodc9bbb252020-03-03 10:03:58 -080028
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +020029The goal of the Matter project is to simplify development for manufacturers and
30increase compatibility for consumers. The project is built around a shared
31belief that smart home devices should be secure, reliable, and seamless to use.
32By building upon Internet Protocol (IP), the project aims to enable
33communication across smart home devices, mobile apps, and cloud services and to
34define a specific set of IP-based networking technologies for device
Robert Szewczyk2ab68ff2020-09-07 21:05:42 -070035certification.
Justin Woodd4a06152020-07-01 08:58:02 -070036
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +020037The CSA officially opened the Matter Working Group on January 17, 2020 and is in
38the process of drafting the specification.
Robert Szewczyk2ab68ff2020-09-07 21:05:42 -070039
FC52581842021-05-19 07:26:31 +020040Visit [buildwithmatter.com](https://buildwithmatter.com) to learn more and read
Robert Szewczyk2ab68ff2020-09-07 21:05:42 -070041the latest news and updates about the project.
42
43# Project Overview
44
45## Development Goals
46
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +020047Matter is developed with the following goals and principles in mind:
Robert Szewczyk2ab68ff2020-09-07 21:05:42 -070048
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +020049**Unifying:** Matter will produce a new specification, building with and on top
50of market-tested, existing technologies.
Robert Szewczyk2ab68ff2020-09-07 21:05:42 -070051
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +020052**Interoperable:** The specification permits communication between any
53Matter-certified device, subject to users permission.
Robert Szewczyk2ab68ff2020-09-07 21:05:42 -070054
55**Secure:** The specification leverages modern security practices and protocols.
56
57**User Control:** The end user is in control of authorization for interaction
58with devices.
59
60**Federated:** No single entity serves as a throttle or a
61single-point-of-failure for root of trust.
62
63**Robust:** The set of protocols specify a complete lifecycle of a device
64starting with the seamless out-of-box experience, through operational protocols,
65to device and system management specifications required for proper function in
66the presence of change.
67
68**Low Overhead:** The protocols are practically implementable on low
69compute-resource devices, such as MCUs.
70
71**Pervasive:** The protocols are broadly deployable and accessible, thanks to
72leveraging IP and being implementable on low-capability devices.
73
74**Ecosystem-Flexible:** The protocol must be flexible enough to accommodate
75deployment in ecosystems with differing policies.
76
77**Easy to Use:** The protocol should aim to provide smooth, cohesive, integrated
78provisioning and out-of-box experience.
79
80**Open:** The Projects design and technical processes should be open and
81transparent to the general public, including to non-members wherever possible.
82
83## Architecture Overview
84
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +020085![Matter Architecture Overview](docs/images/CHIP_IP_pyramid.png)
Robert Szewczyk2ab68ff2020-09-07 21:05:42 -070086
87The Project, as illustrated above, defines the application layer that will be
88deployed on devices and controllers as well as the supported IPv6-based networks
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +020089to help achieve our interoperability architectural goal. Matter will initially
90support Wi-Fi and Thread for core, operational communications and Bluetooth Low
91Energy (BLE) to simplify device commissioning and setup.
Robert Szewczyk2ab68ff2020-09-07 21:05:42 -070092
lzgrablic02a9f7b802021-12-16 03:24:03 -050093The Application Layer can be further broken down into seven main components:
Robert Szewczyk2ab68ff2020-09-07 21:05:42 -070094
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +020095![Matter Stack Architecture](docs/images/CHIP_Arch_Pyramid.png)
Robert Szewczyk2ab68ff2020-09-07 21:05:42 -070096
971. **Application:** High order business logic of a device. For example, an
98 application that is focused on lighting might contain logic to handle turning
lzgrablic02a9f7b802021-12-16 03:24:03 -050099 on/off the bulb as well as its color characteristics.
Robert Szewczyk2ab68ff2020-09-07 21:05:42 -0700100
1012. **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
1053. **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
1104. **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
1145. **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
1186. **Message Framing & Routing:** With an interaction encrypted and signed, the
119 Message Layer constructs the payload format with required and optional header
lzgrablic02a9f7b802021-12-16 03:24:03 -0500120 fields; which specify properties of the message as well as some routing
Robert Szewczyk2ab68ff2020-09-07 21:05:42 -0700121 information.
122
1237. **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 Ferencbae3e7d2021-10-19 15:49:45 +0200127# Current Status of Matter
Justin Woodd4a06152020-07-01 08:58:02 -0700128
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +0200129Matters design and technical processes are intended to be open and transparent
130to the general public, including to Work Group non-members wherever possible.
131The availability of this GitHub repository and its source code under an Apache
132v2 license is an important and demonstrable step to achieving this commitment.
Justin Woodd4a06152020-07-01 08:58:02 -0700133
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +0200134Matter endeavors to bring together the best aspects of market-tested
Justin Woodd4a06152020-07-01 08:58:02 -0700135technologies and to redeploy them as a unified and cohesive whole-system
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +0200136solution. The overall goal of this approach is to bring the benefits of Matter
137to consumers and manufacturers as quickly as possible. As a result, what you
138observe in this repository is an implementation-first approach to the technical
139specification, vetting integrations in practice.
Justin Woodd4a06152020-07-01 08:58:02 -0700140
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +0200141The Matter repository is growing and evolving to implement the overall
Robert Szewczyk2ab68ff2020-09-07 21:05:42 -0700142architecture. The repository currently contains the security foundations,
143message framing and dispatch, an implementation of the interaction model and
144data model. The code examples show simple interactions, and are supported on
145multiple transports -- Wi-Fi and Thread -- starting with resource-constrained
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +0200146(i.e., memory, processing) silicon platforms to help ensure Matters
Robert Szewczyk2ab68ff2020-09-07 21:05:42 -0700147scalability.
148
Justin Woodd4a06152020-07-01 08:58:02 -0700149# How to Contribute
150
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +0200151We welcome your contributions to Matter. Read our contribution guidelines
152[here](./CONTRIBUTING.md).
Justin Woodd4a06152020-07-01 08:58:02 -0700153
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +0200154# Building and Developing in Matter
Justin Woodd4a06152020-07-01 08:58:02 -0700155
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +0200156Instructions about how to build Matter can be found [here](./docs/README.md).
Justin Woodc9bbb252020-03-03 10:03:58 -0800157
Justin Woodc9bbb252020-03-03 10:03:58 -0800158# Directory Structure
159
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +0200160The Matter repository is structured as follows:
Justin Woodc9bbb252020-03-03 10:03:58 -0800161
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +0200162| 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 Woodc9bbb252020-03-03 10:03:58 -0800178
179# License
180
Grzegorz Ferencbae3e7d2021-10-19 15:49:45 +0200181Matter is released under the [Apache 2.0 license](./LICENSE).