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.

Three Clusters Working Together

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.

Power Representation Is Determined by Features

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).

ParameterTypeRequiredDescription
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
PowerSetting and WattSettingIndex Are Mutually Exclusive

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)
Time Unit Is Seconds, Not 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)
Relationship Between PWRNUM and 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
Set Power by Index, Not Wattage Value

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):

Bit 0
PWRNUM(PowerAsNumber) Power as a numeric value — enables PowerSetting read/write (10-100 range)
Bit 1
WATTS(WattRating) Power as wattage — enables SupportedWatts list and WattSettingIndex selection
Bit 2
PWRLMTS(PowerNumberLimits) Custom power limits — enables MinPower, MaxPower, PowerStep attributes (requires PWRNUM)
Feature Combination Constraints

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)
}
Developer Tip

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
  1. Read MaxCookTime (0x0001) to determine the time limit for the time picker range
  2. 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
  3. After the user selects time and power, send SetCookingParameters (0x00) to write parameters
  4. Call the OperationalState Cluster's Start command to begin cooking
  5. Subscribe to CookTime (0x0000) changes for real-time countdown updates
Scenario 2: Adjust Time or Power Mid-Cooking
  1. Read the current state from the OperationalState Cluster to confirm the device is running
  2. Read CookTime (0x0000) to get the current remaining time
  3. User taps "Add 30 seconds" → send SetCookingParameters(CookTime=currentValue+30)
  4. User lowers power → send SetCookingParameters(PowerSetting=50) or SetCookingParameters(WattSettingIndex=2)
  5. Note: whether parameters can be modified while running depends on the device implementation; some devices may require pausing first