概念总览
- Matter 用四层结构描述一个设备能做什么
- Node、Endpoint、Cluster、Attribute、Command 分别是什么意思
- 看到 "Endpoint 1 / Cluster 0x0101 / Attribute 0x0 = 0x01" 时,能直接翻译成人话
- 不管你是 App 开发、固件工程、测试还是产品,都能看懂设备数据
这一章讲清楚 Matter 协议的核心概念,不需要特定技术背景,每个人都能看懂。 读完之后,你看到 "Endpoint 1 / Cluster 0x0101 / Attribute 0x0 = 0x01" 这样的数据,就能直接知道它在说什么。
什么是 Matter
Matter 是一个智能家居统一标准协议,由 Apple、Google、Amazon、三星等公司联合制定(组织叫 CSA,Connectivity Standards Alliance)。
在 Matter 出现之前,同一个智能灯泡想同时被 HomeKit、Google Home、Alexa 控制,厂商得分别接入三套完全不同的协议。 Matter 的目标很简单:定义一套标准的数据模型和通信方式,所有平台都认。
打个比方:Matter 就像 USB-C 接口。以前每家手机一个充电口,现在统一成 USB-C,线和设备都可以互换。 Matter 做的事一样 —— 给智能家居设备定义了一个"统一接口"。
Matter 的四层数据模型
Matter 把一个设备的所有能力组织成四个层次。这是 Matter 最核心的概念,理解了它就理解了大半。
想象一栋智能大楼 —— 这个类比能帮你一下子看懂整个结构:
如果觉得大楼不够直观,也可以想成你的手机:Node = 手机本身,Endpoint = 手机里的一个 App,Cluster = App 里的一个功能模块,Attribute = 能看到的信息(电量 80%),Command = 能执行的操作(拍照、发消息)。
下面逐层展开说明。
Node(设备节点)
Node 就是网络中的一个物理设备。一个门锁是一个 Node,一个灯泡也是一个 Node。
类比:一栋智能大楼。大楼本身就是一个 Node,里面有不同的房间,每个房间装了不同的设备系统。
一把 Matter 门锁就是一个 Node。它通过 WiFi 或 Thread 网络加入 Matter 网络后,控制端(比如手机 App)就能发现并操作它。
Endpoint(端点)
一个 Node 上可以有多个 Endpoint,每个 Endpoint 是一个独立的功能区域。
类比:大楼里的不同房间。物业办公室管大楼本身的事务(水电、维修),住户房间才是实际生活的地方。Endpoint 也是这样,不同的端点承担不同的职责。
Matter 规定了两类 Endpoint:
Endpoint 0 是每个 Matter 设备都必须有的,里面放的是设备的"身份证"和"系统设置"。日常工作中主要打交道的是 Endpoint 1(功能端点),门锁的开/关锁、用户管理都在那里。
Cluster(簇)
Cluster 是 Matter 数据模型里最关键的概念。一个 Cluster 定义了一组相关的能力 —— 包括它有哪些状态(Attribute)和支持哪些操作(Command)。
类比:房间里的一套设备系统。比如房间里有灯光系统、空调系统、门锁系统,每套系统管一类事情,有自己的状态和操作方式。Cluster 就是这样的一套功能系统。
每个 Cluster 都有一个标准 ID(十六进制),由 CSA 统一分配:
| Cluster ID | 名称 | 是什么 |
|---|---|---|
0x0101 | DoorLock | 门锁系统 —— 开锁、关锁、管理用户 |
0x002F | PowerSource | 供电系统 —— 电池电量、充电状态 |
0x0006 | OnOff | 开关系统 —— 开、关、切换 |
0x0028 | BasicInformation | 铭牌信息 —— 厂商、产品名、固件版本 |
0x001D | Descriptor | 目录清单 —— 列出端点里有哪些 Cluster |
一把 Matter 门锁的 Endpoint 1 上通常有这些 Cluster:
- DoorLock (0x0101) —— 核心功能:开锁、关锁、管理用户和凭据
- PowerSource (0x002F) —— 电池信息:电量、充电状态
- Identify (0x0003) —— 标识功能:让门锁闪灯或响铃,方便用户找到它
Attribute(属性)
Attribute 是 Cluster 里的状态信息,每个 Attribute 也有一个 ID。可以理解为设备仪表盘上的一个读数 —— 你可以去看它,有些还可以调整。
有些 Attribute 是只读的(比如锁当前的状态),有些可以写入(比如设置自动回锁时间)。
| Attribute ID | 所属 Cluster | 名称 | 含义 |
|---|---|---|---|
0x0 | DoorLock | LockState | 门锁当前状态(锁了没有?) |
0x23 | DoorLock | AutoRelockTime | 自动回锁时间(开门后多久自动锁上?) |
0xC | PowerSource | BatPercentRemaining | 电池剩余电量(还剩多少电?) |
Command(命令)
Command 是 Cluster 支持的操作,就像遥控器上的按钮 —— 按下去,设备就执行对应的动作。
| Command ID | 所属 Cluster | 名称 | 含义 |
|---|---|---|---|
0x0 | DoorLock | LockDoor | 上锁(按下"锁门"按钮) |
0x1 | DoorLock | UnlockDoor | 解锁(按下"开门"按钮) |
0x26 | DoorLock | SetUser | 添加/修改用户(录入新住户信息) |
完整示例:门锁的 Matter 数据结构
把上面的概念串起来,一个门锁设备的 Matter 数据结构长这样:
Node(门锁设备 —— 整栋大楼)
├── Endpoint 0(管理端点 —— 物业办公室)
│ ├── BasicInformation (0x0028) → 厂商名、产品名、序列号
│ ├── Descriptor (0x001D) → 列出本端点有哪些 Cluster
│ └── NetworkCommissioning (0x0031)→ WiFi/Thread 网络配置
│
└── Endpoint 1(功能端点 —— 住户房间)
├── DoorLock (0x0101) → 门锁系统
│ ├── Attribute 0x0: LockState = 0x01(已锁定)
│ ├── Attribute 0x23: AutoRelockTime = 30(30秒自动回锁)
│ ├── Command 0x0: LockDoor → 上锁
│ └── Command 0x1: UnlockDoor → 解锁
│
├── PowerSource (0x002F) → 供电系统
│ ├── Attribute 0x0: Status = 1(Active)
│ └── Attribute 0xC: BatPercent = 180(实际 90%)
│
└── Identify (0x0003) → 定位系统
└── Command 0x0: Identify → 闪灯/响铃当有人说 "Endpoint 1 / Cluster 0x0101 / Attribute 0x0 的值是 0x01",翻译成人话就是:功能端点上的门锁模块,当前锁状态是"已锁定"。
Device Type(设备类型)
Device Type 规定了一种设备必须支持哪些 Cluster。它就像一份资质清单。
比如 "DoorLock" 这个 Device Type 要求设备至少实现 DoorLock Cluster、Identify Cluster 等。 "Dimmable Light" 则要求实现 OnOff Cluster 和 LevelControl Cluster。
类比:就像酒店要被评为"五星级",就必须有健身房、泳池、24 小时前台等设施。设备要声称自己是"门锁"类型,就必须具备 Matter 规定的那些能力。
Fabric(信任域)
Fabric 是 Matter 网络中的信任域。同一个 Fabric 里的设备互相信任,可以直接通信和控制。
类比:公司内网。你的电脑连上公司 VPN 就在一个信任域里,可以访问内部服务。不在 VPN 里的人访问不了。
一个设备可以同时加入多个 Fabric。比如一个门锁可以同时被 Apple Home 和 Google Home 控制 —— 它在两个 Fabric 里各有一个身份。
Commissioner 与配网
把设备加入 Fabric 的过程叫做 Commissioning(配网)。执行这个操作的设备叫 Commissioner。
配网流程简单来说:
- Commissioner(通常是手机 App)扫描设备的二维码或输入配对码
- 通过 PASE(Passcode-Authenticated Session Establishment)建立安全会话
- Commissioner 给设备分配证书(NOC),设备正式加入 Fabric
- 配网完成后,手机 App 或智能音箱作为 Controller 就可以读取 Attribute、发送 Command 来控制设备了
Commissioner 是配网时的角色(负责把设备拉进来),Controller 是日常控制的角色。手机 App 通常同时扮演这两个角色。
ID 编号规范
Matter 中几乎所有东西都用十六进制 ID 标识。了解编号范围有助于你快速判断一个 ID 的含义。
| 类型 | ID 范围 | 说明 |
|---|---|---|
| 标准 Cluster | 0x0000 ~ 0x7FFF | CSA 官方定义,所有厂商统一使用 |
| 厂商自定义 Cluster | 0xFC00 ~ 0xFFFE | 厂商私有扩展,需搭配 VendorID 使用 |
| 标准 Attribute | 0x0000 ~ 0x4FFF | Cluster 内的标准属性 |
| 全局 Attribute | 0xFFF8 ~ 0xFFFE | 每个 Cluster 都有的公共属性(如 ClusterRevision) |
| 标准 Command | 0x00 ~ 0xFF | Cluster 内的标准命令 |
常见 Cluster ID 速查
| ID | Cluster | 用途 |
|---|---|---|
0x001D | Descriptor | 描述端点包含的 Cluster 列表 |
0x0028 | BasicInformation | 设备基本信息(厂商、产品名、固件版本) |
0x002F | PowerSource | 电源/电池状态 |
0x0031 | NetworkCommissioning | 网络配置(WiFi/Thread) |
0x0003 | Identify | 设备标识(闪灯/响铃) |
0x0006 | OnOff | 开关控制 |
0x0008 | LevelControl | 亮度/级别控制 |
0x0101 | DoorLock | 门锁控制 |
0x0300 | ColorControl | 颜色控制(色温、HSV) |
Matter 完整规范由 CSA 发布,成员可在 csa-iot.org 下载。开源实现在 connectedhomeip 仓库,其中 src/app/zap-templates/zcl/data-model/chip/*.xml 包含所有标准 Cluster 定义。