微波炉控制 Cluster(MicrowaveOvenControl)
Cluster ID: 0x005F |
所在 Endpoint: 微波炉功能端点(Microwave Oven Endpoint)
MicrowaveOvenControl 是 Matter 厨电设备中微波炉的核心控制 Cluster,负责管理烹饪时间、功率等级和瓦数设定。 它不负责启动/停止烹饪(由 OperationalState Cluster 处理),也不负责模式选择(由 MicrowaveOvenMode Cluster 处理), 专注于「烹饪参数」这一件事。
微波炉设备通常需要三个 Cluster 配合:
MicrowaveOvenMode(0x005E)—— 选择烹饪模式(如普通加热、解冻、预设菜单等)
MicrowaveOvenControl(0x005F)—— 设置烹饪参数(时间、功率、瓦数)
OperationalState(0x0060)—— 控制烹饪流程(开始、暂停、停止)
典型流程:先选模式 → 再设参数 → 最后启动烹饪。
微波炉的功率有两种表示方式:数值百分比(PWRNUM 特性,如 80%)和瓦数等级(WATTS 特性,如 900W)。 设备至少支持其中一种。读写功率属性前,务必先检查 FeatureMap 确定设备使用哪种方式,否则会读到不支持的属性。
命令(Commands)
MicrowaveOvenControl Cluster 只有一个命令 —— SetCookingParameters。
它是设置烹饪参数的唯一入口,所有参数(时间、功率、瓦数)都通过这一个命令设置。
注意:这个命令只设置参数,不会启动烹饪。启动烹饪需要调用 OperationalState Cluster 的 Start 命令。
| ID | 名称 | 说明 | 所需特性 |
|---|---|---|---|
0x00 |
SetCookingParameters | 设置烹饪参数(时间、功率、瓦数) | 无 |
SetCookingParameters —— 设置烹饪参数(0x00)
设置微波炉的烹饪参数。所有参数都是可选的 —— 只传需要修改的字段即可,未传的参数保持当前值不变。 设备处于非运行状态时可以设置参数;某些设备也允许在运行中修改(取决于具体实现)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| CookMode | uint8 | 否 | 烹饪模式编号,对应 MicrowaveOvenMode Cluster 中定义的模式值 |
| CookTime | uint32 | 否 | 烹饪时间,单位秒。范围 1 ~ MaxCookTime |
| PowerSetting | uint8 | 否 | 功率等级数值。范围 MinPower ~ MaxPower,步长为 PowerStep。需要 PWRNUM 特性 |
| WattSettingIndex | uint8 | 否 | SupportedWatts 列表的索引(从 0 开始)。需要 WATTS 特性 |
一次调用中只能传 PowerSetting 或 WattSettingIndex 之一,不能同时传。
传哪个取决于设备支持的 Feature:支持 PWRNUM 用 PowerSetting,支持 WATTS 用 WattSettingIndex。
同时传两个会返回 INVALID_COMMAND。
使用示例:按功率百分比设置(PWRNUM)
{
"CookTime": 180, // 烹饪 3 分钟
"PowerSetting": 70 // 功率 70%
}
使用示例:按瓦数等级设置(WATTS)
{
"CookTime": 300, // 烹饪 5 分钟
"WattSettingIndex": 3 // 选择 SupportedWatts[3] 对应的瓦数
}
使用场景
用户在 App 上选择「加热 3 分钟、中高火」时,App 发送 SetCookingParameters(CookTime=180, PowerSetting=70)。
参数设好后,再调用 OperationalState 的 Start 命令启动烹饪。
如果需要在烹饪中途加时间(如「再加 1 分钟」),可以在运行状态下再次调用此命令更新 CookTime。
属性详解
MicrowaveOvenControl 的属性按功能分为三组:烹饪时间、功率数值、瓦数等级。 后两组分别由 PWRNUM 和 WATTS Feature 门控。 点击下方汇总表中的属性 ID 可跳转到对应的详细说明。
| ID | 名称 | 类型 | 分组 | 说明 |
|---|---|---|---|---|
0x0000 |
CookTime | uint32 | 烹饪时间 | 当前设定的烹饪时间(秒) |
0x0001 |
MaxCookTime | uint32 | 烹饪时间 | 允许的最大烹饪时间(秒) |
0x0002 |
PowerSetting | uint8 | 功率数值 | 当前功率等级 |
0x0003 |
MinPower | uint8 | 功率数值 | 最低可设功率 |
0x0004 |
MaxPower | uint8 | 功率数值 | 最高可设功率 |
0x0005 |
PowerStep | uint8 | 功率数值 | 功率调节步长 |
0x0006 |
SupportedWatts | list[uint16] | 瓦数等级 | 设备支持的瓦数列表 |
0x0007 |
SelectedWattIndex | uint8 | 瓦数等级 | 当前选中的瓦数索引 |
0x0008 |
WattRating | uint16 | 瓦数等级 | 当前瓦数额定值 |
烹饪时间(0x0000, 0x0001)
烹饪时间是所有微波炉都支持的基础属性,不需要特殊 Feature 门控。
| ID | 名称 | 类型 | 说明 |
|---|---|---|---|
0x0000 |
CookTime 烹饪时间 |
uint32 | 当前设定的烹饪时间,单位秒。默认值 30(30 秒)。烹饪过程中此值会倒计时递减,实时反映剩余时间。范围 1 ~ MaxCookTime |
0x0001 |
MaxCookTime 最大烹饪时间 |
uint32 | 设备允许的最大烹饪时间,单位秒,只读。用于 App 端校验用户输入和限制时间选择器的上限。典型值如 5400(90 分钟) |
与日常使用习惯不同,CookTime 的单位是秒。
App 展示时需要转换为分:秒格式(如 120 秒 → 2:00)。
用户输入「3 分钟」时需要转换为 180 再写入。
功率数值(0x0002 ~ 0x0005)
用数值表示功率等级的一组属性。这组属性需要 PWRNUM 特性支持。
无 PWRNUM 特性时,PowerSetting 仍然存在但默认值固定为 100(满功率),不可修改。
| ID | 名称 | 类型 | 说明 |
|---|---|---|---|
0x0002 |
PowerSetting 功率设置 |
uint8 | 当前功率等级。无 PWRNUM 时固定为 100;有 PWRNUM 时范围为 MinPower ~ MaxPower,步长 PowerStep。默认值 100(满功率) |
0x0003 |
MinPower 最低功率 |
uint8 | 设备支持的最低功率值。默认 10。需要 PWRLMTS 特性(无 PWRLMTS 时固定为 10) |
0x0004 |
MaxPower 最高功率 |
uint8 | 设备支持的最高功率值。默认 100。需要 PWRLMTS 特性(无 PWRLMTS 时固定为 100) |
0x0005 |
PowerStep 功率步长 |
uint8 | 功率调节的步进值。默认 10。例如步长为 10 时,功率只能是 10、20、30...100。需要 PWRLMTS 特性(无 PWRLMTS 时固定为 10) |
PWRNUM 启用功率数值调节能力 —— 没有它,功率只能是满功率 100。
PWRLMTS 是 PWRNUM 的扩展,允许自定义 Min/Max/Step 三个限制参数。
PWRLMTS 必须和 PWRNUM 一起启用(不能单独启用 PWRLMTS)。
如果只有 PWRNUM 没有 PWRLMTS,则使用默认限制:Min=10, Max=100, Step=10。
瓦数等级(0x0006 ~ 0x0008)
用实际瓦数表示功率的一组属性。这组属性需要 WATTS 特性支持。 与 PWRNUM 的百分比方式不同,WATTS 用离散的瓦数列表让用户选择。
| ID | 名称 | 类型 | 说明 |
|---|---|---|---|
0x0006 |
SupportedWatts 支持的瓦数列表 |
list[uint16] | 设备支持的所有瓦数等级列表,升序排列。例如 [100, 300, 500, 700, 900, 1100]。只读 |
0x0007 |
SelectedWattIndex 选中的瓦数索引 |
uint8 | 当前选中的瓦数在 SupportedWatts 列表中的索引(从 0 开始)。通过 SetCookingParameters 的 WattSettingIndex 参数修改 |
0x0008 |
WattRating 瓦数额定值 |
uint16 | 微波炉的额定功率(瓦),只读。这是设备的标称最大瓦数,通常等于 SupportedWatts 列表中的最大值 |
设置瓦数时使用的是 SupportedWatts 的索引(WattSettingIndex),不是瓦数值本身。
例如 SupportedWatts = [100, 300, 500, 700, 900, 1100],要设置 700W 需要传 WattSettingIndex = 3。
App 端应先读取 SupportedWatts 列表,展示为可选项(如「低火 100W」「中火 500W」「高火 1100W」),用户选择后传对应索引。
Feature 位图
MicrowaveOvenControl Cluster 通过 FeatureMap(0xFFFC)声明设备支持哪些功率控制方式:
PWRNUM 和 WATTS 互斥 —— 设备只能选择一种功率表示方式,不能同时支持两种。
PWRLMTS 依赖 PWRNUM —— 启用 PWRLMTS 时必须同时启用 PWRNUM。
常见组合:无 Feature(仅时间控制)、PWRNUM(百分比功率)、PWRNUM + PWRLMTS(自定义范围的百分比功率)、WATTS(瓦数等级选择)。
示例数据
一个同时支持 PWRNUM 和 WATTS 特性的微波炉设备的属性读取结果(实际设备只会支持其中一种功率方式,此处为展示完整属性):
{
// --- 烹饪时间 ---
"0x0000": 120, // CookTime = 120 秒(当前设定烹饪 2 分钟)
"0x0001": 5400, // MaxCookTime = 5400 秒(最大可设 90 分钟)
// --- 功率设置(PWRNUM 特性)---
"0x0002": 80, // PowerSetting = 80(当前功率 80%)
"0x0003": 10, // MinPower = 10(最低功率 10%)
"0x0004": 100, // MaxPower = 100(最高功率 100%)
"0x0005": 10, // PowerStep = 10(功率调节步长 10%)
// --- 瓦数设置(WATTS 特性)---
"0x0006": [100, 300, 500, 700, 900, 1100], // SupportedWatts(支持的瓦数列表)
"0x0007": 4, // SelectedWattIndex = 4 → 对应 900W
"0x0008": 900 // WattRating = 900(当前瓦数额定值)
}
App 展示功率时,先检查 FeatureMap:
• 有 PWRNUM → 展示为百分比滑块或档位选择器(10% / 20% / ... / 100%)
• 有 WATTS → 读取 SupportedWatts 列表,展示为瓦数选项(100W / 300W / 500W ...)
• 两者都没有 → 设备只支持满功率,不需要展示功率控制 UI
常见场景
场景 1:App 设置烹饪参数并启动加热
- 读取
MaxCookTime (0x0001)确定时间上限,用于限制时间选择器范围 - 读取
FeatureMap (0xFFFC)判断功率控制方式:- PWRNUM → 读取
MinPower (0x0003)、MaxPower (0x0004)、PowerStep (0x0005)构建功率选择器 - WATTS → 读取
SupportedWatts (0x0006)列表,展示可选瓦数
- PWRNUM → 读取
- 用户选好时间和功率后,发送
SetCookingParameters (0x00)写入参数 - 调用 OperationalState Cluster 的
Start命令启动烹饪 - 订阅
CookTime (0x0000)属性变化,实时更新倒计时显示
场景 2:烹饪中途调整时间或功率
- 通过 OperationalState Cluster 读取当前状态,确认设备正在运行
- 读取
CookTime (0x0000)获取当前剩余时间 - 用户点击「加 30 秒」→ 发送
SetCookingParameters(CookTime=当前值+30) - 用户调低功率 → 发送
SetCookingParameters(PowerSetting=50)或SetCookingParameters(WattSettingIndex=2) - 注意:能否在运行中修改参数取决于设备实现,部分设备可能要求先暂停再修改