MicrowaveOvenMode Cluster
Cluster ID: 0x005E |
Endpoint: Microwave Oven Endpoint
MicrowaveOvenMode is a Cluster for microwave oven mode selection in Matter, derived from the ModeBase Cluster. It allows users to switch between multiple heating modes, such as Normal heating and Defrost. Each mode is described by semantic tags (ModeTag), enabling standardized control across manufacturers.
MicrowaveOvenMode inherits all command and attribute structures from the ModeBase Cluster, and defines microwave oven-specific ModeTag values (0x4000 ~ 0x4001). If you are already familiar with how ModeBase works, this Cluster operates exactly the same way -- only the mode tags differ.
MicrowaveOvenMode only handles "selecting the heating mode" — it does not control cooking parameters. Full microwave operation requires the MicrowaveOvenControl (0x005F) Cluster, which handles cooking time, power level settings, and start/stop control. Typical flow: select mode with MicrowaveOvenMode, then set parameters and start with MicrowaveOvenControl.
Commands
In older versions the MicrowaveOvenMode Cluster had one command, ChangeToMode, for switching heating modes, and the device returned a ChangeToModeResponse indicating whether the switch was successful. Newer versions removed both commands; the mode can only be changed on the appliance itself.
| ID | Name | Direction | Description |
|---|---|---|---|
0x00 |
ChangeToMode Removed in newer versions | Client → Server | Switch to a specified heating mode |
0x01 |
ChangeToModeResponse Removed in newer versions | Server → Client | Mode switch response (Status + StatusText) |
ChangeToMode -- Switch Mode (0x00) Removed in newer versions
ChangeToMode is no longer part of newer Matter specifications (it is absent from the connectedhomeip v1.6 definitions this site checks against). Devices built to newer versions will not implement it; this section is kept only as a reference for older devices. In newer versions the Microwave Oven Mode cluster accepts no commands: the mode can only be changed on the appliance itself, and controllers can only read or subscribe to CurrentMode.
Request the microwave to switch to a specified heating mode. The NewMode value must be the Mode field of a ModeOptionStruct in the SupportedModes list. The device returns a ChangeToModeResponse upon receipt.
Request Parameters
| Parameter | Type | Description |
|---|---|---|
| NewMode | uint8 | Target mode number; must exist in the SupportedModes list |
Response Fields (ChangeToModeResponse)
| Field | Type | Description |
|---|---|---|
| Status | enum8 | Operation result status code (see Status Codes) |
| StatusText | string (optional) | Human-readable status description; provides the reason on failure |
Usage Scenarios
The user selects "Defrost" mode in the app. The app sends ChangeToMode (NewMode = 1). The microwave returns ChangeToModeResponse (Status = 0x00, Success) and CurrentMode updates to 1. If the microwave is heating and does not allow switching, it returns GenericFailure with the reason in StatusText.
Attributes
MicrowaveOvenMode Cluster inherits 4 attributes from ModeBase.
| ID | Name | Type | Description |
|---|---|---|---|
0x0000 |
SupportedModes | list<ModeOptionStruct> | All heating modes supported by the device |
0x0001 |
CurrentMode | uint8 | Currently selected mode |
0x0002 |
StartUpMode Removed in newer versions | uint8 / null | Default mode on device startup |
0x0003 |
OnMode Removed in newer versions | uint8 / null | Mode automatically applied when device turns on |
SupportedModes -- Supported Mode List (0x0000)
All heating modes supported by the device. Each element is a ModeOptionStruct:
| Field | Type | Description |
|---|---|---|
| Label | string | Mode name for human display (e.g., "Normal", "Defrost") |
| Mode | uint8 | Mode number, unique in the list, used for the ChangeToMode command |
| ModeTags | list<ModeTagStruct> | List of semantic tags describing the mode's purpose (see ModeTag Tags) |
Label is vendor-defined display text; different manufacturers may use different wording ("Normal", "Standard", "Regular"). ModeTag is a standardized semantic tag. Apps should prioritize ModeTag values for determining mode type; Label is only for UI display.
CurrentMode -- Current Mode (0x0001)
The currently selected heating mode number. The value must be the Mode field of a ModeOptionStruct in SupportedModes. Modified via the ChangeToMode command. Subscribe to this attribute to receive mode change notifications.
StartUpMode -- Startup Mode (0x0002) Removed in newer versions
StartUpMode is no longer part of newer Matter specifications (it is absent from the connectedhomeip v1.6 definitions this site checks against). Devices built to newer versions will not implement it; this section is kept only as a reference for older devices. In newer versions the microwave mode can only be changed on the appliance itself; controllers can only read or subscribe to CurrentMode.
The initial mode after the device powers on or restarts. Nullable -- when null, the device retains the mode from before power loss.
When setting a specific value, it must exist in the SupportedModes list.
OnMode -- Power-On Mode (0x0003) Removed in newer versions
OnMode is no longer part of newer Matter specifications (it is absent from the connectedhomeip v1.6 definitions this site checks against). Devices built to newer versions will not implement it; this section is kept only as a reference for older devices. In newer versions the microwave mode can only be changed on the appliance itself; controllers can only read or subscribe to CurrentMode.
The mode automatically applied when the device switches from Off to On. Nullable -- when null, no override occurs and CurrentMode remains unchanged.
If OnMode has a value, every power-on will force CurrentMode to that value, ignoring the StartUpMode setting.
If OnMode is not null, it takes priority over StartUpMode. Device power-on sequence: StartUpMode is applied first (if set), then OnMode overrides when transitioning from Off → On. The practical effect is that the device always uses the mode specified by OnMode after powering on.
ModeTag Semantic Tags
MicrowaveOvenMode defines 2 dedicated ModeTag values for standardized description of microwave oven heating mode types. Apps should identify mode purposes based on these tags rather than relying on vendor-defined Label text.
Beyond the spec-defined Normal and Defrost, vendors can add custom modes to SupportedModes (e.g., "Popcorn", "Beverage", "Reheat") using vendor-defined ModeTag values (0x8000-0xBFFF range). When the app encounters an unrecognized ModeTag, it should fall back to displaying the Label text.
Status Codes
Possible values of the Status field in ChangeToModeResponse:
Example Data
Read result from a MicrowaveOvenMode Cluster on a microwave oven with Normal and Defrost modes, currently in Normal:
{
// --- Supported modes list ---
"0x0000": [ // SupportedModes
{
"Label": "Normal",
"Mode": 0,
"ModeTags": [{ "Value": 16384 }] // 0x4000 = Normal
},
{
"Label": "Defrost",
"Mode": 1,
"ModeTags": [{ "Value": 16385 }] // 0x4001 = Defrost
}
],
// --- Current mode ---
"0x0001": 0 // CurrentMode = 0(Normal)
// --- Startup and power-on modes ---
}
The contents of SupportedModes are defined by the device manufacturer; different microwaves may support different numbers and IDs of modes. When displaying the mode list, apps should dynamically read SupportedModes rather than hardcoding mode options. Use ModeTag values to determine mode type instead of comparing Label strings. Complete microwave control also requires reading the cooking time and power attributes from the MicrowaveOvenControl Cluster (0x005F).
Common Scenarios
Scenario 1: Select Heating Mode and Start the Microwave
- Read
SupportedModes (0x0000)to get all heating modes supported by the microwave - Display the mode list in the app UI, showing corresponding icons and descriptions based on ModeTag values (e.g. show a "Normal Heating" icon for 0x4000, a "Defrost" icon for 0x4001)
- The user selects "Defrost"; send
ChangeToMode (0x00)Removed in newer versions with NewMode set to the corresponding Mode number - Check the Status in ChangeToModeResponse:
0x00(Success) -- switch successful; subscribe to CurrentMode to confirm the update0x02(GenericFailure) — microwave is currently heating; read StatusText for the reason
- After the mode is selected, set cooking time and power via MicrowaveOvenControl Cluster (0x005F), then start heating
Scenario 2: Complete Flow for Defrosting Frozen Food
- Read
SupportedModes (0x0000)and find the mode entry with ModeTag 0x4001 (Defrost) - Send
ChangeToModewith NewMode set to that mode entry's Mode number - Confirm ChangeToModeResponse returns Success
- Set the defrost time via MicrowaveOvenControl (defrost mode typically uses lower power; the device may automatically adjust the power level)
- Start heating and subscribe to MicrowaveOvenControl's OperationalState to track heating progress
- After heating finishes, the microwave stops automatically and sends a notification; the app prompts the user to remove the food
Note: In defrost mode, the microwave typically works intermittently (alternating heating and pausing) to avoid overheating the exterior while the interior remains frozen. The specific power and intermittent strategy is controlled by device firmware; no app intervention needed.