设备标识 Cluster(Identify)

Cluster ID: 0x0003  |  所在 Endpoint: 通常在 Endpoint 1(功能端点),也常见于 Endpoint 0(Root)

Identify 用于触发设备上的视觉或听觉指示器(闪灯、响铃、屏幕闪烁等),帮助用户在多个设备中定位某一台。 这个 Cluster 非常小 —— 只有 2 个属性和 2 个命令,但几乎所有 Matter 设备都必须支持它。

什么时候用

配网完成后,用户不确定刚加入的是哪台灯?发一个 Identify 命令让它闪几秒。 调试时想确认 App 连的是不是目标设备?TriggerEffect 让设备做出明确反馈。 这是最简单的「设备在哪」确认手段。

属性总览

Identify 只有两个属性,都是必须支持的。点击属性 ID 可跳转到详细说明。

ID 名称 类型 读写 说明
0x00 IdentifyTime uint16 读写 标识剩余时间(秒)
0x01 IdentifyType enum8 只读 设备支持的标识方式

IdentifyTime(标识剩余时间)

当前标识效果的剩余秒数。写入一个非零值会立即开始标识,设备以每秒递减的方式倒计时到 0 后停止。 写入 0 可以立即停止正在进行的标识。

直接写属性 vs 发命令

直接写 IdentifyTime = 10 和发送 Identify(IdentifyTime: 10) 命令效果完全相同。 命令方式更常用,因为语义更清晰,且部分 SDK 对命令有更好的封装。

IdentifyType(标识方式)

只读属性,描述设备使用哪种方式进行标识。不同的设备硬件能力不同,灯泡会闪灯,门锁可能会响铃,带屏幕的设备会闪烁显示。

IdentifyTypeEnum 枚举值

0
None 无标识能力
1
LightOutput 通过灯光标识(闪灯、变色)
2
VisibleIndicator 通过可见指示器标识(LED 指示灯)
3
AudibleBeep 通过声音标识(蜂鸣器)
4
Display 通过屏幕标识(闪烁显示)
5
Actuator 通过执行器标识(如电机振动)

命令(Commands)

Identify Cluster 有两个命令,都是 Client 发给 Server(即 App 发给设备)。 不需要 Timed Interaction,也没有安全限制,直接发送即可。

ID 名称 说明
0x00 Identify 开始标识,设备闪烁指定秒数
0x40 TriggerEffect 触发指定的标识效果

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 枚举值

0x00
Blink 快速闪烁一次(约 0.5 秒)
0x01
Breathe 呼吸灯效果(约 15 秒渐亮渐暗循环)
0x02
Okay 确认反馈(闪两下表示「收到」)
0x0B
ChannelChange 频道切换效果(约 8 秒的色彩/亮度变化)
0xFE
FinishEffect 平滑结束当前正在播放的效果
0xFF
StopEffect 立即停止当前效果

EffectVariantEnum 枚举值

0
Default 默认变体(目前是唯一选项)

请求示例(触发呼吸灯效果):

{
  "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 中的「设备定位」功能通常这样实现:

  1. 用户点击「定位设备」按钮
  2. 发送 Identify 命令,IdentifyTime = 15(闪 15 秒)
  3. App 端同步显示 15 秒倒计时
  4. 用户找到设备后可发 Identify(IdentifyTime: 0) 提前停止

如果想要更精细的效果控制(比如只闪一下确认连接),用 TriggerEffect(Blink, Default) 比 Identify 更合适。