Matter Cluster: On/Off Cluster
On/Off Cluster的作用?
On/Off Cluster 是 Matter 协议中最基础且广泛使用的 Cluster 之一,主要用于控制设备的开关状态(如灯泡、开关、插座等)。
Cluster ID
分类:
Hierarchy | Role | Scope | PICS Code |
---|---|---|---|
Base | Application | Endpoint | OO |
ID | Name |
---|---|
0x0006 | On/Off |
Features
Bit | Code | Feature | Conformance | Summary |
---|---|---|---|---|
0 | LT | Lighting | [!OFFONLY] | Behavior that supports lighting application |
1 | DF | DeadFrontBehavior | [!OFFONLY] | Device supports the offOnly feature |
2 | OFFONLY | OffOnly | [!(LT| DF)] | Device supports the OffOnly feature |
Lighting Feature
若该Feature的LT被实现了,则说明On/Off Cluster被灯类应用。
每一个cluster实例都必须支持 FeatureMap
attribute。
Attributes
ID | Name | Type | Constraint | Quality | Default | Access | Conformance |
---|---|---|---|---|---|---|---|
0x0000 | OnOff | bool | all | SN | FALSE | R V | M |
0x4000 | GlobalSceneControl | bool | all | TRUE | R V | LT | |
0x4001 | OnTime | uint16 | all | 0 | RW VO | LT | |
0x4002 | OffWaitTime | uint16 | all | 0 | RW VO | LT | |
0x4003 | StartUpOnOff | StartUpOnOffEnum | desc | XN | MS | RW VM | LT |
- OnOff Attribute
这个属性暗示着在Endpoint上设备状态是关闭或打开,该属性的值也对应着FALSE或TRUE。
- GlobalSceneControl Attribute
为了支持用户恢复一组设备的最后设置(例如灯光的级别设置)的用例,引入了一个全局场景,该场景在设备关闭时存储并在设备打开时调用。全局场景定义为使用组标识符 0 和场景标识符 0 存储的场景。
定义此属性是为了防止第二个 Off 命令将所有设备关闭的情况存储为全局场景,并防止第二个 On 命令通过返回全局场景来破坏当前设置。
在收到导致 OnOff 属性设置为 TRUE 的命令后,此属性应设置为 TRUE,例如标准On命令、MoveToLevel(WithOnOff) 命令、RecallScene 命令或 OnWithRecallGlobalScene 命令。
在收到 OffWithEffect 命令后,此属性的值应该设置为FALSE。
- OnTime Attribute
此属性指定使用 OnWithTimedOff 命令时,在自动转换为 Off 状态之前应保持 On 状态的时间长度(以 1/10 秒为单位)。此属性可以随时写入,但写入值仅在 Timed On 状态下才有效。
例如:设置为600,表示设备开启后会在1分钟后自动关闭。
- OffWaitTime Attribute
此属性指定应保护关闭状态的时间长度(以 1/10 秒为单位),以防止另一个 OnWithTimedOff 命令将服务器重新切换回开启状态(例如,离开房间时,灯会关闭,但占用传感器会检测到离开的人并尝试将灯重新打开)。此属性可以随时写入,但写入值仅在处于定时开启状态后转换到延迟关闭状态或处于延迟关闭状态时才有效。
例如:设置为600,表示设备在关闭前等待1分钟。
- StartUpOnOff Attribute
此属性定义设备通电时所需的启动行为并且此状态应反映在 OnOff 属性中。如果值为空,则将 OnOff 属性设置为其先前的值。否则,行为在定义 StartUpOnOffEnum 的表中定义。即定义设备重启后的默认行为,枚举值:
0:保留重启前的状态
1:启动时关闭
2:启动时开启
3:根据 OnOff 属性的值启动
此属性不适用于与 OTA 相关的重启。OTA 重启后,OnOff 属性应恢复为重启前的值。
Commands
ID | Name | Direction | Response | Access | Conformance |
---|---|---|---|---|---|
0x00 | Off | client –> server | Y | O | M |
0x01 | On | client –> server | Y | O | !OFFONLY |
0x02 | Toggle | client –> server | Y | O | !OFFONLY |
0x40 | OffWithEffect | client –> server | Y | O | LT |
0x41 | OnWithRecallGlobalSence | client –> server | Y | O | LT |
0x42 | OnWithTimedOff | client –> server | Y | O | LT |
- Off Command
收到Off命令后,服务器应该将OnOff属性的值设置为FALSE。此外,当支持OnTime属性时,服务器应该将OnTime属性的值设置为0。
- On Command
如果支持OffOnly功能(或特征)时,收到On命令后,服务器应该发送UNSUPPORTED_COMMAND失败状态响应。否则,收到On命令后,服务器应该设置OnOff属性的值为TRUE。
此外,当同时支持OnTime和OffWaitTime两个属性时,如果OnTime属性的值等于0,服务器应该将OffWaitTime属性的值设置为0。
- Toggle Command
如果支持OffOnly功能(或特征),收到Toggle命令后,服务器应该发送UNSUPPORTED_COMMAND失败状态响应。否则,收到Toggle命令后,如果OnOff属性的值等于FALSE,服务器应该将OnOff属性的值设置为TRUE;如果OnOff属性的值等于TRUE,服务器应该将OnOff属性的值设置为FALSE。
此外,当同时支持OnTime和OffWaitTime两个属性时,如果OnOff属性的值等于FALSE,且如果OnTime属性的值等于0,服务器应该将OffWaitTime属性的值设置为0。如果OnOff属性的值等于TRUE,服务器应该将OnTime属性的值设置为0。
OffWithRecallGlobalSence Command
这个命令允许在设备关闭时调用设置。
收到OffWithRecallGlobalSence命令后,如果GlobalSceneControl属性的值等于TRUE,服务器应该丢弃这个命令。
如果GlobalSceneControl属性的值等于FALSE,那么同一个Endpoint上Scene Cluster服务器应该调用它的global scene,并更新OnOff属性的值。OnOff服务器应该将GlobalSceneControl属性的值设置为TRUE。
此外,当同时支持OnTime和OffWaitTime两个属性时,如果OnTime属性的值等于0,服务器应该将OffWaitTime属性的值设置为0。
OnWithTimedOff Command
此命令允许设备在特定持续时间内打开,并具有受保护的持续时间,因此如果设备随后关闭,在此期间再次收到 OnWithTimedOff 命令,无法重新打开设备。在服务器打开时,收到的更多 OnWithTimedOff 命令将更新设备打开的时间段。
OnWithTimedOff 命令的数据域
ID | Name | Type | Constraint | Quality | Default | Conformance |
---|---|---|---|---|---|---|
0 | OnOffControl | OnOffControlBitamp | 0 to 1 | M | ||
1 | OnTime | uint16 | max 0xfffe | M | ||
2 | OffWaitTime | uint16 | max 0xfffe | M |