概念总览

读完这页你会知道
  • 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 是一个应用层协议:它只定义上面几层(设备能做什么、怎么交互、怎么加密),下面直接跑在现有的 Wi-Fi、Thread、以太网这些 IP 网络上;蓝牙只在配网阶段临时用一下。

Matter 协议分层:应用层(Cluster 数据模型)、交互模型、安全层、传输层由 Matter 定义,网络层 IPv6 和链路层 Wi-Fi / Thread / 以太网复用现有技术,蓝牙 BLE 仅用于配网
Matter 只定义上面四层,下面复用现有 IP 网络;蓝牙 BLE 只在配网时用

想知道 Matter 和 Zigbee、Z-Wave、蓝牙 Mesh 这些协议各管哪几层、有什么异同,见 协议对比。 设备该走 Thread 还是 Wi-Fi、家里要不要网关,见 Thread 还是 Wi-Fi 和 要不要网关。

Matter 的四层数据模型

Matter 把一个设备的所有能力组织成四个层次。这是 Matter 最核心的概念,理解了它就理解了大半。

想象一栋智能大楼 —— 这个类比能帮你一下子看懂整个结构:

Node(设备节点) 例:一把智能门锁 Endpoint 0 管理端点 BasicInformation 基本信息 · 0x0028 ATTRIBUTES 厂商名 VendorName 产品名 ProductName 固件版本 SoftwareVersion COMMANDS (无) Endpoint 1 功能端点 DoorLock 门锁控制 · 0x0101 ATTRIBUTES 锁状态 LockState 电池电量 BatPercentRemaining COMMANDS 上锁 LockDoor 解锁 UnlockDoor Node Endpoint Cluster Attribute Command
另一种理解方式:手机类比

如果觉得大楼不够直观,也可以想成你的手机:Node = 手机本身,Endpoint = 手机里的一个 App,Cluster = App 里的一个功能模块,Attribute = 能看到的信息(电量 80%),Command = 能执行的操作(拍照、发消息)。

Matter 概念 日常类比 Node 设备节点 — 物理设备 智能大楼 一栋完整的建筑 Endpoint 端点 — 独立功能区域 房间 / 功能区 物业办公室、住户房间 Cluster 能力簇 — 一组相关能力 设备系统 灯光、空调、门锁系统 Attribute / Command 属性 / 命令 仪表盘 / 遥控器 读数 / 按钮

下面逐层展开说明。

Node(设备节点)

Node 就是网络中的一个物理设备。一个门锁是一个 Node,一个灯泡也是一个 Node。

类比:一栋智能大楼。大楼本身就是一个 Node,里面有不同的房间,每个房间装了不同的设备系统。

门锁示例

一把 Matter 门锁就是一个 Node。它通过 WiFi 或 Thread 网络加入 Matter 网络后,控制端(比如手机 App)就能发现并操作它。

Endpoint(端点)

一个 Node 上可以有多个 Endpoint,每个 Endpoint 是一个独立的功能区域。

类比:大楼里的不同房间。物业办公室管大楼本身的事务(水电、维修),住户房间才是实际生活的地方。Endpoint 也是这样,不同的端点承担不同的职责。

Matter 规定了两类 Endpoint:

门锁设备 (Node) Endpoint 0 管理端点 配网 / 证书 / 诊断 / OTA 升级 日常开发中通常不需要关心 Endpoint 1 功能端点 重点 上锁 / 解锁 / 用户管理 / 电池状态 / 设备标识 日常开发主要与这个端点打交道 包含 DoorLock、PowerSource、Identify 等 Cluster 某些设备可能有更多端点(Endpoint 2、3...) 例如多合一传感器的不同功能各占一个端点
实用提示

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:

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。

Device Type 示意:门锁类型必须实现 DoorLock 和 Identify Cluster;可调光灯类型必须实现 OnOff、LevelControl、Identify 和 Groups Cluster
两个 Device Type 各自要求的 Cluster 清单

类比:就像酒店要被评为"五星级",就必须有健身房、泳池、24 小时前台等设施。设备要声称自己是"门锁"类型,就必须具备 Matter 规定的那些能力。

每种设备类型都有一个编号,例如门锁是 0x000A、可调光灯是 0x0101、每台设备都有的根节点是 0x0016。 设备在每个端点的 Descriptor.DeviceTypeList 里声明自己是什么类型,一个端点可以同时声明多个(比如“门锁 + 电源”)。 全部编号见 Matter ID 查询 · 设备类型速查。

设备类型只说明“至少有什么”

同样声明为门锁 0x000A,一把支持指纹和用户管理,另一把只支持密码,这完全合规。设备类型只规定必须有的部分, 可选能力要看每个 Cluster 的 FeatureMap、AttributeList、AcceptedCommandList,见下文 配网后怎么读出设备能力。

Fabric(信任域)

Fabric 是 Matter 网络中的信任域。同一个 Fabric 里的设备互相信任,可以直接通信和控制。

类比:公司内网。你的电脑连上公司 VPN 就在一个信任域里,可以访问内部服务。不在 VPN 里的人访问不了。

一个设备可以同时加入多个 Fabric。比如一个门锁可以同时被 Apple Home 和 Google Home 控制 —— 它在两个 Fabric 里各有一个身份。

Fabric 示意:一把智能门锁同时处于 Apple Home Fabric 和 Google Home Fabric 中,在每个 Fabric 里持有独立的证书
同一把门锁同时加入两个 Fabric,各持一份独立证书

Commissioner 与配网

把设备加入 Fabric 的过程叫做 Commissioning(配网)。执行这个操作的设备叫 Commissioner。

配网流程简单来说:

  1. Commissioner(通常是手机 App)扫描设备的二维码或输入配对码
  2. 通过蓝牙 BLE 发现设备(设备还没进网络,只能靠蓝牙沟通)
  3. 通过 PASE(Passcode-Authenticated Session Establishment)建立安全会话
  4. Commissioner 给设备分配证书(NOC),设备正式加入 Fabric
  5. 把 Wi-Fi 或 Thread 的网络凭据发给设备,让它接入家庭网络
  6. 配网完成后,手机 App 或智能音箱作为 Controller 就可以读取 Attribute、发送 Command 来控制设备了
Matter 配网流程六步:扫描二维码、蓝牙发现设备、PASE 建立安全会话、颁发证书 NOC 加入 Fabric、配置 Wi-Fi/Thread 网络、配网完成由 Controller 控制
配网的六个步骤:前半段靠蓝牙和配对码建立信任,后半段把设备接进家庭网络
角色说明

Commissioner 是配网时的角色(负责把设备拉进来),Controller 是日常控制的角色。手机 App 通常同时扮演这两个角色。

配网后:怎么知道设备是什么、能做什么

配网只是把设备拉进网络。接下来 App 要回答两个问题:这是什么设备?它支持哪些功能? Matter 没有单独的“设备说明书”文件,答案就在几个标准字段里。每台设备都必须提供这些字段,任何 Controller 都能读。

想知道 读哪个字段 在哪里(Cluster / 属性) 门锁的例子
设备有哪些端点Descriptor.PartsList端点 0 · 0x001D / 0x0003[1]
每个端点是什么设备Descriptor.DeviceTypeList每个端点 · 0x001D / 0x00000x000A 门锁 + 0x0011 电源
每个端点有哪些功能模块Descriptor.ServerList每个端点 · 0x001D / 0x00010x0003 0x001D 0x002F 0x0101
某个模块开了哪些可选功能FeatureMap(全局属性)每个 Cluster · 0xFFFC389 = 密码 + 指纹 + 远程密码 + 用户管理
能对它发哪些命令AcceptedCommandList(全局属性)每个 Cluster · 0xFFF9LockDoor、UnlockDoor、SetUser…
实现了哪些属性AttributeList(全局属性)每个 Cluster · 0xFFFBLockState、AutoRelockTime…
厂商、型号、版本、序列号BasicInformation端点 0 · 0x0028VendorName、ProductName、SoftwareVersionString

Controller 的标准读取顺序:

  1. 读端点 0 的 PartsList,拿到所有端点编号
  2. 逐个端点读 DeviceTypeList,知道每个端点“是什么”
  3. 逐个端点读 ServerList,知道每个端点“有哪些 Cluster”
  4. 逐个 Cluster 读 FeatureMap / AcceptedCommandList / AttributeList,知道具体“能做什么”
  5. 读端点 0 的 BasicInformation,拿到厂商、型号、固件版本

能不能直接拿到设备的原始功能集?

能。Matter 支持通配读取(Wildcard Read):端点、Cluster、属性都填“全部”,一次把设备上所有属性读回来,上表里的字段全在里面。 这就是一台设备最原始、最完整的能力描述,各家 App 显示的设备信息都是从这里解读出来的。

  • chip-tool(官方命令行工具):chip-tool any read-by-id 0xFFFFFFFF 0xFFFFFFFF <节点ID> 0xFFFF,三个 F 分别代表全部 Cluster、全部属性、全部端点
  • 只读某一项:chip-tool descriptor read device-type-list <节点ID> 1 读端点 1 的设备类型
  • 各平台 SDK:Android、iOS、Web 都有对应接口,见 SDK 指南 · 读取设备类型与能力
  • Home Assistant:设备页面 → 下载诊断数据,其中 attributes 就是通配读取的结果,键名是 端点/Cluster/属性(十进制)
动手试试

打开 JSON 解析器,点“设备原始数据”示例再点解析。它会把一台门锁的通配读取结果整理成设备画像, 并在每一项旁边标出它来自哪个字段。遇到不认识的 ID,用 Matter ID 查询 查。

ID 编号规范

Matter 中几乎所有东西都用十六进制 ID 标识。了解编号范围有助于你快速判断一个 ID 的含义。

Cluster ID 其实是 4 个字节

规范里 Cluster、属性、命令、事件、设备类型的 ID 都是 32 位:前 16 位是厂商前缀,后 16 位是编号。 标准定义的前缀都是 0x0000,平时省略不写,所以门锁 Cluster 完整写法是 0x0000_0101,简写成 0x0101。 厂商私有扩展必须带上自己的厂商 ID,例如 0x1234_FC00。

类型 编号范围(后 16 位) 说明
标准 Cluster 0x0000 ~ 0x7FFF CSA 官方定义,前缀固定为 0x0000
厂商自定义 Cluster 0xFC00 ~ 0xFFFE 前缀必须是厂商 ID,完整写法如 0x1234_FC00
标准 Attribute 0x0000 ~ 0x4FFF Cluster 内的标准属性
全局 Attribute 0xF000 ~ 0xFFFE 每个 Cluster 都有:FeatureMap 0xFFFC、AttributeList 0xFFFB、AcceptedCommandList 0xFFF9、ClusterRevision 0xFFFD 等
标准 Command 0x00 ~ 0xFF Cluster 内的标准命令
标准 Device Type 0x0000 ~ 0xBFFF 设备类型,如 0x000A 门锁、0x0016 根节点

拿到一个不认识的 ID?用 Matter ID 查询 直接查,十六进制、十进制都能认。 注意同一个数字在不同字段里含义不同:0x0101 作为 Cluster 是门锁,作为设备类型却是可调光灯。

常见 Cluster ID 速查

ID Cluster 用途
0x001DDescriptor描述端点包含的 Cluster 列表
0x0028BasicInformation设备基本信息(厂商、产品名、固件版本)
0x002FPowerSource电源/电池状态
0x0031NetworkCommissioning网络配置(WiFi/Thread)
0x0003Identify设备标识(闪灯/响铃)
0x0006OnOff开关控制
0x0008LevelControl亮度/级别控制
0x0101DoorLock门锁控制
0x0300ColorControl颜色控制(色温、HSV)
在哪查标准定义

Matter 完整规范由 CSA 发布,成员可在 csa-iot.org 下载。开源实现在 connectedhomeip 仓库,其中 src/app/zap-templates/zcl/data-model/chip/*.xml 包含所有标准 Cluster 定义。