布尔状态配置 Cluster(BooleanStateConfiguration)
Cluster ID: 0x0080 |
所在 Endpoint: 与 BooleanState 同一 Endpoint(功能端点)
BooleanStateConfiguration 是 BooleanState(0x0045)的配套 Cluster —— BooleanState 负责报告传感器的二值状态(true/false),而 BooleanStateConfiguration 则负责配置传感器的行为: 管理告警输出(视觉闪烁、蜂鸣声)以及调节传感器灵敏度。
典型使用场景:门窗传感器检测到门被打开时,BooleanState 的 StateValue 变为 false, 同时 BooleanStateConfiguration 控制是否亮灯闪烁(Visual)、是否发出蜂鸣声(Audible), 以及传感器的触发灵敏度等级。
这两个 Cluster 必须部署在同一个 Endpoint 上。 BooleanState 是只读的数据源(传感器读数), BooleanStateConfiguration 是可配置的行为层(告警 + 灵敏度)。 开发时不要混淆:读取传感器状态用 BooleanState,配置传感器行为用 BooleanStateConfiguration。
命令(Commands)
BooleanStateConfiguration Cluster 有 2 个命令,分别用于抑制告警和启用/禁用告警。 两个命令都通过 AlarmModeBitmap 位图来指定操作哪些告警通道。 点击下方表格中的命令 ID 可跳转到对应的详细说明。
SuppressAlarm —— 抑制告警(0x00)
临时抑制当前正在激活的告警。例如传感器正在蜂鸣报警,用户按了「静音」按钮后, App 发送此命令让蜂鸣暂停。抑制不等于禁用 —— 告警通道仍然是启用的, 下次传感器再次触发时告警会重新激活。此命令需要设备支持 SPRS(AlarmSuppress) 特性。
| 参数 | 类型 | 说明 |
|---|---|---|
| AlarmsToSuppress | AlarmModeBitmap | 要抑制的告警通道位图(见 AlarmModeBitmap)。只能抑制当前在 AlarmsActive 中激活且在 AlarmsSupported 中支持的告警 |
SuppressAlarm(抑制):临时静音当前这一次告警,下次触发照常响起。相当于闹钟的「稍后提醒」。
EnableDisableAlarm(禁用):永久关闭告警通道,后续触发都不再告警。相当于关掉闹钟。
使用场景
水浸传感器检测到漏水,蜂鸣器响起(AlarmsActive 的 Audible 位 = 1)。 用户已经注意到并在处理,按下 App 中的「静音」按钮。 App 发送 SuppressAlarm(AlarmsToSuppress = 0x02,即 Audible), 设备停止蜂鸣,AlarmsSuppressed 的 Audible 位变为 1。 等用户修好漏水、传感器恢复正常后,抑制自动解除。
EnableDisableAlarm —— 启用/禁用告警(0x01)
启用或禁用指定的告警通道。修改的是 AlarmsEnabled 属性,
决定后续传感器触发时哪些告警通道会响应。此命令需要设备支持至少一个告警特性(VIS 或 AUD)。
| 参数 | 类型 | 说明 |
|---|---|---|
| AlarmsToEnableDisable | AlarmModeBitmap | 新的告警启用位图(见 AlarmModeBitmap)。置 1 的通道启用,置 0 的通道禁用。只能设置 AlarmsSupported 中支持的位 |
使用场景
用户在设置页面关闭了门窗传感器的蜂鸣告警(只保留闪灯提醒)。 App 发送 EnableDisableAlarm(AlarmsToEnableDisable = 0x01,即只启用 Visual), 此后传感器触发时只有指示灯闪烁,不再蜂鸣。
属性详解
BooleanStateConfiguration Cluster 共有 7 个应用属性,分为灵敏度配置和告警状态两组。 点击下方汇总表中的属性 ID 可跳转到对应的详细说明。
| ID | 名称 | 类型 | 分组 | 说明 | 所需特性 |
|---|---|---|---|---|---|
0x0000 |
CurrentSensitivityLevel | uint8 | 灵敏度 | 当前灵敏度级别 | SENS |
0x0001 |
SupportedSensitivityLevels | uint8 | 灵敏度 | 支持的灵敏度级别数 | SENS |
0x0002 |
DefaultSensitivityLevel | uint8 | 灵敏度 | 出厂默认灵敏度级别 | SENS |
0x0003 |
AlarmsActive | AlarmModeBitmap | 告警状态 | 当前正在激活的告警 | VIS 或 AUD |
0x0004 |
AlarmsSuppressed | AlarmModeBitmap | 告警状态 | 当前被抑制的告警 | SPRS |
0x0005 |
AlarmsEnabled | AlarmModeBitmap | 告警状态 | 已启用的告警通道 | VIS 或 AUD |
0x0006 |
AlarmsSupported | AlarmModeBitmap | 告警状态 | 设备支持的告警通道 | VIS 或 AUD |
灵敏度配置(0x0000 ~ 0x0002)
控制传感器的触发灵敏度。灵敏度用一个从 0 开始的整数级别表示, 0 是最高灵敏度(最容易触发),数值越大灵敏度越低。 这组属性需要设备支持 SENS(SensitivityLevel) 特性。
级别是一个抽象数值,0 = 最敏感,数值越大越不敏感。 具体每个级别对应的物理参数(如磁场强度阈值、振动幅度等)由设备厂商定义, Matter 规范不做规定。应用层建议用「高 / 中 / 低」等文案映射,而非显示原始数字。
| ID | 名称 | 类型 | 说明 |
|---|---|---|---|
0x0000 |
CurrentSensitivityLevel(当前灵敏度) | uint8 | 当前生效的灵敏度级别。可读可写,取值范围 0 ~ SupportedSensitivityLevels - 1。需要 SENS 特性 |
0x0001 |
SupportedSensitivityLevels(支持级别数) | uint8 | 设备支持的灵敏度级别总数。最小值为 2(至少有高和低两档)。只读,由设备固件决定。需要 SENS 特性 |
0x0002 |
DefaultSensitivityLevel(默认灵敏度) | uint8 | 出厂默认的灵敏度级别。只读。App 可以提供「恢复默认」按钮,将 CurrentSensitivityLevel 写回此值。需要 SENS 特性 |
灵敏度级别映射示例
假设一个门窗传感器支持 3 个灵敏度级别(SupportedSensitivityLevels = 3):
0= 高灵敏度 —— 轻微振动即触发(适合贵重物品柜)1= 中灵敏度 —— 正常开关门触发(默认,适合大多数场景)2= 低灵敏度 —— 只有明显开门才触发(适合有风的环境,减少误报)
告警状态(0x0003 ~ 0x0006)
管理传感器的告警输出通道。所有告警属性都使用 AlarmModeBitmap 类型, 通过位图控制视觉(闪灯)和听觉(蜂鸣)两种告警模式。
| ID | 名称 | 类型 | 说明 |
|---|---|---|---|
0x0003 |
AlarmsActive(激活的告警) | AlarmModeBitmap | 当前正在激活的告警通道。只读,由设备在传感器触发时自动设置。需要 VIS 或 AUD 特性 |
0x0004 |
AlarmsSuppressed(被抑制的告警) | AlarmModeBitmap | 当前被用户抑制(静音)的告警通道。通过 SuppressAlarm 命令设置。传感器恢复正常后自动清除。需要 SPRS 特性 |
0x0005 |
AlarmsEnabled(已启用的告警) | AlarmModeBitmap | 用户配置的告警通道启用状态。通过 EnableDisableAlarm 命令修改。只有启用的通道才会在传感器触发时激活。需要 VIS 或 AUD 特性 |
0x0006 |
AlarmsSupported(支持的告警) | AlarmModeBitmap | 设备硬件支持的告警通道。只读,由设备固件决定。AlarmsEnabled 的有效位不能超出此范围。需要 VIS 或 AUD 特性 |
AlarmsSupported ⊇ AlarmsEnabled ⊇ AlarmsActive,
AlarmsSuppressed ⊆ AlarmsActive。
设备支持哪些通道(Supported)→ 用户启用了哪些(Enabled)→ 当前哪些在响(Active)→ 哪些被临时静音了(Suppressed)。
AlarmModeBitmap
AlarmsActive、AlarmsSuppressed、AlarmsEnabled、AlarmsSupported 四个属性, 以及两个命令的参数,都使用同一套 AlarmModeBitmap 位图定义。 每一位代表一种告警输出通道:
0x00 = 无告警,
0x01 = 仅闪灯,
0x02 = 仅蜂鸣,
0x03 = 闪灯 + 蜂鸣。
事件(Events)
BooleanStateConfiguration 定义了一个 AlarmsStateChanged 事件,
在告警状态发生任何变化时由设备端主动上报。
| ID | 名称 | 优先级 | 说明 |
|---|---|---|---|
0x00 |
AlarmsStateChanged | Info | 告警状态变化时触发 |
AlarmsStateChanged —— 告警状态变更事件(0x00)
当告警状态发生变化时(告警激活、解除或被抑制),设备会产生此事件。 事件携带变化后的完整告警快照。控制器应当订阅此事件以实时获取告警变化通知。
| 字段 | ID | 类型 | 所需特性 | 说明 |
|---|---|---|---|---|
| AlarmsActive | 0x00 |
AlarmModeBitmap | VIS 或 AUD | 变化后当前激活的告警通道(可选字段,设备支持 VIS/AUD 时携带) |
| AlarmsSuppressed | 0x01 |
AlarmModeBitmap | SPRS | 变化后当前被抑制的告警通道(可选字段,设备支持 SPRS 时携带) |
事件上报示例(视觉告警激活,听觉告警被抑制):
{
"eventReports": [{
"eventData": {
"path": {
"endpointId": 1,
"clusterId": "0x0080",
"eventId": "0x00" // AlarmsStateChanged
},
"eventNumber": 15,
"priority": "INFO",
"data": {
"0": "0x01", // AlarmsActive = 0x01(视觉告警激活)
"1": "0x02" // AlarmsSuppressed = 0x02(听觉告警已抑制)
}
}
}]
}
Feature 位图
BooleanStateConfiguration 通过 FeatureMap(0xFFFC)声明设备支持哪些能力:
设备必须至少支持 VIS、AUD、SENS 三个特性中的一个(否则这个 Cluster 没有意义)。 SPRS(告警抑制)特性需要 VIS 或 AUD 中至少一个同时存在,因为没有告警就无从抑制。
示例数据
一个同时支持视觉告警、听觉告警和灵敏度调节的门窗传感器,读取 BooleanStateConfiguration 属性的结果:
{
// --- 灵敏度配置(SENS 特性)---
"0x0000": 1, // CurrentSensitivityLevel = 1(当前灵敏度级别)
"0x0001": 3, // SupportedSensitivityLevels = 3(支持 0/1/2 三个级别)
"0x0002": 1, // DefaultSensitivityLevel = 1(出厂默认级别)
// --- 告警状态(VIS + AUD 特性)---
"0x0003": "0x03", // AlarmsActive = 0x03(视觉 + 听觉告警均已激活)
"0x0004": "0x00", // AlarmsSuppressed = 0x00(无告警被抑制)
"0x0005": "0x03", // AlarmsEnabled = 0x03(视觉 + 听觉告警均已启用)
"0x0006": "0x03" // AlarmsSupported = 0x03(设备支持视觉 + 听觉告警)
}
先读 FeatureMap (0xFFFC) 判断设备支持哪些特性。
只支持 SENS 的设备没有告警相关属性,只支持 VIS/AUD 的设备没有灵敏度属性。
读取不存在的属性会返回 UNSUPPORTED_ATTRIBUTE 错误。
常见场景
场景 1:门窗传感器告警配置与静音
用户安装了一个带蜂鸣器的门窗传感器,希望在夜间只保留闪灯告警(关闭蜂鸣),并能随时静音。
- 读取
FeatureMap (0xFFFC),确认设备支持 VIS + AUD + SPRS - 读取
AlarmsSupported (0x0006),确认设备支持 Visual(0x01)和 Audible(0x02) - 夜间模式:发送
EnableDisableAlarm,AlarmsToEnableDisable =0x01(仅启用 Visual),关闭蜂鸣 - 日间模式:发送
EnableDisableAlarm,AlarmsToEnableDisable =0x03(恢复 Visual + Audible) - 告警响起时:用户按「静音」,发送
SuppressAlarm,AlarmsToSuppress =0x02(抑制蜂鸣) - 订阅
AlarmsStateChanged事件,实时同步 App 上的告警状态图标
场景 2:水浸传感器灵敏度调节
用户的水浸传感器放在洗衣机旁边,正常使用时偶尔溅水导致误报,需要降低灵敏度。
- 读取
FeatureMap (0xFFFC),确认设备支持 SENS 特性 - 读取
SupportedSensitivityLevels (0x0001)= 3,表示支持 0/1/2 三档 - 读取
DefaultSensitivityLevel (0x0002)= 1,出厂默认为中档 - 在设置页面显示滑块:高(0) / 中(1) / 低(2)
- 用户选择「低」,写入
CurrentSensitivityLevel (0x0000)= 2 - 提供「恢复默认」按钮:点击后将 CurrentSensitivityLevel 写回 DefaultSensitivityLevel 的值(1)