设备标识 Cluster(Identify)
Cluster ID: 0x0003 |
所在 Endpoint: 通常在 Endpoint 1(功能端点),也常见于 Endpoint 0(Root)
Identify 用于触发设备上的视觉或听觉指示器(闪灯、响铃、屏幕闪烁等),帮助用户在多个设备中定位某一台。 这个 Cluster 非常小 —— 只有 2 个属性和 2 个命令,但几乎所有 Matter 设备都必须支持它。
配网完成后,用户不确定刚加入的是哪台灯?发一个 Identify 命令让它闪几秒。 调试时想确认 App 连的是不是目标设备?TriggerEffect 让设备做出明确反馈。 这是最简单的「设备在哪」确认手段。
属性总览
Identify 只有两个属性,都是必须支持的。点击属性 ID 可跳转到详细说明。
IdentifyTime(标识剩余时间)
当前标识效果的剩余秒数。写入一个非零值会立即开始标识,设备以每秒递减的方式倒计时到 0 后停止。
写入 0 可以立即停止正在进行的标识。
直接写 IdentifyTime = 10 和发送 Identify(IdentifyTime: 10) 命令效果完全相同。
命令方式更常用,因为语义更清晰,且部分 SDK 对命令有更好的封装。
IdentifyType(标识方式)
只读属性,描述设备使用哪种方式进行标识。不同的设备硬件能力不同,灯泡会闪灯,门锁可能会响铃,带屏幕的设备会闪烁显示。
IdentifyTypeEnum 枚举值
命令(Commands)
Identify Cluster 有两个命令,都是 Client 发给 Server(即 App 发给设备)。 不需要 Timed Interaction,也没有安全限制,直接发送即可。
Identify —— 开始标识(0x00)
让设备开始标识,持续指定的秒数。设备会根据自身 IdentifyType 的能力选择标识方式(闪灯、响铃等)。
发送后 IdentifyTime 属性会被设置为传入的值,然后逐秒递减到 0。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| IdentifyTime | uint16 | 是 | 标识持续时间,单位秒。传 0 立即停止 |
请求示例:
{
"invokeRequests": [{
"commandPath": {
"endpointId": 1,
"clusterId": "0x0003",
"commandId": "0x00" // Identify
},
"commandFields": {
"0": 10 // IdentifyTime = 10 秒
}
}]
}
TriggerEffect —— 触发效果(0x40)
触发一个预定义的标识效果。与 Identify 命令不同,TriggerEffect 指定的是效果类型而非持续时间 —— 每种效果有自己的固定时长和表现方式。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| EffectIdentifier | enum8 | 是 | 要触发的效果类型(见下方枚举) |
| EffectVariant | enum8 | 是 | 效果变体,目前只有 0 = Default |
EffectIdentifierEnum 枚举值
EffectVariantEnum 枚举值
请求示例(触发呼吸灯效果):
{
"invokeRequests": [{
"commandPath": {
"endpointId": 1,
"clusterId": "0x0003",
"commandId": "0x40" // TriggerEffect
},
"commandFields": {
"0": 1, // EffectIdentifier = Breathe(呼吸灯效果)
"1": 0 // EffectVariant = Default
}
}]
}
示例数据
读取一个灯泡设备的 Identify Cluster 属性:
{
// --- 属性 ---
"0x0": 0, // IdentifyTime = 0(当前未在标识中)
"0x1": 2 // IdentifyType = VisibleIndicator(LED 指示灯)
}
App 中的「设备定位」功能通常这样实现:
- 用户点击「定位设备」按钮
- 发送
Identify命令,IdentifyTime = 15(闪 15 秒) - App 端同步显示 15 秒倒计时
- 用户找到设备后可发
Identify(IdentifyTime: 0)提前停止
如果想要更精细的效果控制(比如只闪一下确认连接),用 TriggerEffect(Blink, Default) 比 Identify 更合适。