低功耗 Cluster(LowPower)
Cluster ID: 0x0508 |
所在 Endpoint: 媒体端点(电视、机顶盒、流媒体棒等)
LowPower 是 Matter 中最简单的 Cluster 之一 —— 没有任何属性、没有事件、没有 Feature,只有唯一一个命令:Sleep。 它的职责非常单一:让媒体设备进入低功耗待机(Standby / Sleep)模式。
这个 Cluster 通常和 WakeOnLan Cluster(0x0503) 配合使用: LowPower 负责「让设备睡下去」,WakeOnLan 提供「把设备叫醒」所需的网络地址。 两者是媒体设备电源管理的一对搭档。
OnOff Cluster 的 Off 命令语义是「关闭功能」,对灯来说是灭灯,对插座是断电。
但对电视而言,「关闭」通常不是断电,而是进入待机模式 ——
屏幕和主处理器休眠,但网卡仍然保持监听状态,以便远程唤醒。
LowPower 的 Sleep 命令明确表达了这种「进入低功耗待机」的语义,
与 OnOff 的 Off(彻底关闭功能)形成区分。
实际上,很多电视同时实现了两个 Cluster:OnOff 用于开/关机状态管理,LowPower 专门用于进入待机。
命令(Commands)
LowPower Cluster 只有 1 个命令,没有参数,也没有专用的返回数据。 这是 Matter 规范中最精简的命令定义之一。
| ID | 名称 | 参数 | 响应 | 说明 |
|---|---|---|---|---|
0x00 |
Sleep | 无 | Status | 让设备进入低功耗待机模式 |
Sleep —— 进入待机(0x00)
让媒体设备进入低功耗待机(Sleep / Standby)模式。
命令没有任何参数,执行成功后设备返回通用的 Status = SUCCESS 响应。
设备收到 Sleep 命令后的具体行为由厂商实现决定,但通常包括:
- 关闭屏幕和音频输出
- 暂停或停止正在播放的媒体内容
- 主处理器进入低功耗状态
- 网卡保持活跃,继续监听 WoL Magic Packet(如果支持 WakeOnLan)
调用示例:
// Sleep 命令请求(Command ID: 0x00)
{
"invokeRequests": [{
"commandPath": {
"endpointId": 1,
"clusterId": "0x0508",
"commandId": "0x00" // Sleep
}
// 无参数字段 —— Sleep 是零参数命令
}]
}
// 响应:Status = SUCCESS(无返回数据)
设备进入深度待机后,Matter 通信栈可能随之关闭。 这意味着 Sleep 之后你无法再通过 Matter 命令唤醒设备 —— 唤醒需要走底层的 WoL 魔术包或用户物理操作(遥控器、机身按钮)。 因此,发送 Sleep 之前务必确保已缓存设备的 WakeOnLan 地址信息。
属性说明
LowPower Cluster 没有定义任何应用层属性。 这意味着你无法通过读取属性来判断设备当前是否处于待机状态 —— 设备一旦进入待机,通信都可能断开了,属性也就无从读取。
如果需要判断设备的在线/待机状态,通常有以下方式:
- 监测设备的 Matter 会话(Session)是否仍然活跃
- 通过 mDNS 广播观察设备是否仍可发现
- 尝试读取其他 Cluster 属性(如 BasicInformation),超时即认为设备已待机
虽然没有应用层属性,但 LowPower Cluster 仍然有 Matter 规范要求的全局属性
(ClusterRevision、FeatureMap、AttributeList 等)。
这些属性用于协议层面的版本协商和能力发现,不涉及业务功能。
关联 Cluster
LowPower 不是孤立存在的,它在媒体设备的电源管理中与另外两个 Cluster 紧密配合:
| Cluster | ID | 职责 | 与 LowPower 的关系 |
|---|---|---|---|
| WakeOnLan | 0x0503 |
提供设备 MAC 地址用于 WoL 唤醒 | 互补关系:LowPower 让设备睡下,WakeOnLan 帮你把它叫醒 |
| OnOff | 0x0006 |
设备的开/关/切换控制 | 语义区分:Off = 关闭功能,Sleep = 进入待机(设备仍可被远程唤醒) |
媒体设备的典型电源 Cluster 组合
一台智能电视通常同时实现以下三个 Cluster,分别覆盖电源管理的不同层面:
示例数据
读取一台电视的 LowPower Cluster 属性(几乎没有业务数据):
{
// LowPower Cluster(0x0508)没有应用层属性
// 它是一个纯命令型 Cluster,只提供 Sleep 命令
// 读取该 Cluster 只会返回全局属性(ClusterRevision、FeatureMap 等)
"0xFFFD": 1, // ClusterRevision = 1
"0xFFFC": 0 // FeatureMap = 0(无 Feature)
}
LowPower Cluster 的存在本身就是一种能力声明 —— 如果设备的某个 Endpoint 上有这个 Cluster,
说明该设备支持通过 Matter 进入待机模式。
你可以通过 Descriptor Cluster 的 ServerList 属性
来检查设备是否实现了 LowPower(0x0508),从而决定是否在 UI 上显示「待机」按钮。
常见场景
场景 1:语音助手关闭电视(Sleep + WoL 缓存)
用户对着智能音箱说「关闭客厅电视」,要求电视进入待机模式,同时保留远程唤醒能力。
- Hub 确认目标设备的 Endpoint 上存在 LowPower Cluster(检查 Descriptor 的 ServerList)
- Hub 检查本地缓存中是否已有该设备的 WakeOnLan 地址(MAC / Link-Local)
- 如果没有缓存,先读取 WakeOnLan Cluster 的
MACAddress并存储到本地 - 向设备发送 LowPower 的
Sleep (0x00)命令 - 设备关闭屏幕和音频,进入低功耗待机模式
- Matter 通信可能断开 —— Hub 记录设备状态为「待机」
- 后续用户说「打开电视」时,Hub 使用缓存的 MAC 地址发送 WoL Magic Packet 唤醒
关键点:Sleep 命令发送前必须确保 WakeOnLan 地址已缓存。 一旦设备进入深度待机,Matter 通信断开,就再也无法通过 Matter 读取 MAC 地址了。
场景 2:定时待机(节能自动化)
用户设置了节能自动化规则:每晚 23:00 如果电视仍在运行,自动进入待机以节省电量。
- 自动化引擎在 23:00 触发
- 通过 OnOff Cluster 读取电视的
OnOff (0x0000)属性,确认当前是否开启 - 如果
OnOff = true(电视仍在运行),发送 LowPower 的Sleep命令 - 电视进入待机模式,屏幕熄灭,但网卡保持活跃
- 第二天早上,用户可以通过遥控器、语音助手或 WoL 唤醒电视
为什么用 Sleep 而不是 Off? Sleep 让设备保持可远程唤醒的状态,OnOff 的 Off 可能导致设备完全关机, 需要用户物理按下电源按钮才能开启,对智能家居场景不友好。