基本信息 Cluster(BasicInformation)

Cluster ID: 0x0028  |  所在 Endpoint: 仅在 Endpoint 0(Root Node)

BasicInformation 提供设备的核心元数据 —— 包括厂商信息、产品标识、硬件/软件版本、序列号、设备外观和协议能力。 这是每个 Matter 设备必须实现的 Cluster,且只存在于 Endpoint 0。 它的属性大多是只读的,仅 NodeLabel 和 LocalConfigDisabled 可写。

仅在 Endpoint 0

与大多数功能 Cluster 不同,BasicInformation 只能出现在 Endpoint 0(Root Node Endpoint)。 如果你在 Endpoint 1 上读取这个 Cluster,会得到 UNSUPPORTED_CLUSTER 错误。 在代码中读取设备信息时,始终指定 endpointId = 0。

配网后读设备身份,就读这里

App 里显示的厂商、型号、固件版本、序列号都来自这个 Cluster。它和 Descriptor(设备类型与 Cluster 列表)一起, 构成了配网后识别一台设备的完整信息,见 概念总览 · 配网后怎么读出设备能力。 想看真实数据长什么样,打开 JSON 解析器 点“设备原始数据”示例。

属性总览

BasicInformation 共有 23 个属性,按功能分为五组。点击属性 ID 可跳转到对应的详细说明。

ID 名称 类型 分组 说明
0x00 DataModelRevision uint16 厂商信息 Data Model 版本号
0x01 VendorName string 厂商信息 厂商名称
0x02 VendorID vendor-id 厂商信息 厂商 ID(CSA 分配)
0x03 ProductName string 厂商信息 产品名称
0x04 ProductID uint16 厂商信息 产品 ID(厂商自定义)
0x05 NodeLabel string 产品信息 用户自定义设备名称(可写)
0x06 Location string 产品信息 ISO 3166-1 alpha-2 国家代码
0x0B ManufacturingDate string 产品信息 生产日期(ISO 8601 格式)
0x0C PartNumber string 产品信息 零件编号
0x0D ProductURL string 产品信息 产品页面 URL
0x0E ProductLabel string 产品信息 产品标签(面向用户的简称)
0x0F SerialNumber string 产品信息 序列号
0x12 UniqueID string 产品信息 设备唯一标识符
0x07 HardwareVersion uint16 版本信息 硬件版本号
0x08 HardwareVersionString string 版本信息 硬件版本字符串
0x09 SoftwareVersion uint32 版本信息 软件版本号(用于 OTA 比较)
0x0A SoftwareVersionString string 版本信息 软件版本字符串(面向用户)
0x10 LocalConfigDisabled bool 设备状态 是否禁用本地配置(可写)
0x11 Reachable bool 设备状态 设备是否可达
0x13 CapabilityMinima struct 规格能力 设备最小能力声明
0x14 ProductAppearance struct 规格能力 产品外观描述(材质 + 颜色)
0x15 SpecificationVersion uint32 规格能力 设备实现的 Matter 规范版本
0x16 MaxPathsPerInvoke uint16 规格能力 单次 Invoke 最大路径数

厂商信息(0x00 – 0x04)

设备的厂商和产品标识,由 CSA 分配或厂商自行设定。这些属性在设备出厂时就已固定,运行时不可更改。

ID 名称 类型 说明
0x00 DataModelRevision(数据模型版本) uint16 设备实现的 Data Model 版本号。用于判断设备支持哪些数据模型特性
0x01 VendorName(厂商名称) string 厂商的人类可读名称,最长 32 字符。如 "Acme Corp"、"Espressif"
0x02 VendorID(厂商 ID) vendor-id 由 CSA(Connectivity Standards Alliance)统一分配的厂商编号。测试用 VID 为 0xFFF1–0xFFF4
0x03 ProductName(产品名称) string 产品的人类可读名称,最长 32 字符。如 "Smart Light"、"Door Lock Pro"
0x04 ProductID(产品 ID) uint16 由厂商自行分配的产品编号,与 VendorID 组合唯一标识一款产品
VendorID + ProductID 组合

VendorID 和 ProductID 的组合可以唯一标识一款 Matter 产品。 在配网流程中,Commissioner(如手机 App)通过这两个值匹配正确的设备驱动和 UI 配置。 DCL(Distributed Compliance Ledger)也使用这个组合来查询设备的认证信息。

产品信息(0x05 – 0x06, 0x0B – 0x0F, 0x12)

描述产品的详细信息 —— 用户标签、生产日期、序列号等。 这些属性中大部分是可选的,实际设备可能只实现其中几个。

ID 名称 类型 说明
0x05 NodeLabel(设备标签) string 用户自定义的设备名称,最长 32 字符。可写 —— App 可以通过 Write 操作修改,如改为 "客厅灯"
0x06 Location(位置) string 设备所在国家/地区,ISO 3166-1 alpha-2 格式,如 "CN"、"US"。固定 2 字符
0x0B ManufacturingDate(生产日期) string 生产日期,ISO 8601 格式,如 "2025-01-15"。可选属性
0x0C PartNumber(零件编号) string 厂商内部的零件编号,最长 32 字符。可选属性
0x0D ProductURL(产品链接) string 产品页面 URL,最长 256 字符。可选属性。用于引导用户查看产品详情或手册
0x0E ProductLabel(产品标签) string 面向用户的产品简称,最长 64 字符。通常比 ProductName 更短,适合在 UI 上展示
0x0F SerialNumber(序列号) string 设备序列号,最长 32 字符。每台设备唯一
0x12 UniqueID(唯一标识) string 设备全局唯一标识符,最长 32 字符。即使恢复出厂设置也不会变化,可用于设备去重
NodeLabel 是唯一常用的可写属性

BasicInformation 的 23 个属性中,只有 NodeLabel 和 LocalConfigDisabled 支持 Write 操作。 其中 NodeLabel 是最常用的 —— 用户在 App 里重命名设备时,实际就是修改这个属性。 写入时需要通过 ACL 权限检查,默认需要 Manage 级别权限。

版本信息(0x07 – 0x0A)

设备的硬件和软件版本信息。OTA 升级流程依赖这些版本号来判断是否需要更新。

ID 名称 类型 说明
0x07 HardwareVersion(硬件版本号) uint16 硬件版本数字编号,厂商自定义。用于区分不同硬件批次
0x08 HardwareVersionString(硬件版本字符串) string 人类可读的硬件版本,1–64 字符,如 "v1.0"、"Rev B"
0x09 SoftwareVersion(软件版本号) uint32 固件版本数字编号。OTA Provider 用这个值与新固件的版本号比较,决定是否推送更新。值越大版本越新
0x0A SoftwareVersionString(软件版本字符串) string 人类可读的软件版本,1–64 字符,如 "v2.0.1"。展示给用户看的版本号
版本号 vs 版本字符串

每个版本都有两个属性:数字编号(Version)和字符串(VersionString)。 数字编号用于程序逻辑比较(如 OTA 版本判断),字符串用于 UI 展示。 App 展示固件版本时应使用 SoftwareVersionString; 判断是否需要升级时应比较 SoftwareVersion 的数值大小。

设备状态(0x10 – 0x11)

描述设备当前的运行状态和配置模式。

ID 名称 类型 说明
0x10 LocalConfigDisabled(禁用本地配置) bool 可写。设为 true 时,设备应禁止通过物理按钮等本地方式修改配置。默认 false
0x11 Reachable(可达状态) bool 设备是否当前可达。对于 Bridged 设备尤其重要 —— Bridge 通过此属性告知 Controller 子设备的在线状态。直连设备通常始终为 true
Reachable 与 Bridged 设备

对于直接连入 Matter Fabric 的设备,Reachable 基本等同于 "只要能通信就是 true"。 但对于通过 Bridge 接入的子设备(如 Zigbee 灯泡通过 Matter Bridge 暴露),Reachable 反映的是 Bridge 到子设备之间的连接状态。当子设备离线时,Bridge 会将 Reachable 设为 false 并触发 ReachableChanged 事件。

规格能力(0x13 – 0x16)

描述设备支持的协议能力和产品外观。

ID 名称 类型 说明
0x13 CapabilityMinima(最小能力) struct 设备声明的最小协议能力(见下方结构体说明)
0x14 ProductAppearance(产品外观) struct 产品的物理外观描述:表面材质和主要颜色(见下方结构体和枚举说明)
0x15 SpecificationVersion(规范版本) uint32 设备实现的 Matter 规范版本。编码为 Major.Minor.Patch.Reserved,每段 8 位。例如 0x01010000 = Matter 1.1.0
0x16 MaxPathsPerInvoke(单次调用最大路径数) uint16 单次 Invoke Request 中允许携带的最大 Command 路径数。至少为 1

CapabilityMinima 结构体

描述设备的最小协议处理能力,Controller 可据此调整交互策略。

字段 类型 说明
CaseSessionsPerFabric uint16 每个 Fabric 支持的最大并发 CASE Session 数量。至少为 3
SubscriptionsPerFabric uint16 每个 Fabric 支持的最大并发 Subscription 数量。至少为 3
CapabilityMinima 的实际意义

如果 Controller 需要为同一台设备建立多个 CASE Session(如同时做 OTA 和控制), 应先检查 CaseSessionsPerFabric 确认设备是否支持。 SubscriptionsPerFabric 同理 —— 如果 App 需要订阅多组属性变更通知, 需要确保总订阅数不超过设备声明的上限。

ProductAppearance 结构体

描述产品的物理外观特征,用于在 App 中展示设备图标或配色。

字段 类型 说明
Finish ProductFinishEnum 产品表面材质(见下方枚举)
PrimaryColor ColorEnum 产品主要颜色(见下方枚举)。Nullable —— 不适用时为 null

ProductFinishEnum(表面材质)

0
Other 其他
1
Matte 哑光
2
Satin 缎面
3
Polished 抛光
4
Rugged 粗糙(工业风)
5
Fabric 织物

ColorEnum(产品颜色)

0
Black 黑色
1
Navy 藏青
2
Green 绿色
3
Teal 青色
4
Maroon 栗色
5
Purple 紫色
6
Olive 橄榄色
7
Gray 灰色
8
Blue 蓝色
9
Lime 青柠色
10
Aqua 水蓝色
11
Red 红色
12
Fuchsia 品红色
13
Yellow 黄色
14
White 白色
15
Nickel 镍色
16
Chrome 铬色
17
Brass 黄铜色
18
Copper 铜色
19
Silver 银色
20
Gold 金色

Command

早期版本的 BasicInformation 有一个可选的 Command;较新版本(本站对照 v1.6)中这个 Cluster 已经没有任何命令:

ID 名称 方向 必选 说明
0x00 MfgSpecificPing 新版已移除 Client → Server 可选 厂商自定义的 Ping 命令,用于检测设备响应。无参数,无返回值
MfgSpecificPing 已在新版中移除

这个命令只出现在早期的定义里,而且是可选的,实际上很少有设备实现;较新版本的 Matter 已经没有它。 如果需要检测设备是否在线,通常直接读取任意属性(如 SoftwareVersion)即可 —— 能读成功就说明设备在线。

示例数据

一个典型 Matter 设备的 BasicInformation Cluster 读取结果:

{
  // --- 厂商信息 ---
  "0x0": 17,                   // DataModelRevision = 17
  "0x1": "Acme Corp",          // VendorName
  "0x2": 65521,                // VendorID = 0xFFF1(测试厂商)
  "0x3": "Smart Light",        // ProductName
  "0x4": 32769,                // ProductID = 0x8001

  // --- 产品信息 ---
  "0x5": "Living Room Light",  // NodeLabel(用户自定义名称)
  "0x6": "CN",                 // Location = 中国
  "0xB": "2025-01-15",         // ManufacturingDate
  "0xC": "ABC-1234",           // PartNumber
  "0xD": "https://example.com/product",  // ProductURL
  "0xE": "Smart Light Pro",    // ProductLabel
  "0xF": "SN20250115001",      // SerialNumber
  "0x12": "a1b2c3d4e5f6",     // UniqueID

  // --- 版本信息 ---
  "0x7": 1,                    // HardwareVersion = 1
  "0x8": "v1.0",               // HardwareVersionString
  "0x9": 2,                    // SoftwareVersion = 2
  "0xA": "v2.0.1",             // SoftwareVersionString

  // --- 设备状态 ---
  "0x10": false,               // LocalConfigDisabled = false(允许本地配置)
  "0x11": true,                // Reachable = true(设备可达)

  // --- 规格能力 ---
  "0x13": {                    // CapabilityMinima
    "CaseSessionsPerFabric": 3,
    "SubscriptionsPerFabric": 3
  },
  "0x14": {                    // ProductAppearance
    "Finish": 1,               // Matte(哑光)
    "PrimaryColor": 7          // Gray(灰色)
  },
  "0x15": 65792,               // SpecificationVersion = 0x01010000 → 1.1.0.0
  "0x16": 1                    // MaxPathsPerInvoke = 1
}
读取设备信息的典型流程

App 首次连接到设备后,通常会读取 BasicInformation 来展示设备详情页:

  1. 读取 VendorName (0x01) + ProductName (0x03) 作为设备标题
  2. 读取 NodeLabel (0x05) 展示用户自定义名称(如果有)
  3. 读取 SoftwareVersionString (0x0A) 展示当前固件版本
  4. 读取 SerialNumber (0x0F) 用于售后或设备管理
  5. 读取 Reachable (0x11) 判断设备在线状态(Bridged 设备)

注意所有读取都要指定 endpointId = 0,因为 BasicInformation 只在 Root Node 上。