MicrowaveOvenControl Cluster
Cluster ID: 0x005F |
Endpoint: Microwave Oven Endpoint
MicrowaveOvenControl is the core control Cluster for microwave ovens in Matter kitchen appliances, managing cooking time, power level, and wattage settings. It does not handle starting/stopping cooking (handled by the OperationalState Cluster) or mode selection (handled by MicrowaveOvenMode), focusing solely on cooking parameters.
Microwave oven devices typically require three Clusters working together:
MicrowaveOvenMode (0x005E) — select cooking mode (Normal, Defrost, preset menus, etc.)
MicrowaveOvenControl (0x005F) — set cooking parameters (time, power, wattage)
OperationalState (0x0060) — control cooking flow (start, pause, stop)
Typical flow: select mode → set parameters → start cooking.
Microwave power has two representation methods: numeric percentage (PWRNUM feature, e.g., 80%) and wattage level (WATTS feature, e.g., 900W). The device supports at least one. Always check FeatureMap before reading/writing power attributes to determine which method the device uses.
Commands
The MicrowaveOvenControl Cluster has only one command -- SetCookingParameters.
It is the sole entry point for setting cooking parameters; all parameters (time, power, wattage) are set through this single command.
Note: this command only sets parameters and does not start cooking. Starting the cooking requires calling the OperationalState Cluster's Start command.
| ID | Name | Description | Required Feature |
|---|---|---|---|
0x00 |
SetCookingParameters | Set cooking parameters (time, power, wattage) | None |
SetCookingParameters (0x00)
Sets the microwave cooking parameters. All parameters are optional — only pass the fields that need changing; unspecified parameters retain their current values. Parameters can be set when the device is not running; some devices also allow changes while running (implementation-dependent).
| Parameter | Type | Required | Description |
|---|---|---|---|
| CookMode | uint8 | No | Cooking mode number, corresponding to the mode value defined in the MicrowaveOvenMode Cluster |
| CookTime | uint32 | No | Cooking time in seconds. Range: 1 to MaxCookTime |
| PowerSetting | uint8 | No | Power level numeric value. Range: MinPower to MaxPower, step size PowerStep. Requires PWRNUM feature |
| WattSettingIndex | uint8 | No | Index into the SupportedWatts list (zero-based). Requires WATTS feature |
Only one of PowerSetting or WattSettingIndex can be passed per call — not both.
Which one to use depends on the device's Feature: use PowerSetting for PWRNUM, WattSettingIndex for WATTS.
Passing both returns INVALID_COMMAND.
Usage Example: Set by Power Percentage (PWRNUM)
{
"CookTime": 180, // Cook for 3 minutes
"PowerSetting": 70 // Power 70%
}
Usage Example: Set by Wattage Level (WATTS)
{
"CookTime": 300, // Cook for 5 minutes
"WattSettingIndex": 3 // Select the wattage at SupportedWatts[3]
}
Usage Scenarios
When the user selects "heat for 3 minutes at medium-high power" in the app, the app sends SetCookingParameters(CookTime=180, PowerSetting=70).
After parameters are set, call the OperationalState Start command to begin cooking.
If you need to add time mid-cooking (e.g. "add 1 more minute"), you can call this command again while running to update CookTime.
Attributes
MicrowaveOvenControl attributes are organized into three groups: cooking time, power level, and wattage level. The latter two are gated by the PWRNUM and WATTS Features respectively. Click an attribute ID below to jump to its detailed description.
| ID | Name | Type | Group | Description |
|---|---|---|---|---|
0x0000 |
CookTime | uint32 | Cook Time | Currently set cook time (seconds) |
0x0001 |
MaxCookTime | uint32 | Cook Time | Maximum allowed cook time (seconds) |
0x0002 |
PowerSetting | uint8 | Power Level | Current power level |
0x0003 |
MinPower | uint8 | Power Level | Minimum settable power |
0x0004 |
MaxPower | uint8 | Power Level | Maximum settable power |
0x0005 |
PowerStep | uint8 | Power Level | Power adjustment step size |
0x0006 |
SupportedWatts | list[uint16] | Wattage Level | Supported wattage list |
0x0007 |
SelectedWattIndex | uint8 | Wattage Level | Currently selected wattage index |
0x0008 |
WattRating | uint16 | Wattage Level | Current wattage rating |
Cooking Time (0x0000, 0x0001)
Cooking time is a basic attribute supported by all microwave ovens; no special Feature is required.
| ID | Name | Type | Description |
|---|---|---|---|
0x0000 |
CookTime Cook Time |
uint32 | Currently set cooking time in seconds. Default: 30 (30 seconds). During cooking, this value counts down to reflect remaining time. Range: 1 to MaxCookTime |
0x0001 |
MaxCookTime Max Cook Time |
uint32 | Maximum cooking time allowed by the device, in seconds, read-only. Used by the app for input validation and time picker limits. Typical value: 5400 (90 minutes) |
Unlike everyday usage, CookTime is in seconds.
The app should convert to min:sec format for display (e.g., 120 sec → 2:00).
When the user enters "3 minutes", convert to 180 before writing.
Power Level (0x0002-0x0005)
A group of attributes representing power level as a numeric value. These require the PWRNUM feature.
Without PWRNUM, PowerSetting still exists but defaults to 100 (full power) and cannot be modified.
| ID | Name | Type | Description |
|---|---|---|---|
0x0002 |
PowerSetting Power Setting |
uint8 | Current power level. Without PWRNUM, fixed at 100; with PWRNUM, range is MinPower to MaxPower, step size PowerStep. Default: 100 (full power) |
0x0003 |
MinPower Min Power |
uint8 | Minimum power value supported. Default: 10. Requires PWRLMTS feature (fixed at 10 without PWRLMTS) |
0x0004 |
MaxPower Max Power |
uint8 | Maximum power value supported. Default: 100. Requires PWRLMTS feature (fixed at 100 without PWRLMTS) |
0x0005 |
PowerStep Power Step |
uint8 | Power adjustment step size. Default: 10. With step 10, power can only be 10, 20, 30...100. Requires PWRLMTS feature (fixed at 10 without PWRLMTS) |
PWRNUM enables numeric power adjustment — without it, power is fixed at 100 (full).
PWRLMTS extends PWRNUM, allowing custom Min/Max/Step limit parameters.
PWRLMTS must be enabled together with PWRNUM (cannot be enabled alone).
With PWRNUM but without PWRLMTS, default limits apply: Min=10, Max=100, Step=10.
Wattage Level (0x0006-0x0008)
A group of attributes representing power as actual wattage. These require the WATTS feature. Unlike PWRNUM's percentage approach, WATTS uses a discrete wattage list for user selection.
| ID | Name | Type | Description |
|---|---|---|---|
0x0006 |
SupportedWatts Supported Watts List |
list[uint16] | All wattage levels supported by the device, in ascending order. E.g., [100, 300, 500, 700, 900, 1100]. Read-only |
0x0007 |
SelectedWattIndex Selected Watt Index |
uint8 | Index of the currently selected wattage in the SupportedWatts list (zero-based). Modified via the WattSettingIndex parameter of SetCookingParameters |
0x0008 |
WattRating Watt Rating |
uint16 | The microwave's rated power (watts), read-only. This is the device's nominal maximum wattage, typically equal to the highest value in SupportedWatts |
When setting wattage, use the index into SupportedWatts (WattSettingIndex), not the wattage value itself.
E.g., with SupportedWatts = [100, 300, 500, 700, 900, 1100], setting 700W requires WattSettingIndex = 3.
The app should first read the SupportedWatts list, display it as options (e.g., "Low 100W", "Medium 500W", "High 1100W"), then pass the corresponding index after user selection.
Feature Bitmap
MicrowaveOvenControl Cluster declares supported power control methods through FeatureMap (0xFFFC):
PWRNUM and WATTS are mutually exclusive — the device can only support one power representation method.
PWRLMTS depends on PWRNUM — PWRLMTS requires PWRNUM to also be enabled.
Common combinations: no Feature (time control only), PWRNUM (percentage power), PWRNUM + PWRLMTS (custom-range percentage), WATTS (wattage level selection).
Example Data
Attribute read result from a microwave oven supporting both PWRNUM and WATTS (in practice, a device only supports one power method; both shown here for completeness):
{
// --- Cooking Time ---
"0x0000": 120, // CookTime = 120 sec (currently set to cook 2 minutes)
"0x0001": 5400, // MaxCookTime = 5400 sec (max 90 minutes)
// --- Power Setting (PWRNUM Feature) ---
"0x0002": 80, // PowerSetting = 80 (current power 80%)
"0x0003": 10, // MinPower = 10 (minimum 10%)
"0x0004": 100, // MaxPower = 100 (maximum 100%)
"0x0005": 10, // PowerStep = 10 (step size 10%)
// --- Wattage Setting (WATTS Feature) ---
"0x0006": [100, 300, 500, 700, 900, 1100], // SupportedWatts (supported wattage list)
"0x0007": 4, // SelectedWattIndex = 4 → corresponds to 900W
"0x0008": 900 // WattRating = 900 (current rated wattage)
}
When displaying power in the app, first check FeatureMap:
• PWRNUM present → show as a percentage slider or level selector (10% / 20% / ... / 100%)
• WATTS present → read SupportedWatts list; display as wattage options (100W / 300W / 500W ...)
• Neither → device only supports full power; no power control UI needed
Common Scenarios
Scenario 1: Set Cooking Parameters and Start Heating
- Read
MaxCookTime (0x0001)to determine the time limit for the time picker range - Read
FeatureMap (0xFFFC)to determine the power control method:- PWRNUM → read
MinPower (0x0003),MaxPower (0x0004),PowerStep (0x0005)to build the power selector - WATTS → read
SupportedWatts (0x0006)list and display available wattages
- PWRNUM → read
- After the user selects time and power, send
SetCookingParameters (0x00)to write parameters - Call the OperationalState Cluster's
Startcommand to begin cooking - Subscribe to
CookTime (0x0000)changes for real-time countdown updates
Scenario 2: Adjust Time or Power Mid-Cooking
- Read the current state from the OperationalState Cluster to confirm the device is running
- Read
CookTime (0x0000)to get the current remaining time - User taps "Add 30 seconds" → send
SetCookingParameters(CookTime=currentValue+30) - User lowers power → send
SetCookingParameters(PowerSetting=50)orSetCookingParameters(WattSettingIndex=2) - Note: whether parameters can be modified while running depends on the device implementation; some devices may require pausing first