DishwasherMode Cluster

Cluster ID: 0x0059  |  Endpoint: Typically on Endpoint 1 (application endpoint)

DishwasherMode is used to control wash mode selection on a dishwasher. It is derived from the ModeBase Cluster, with a structure identical to LaundryWasherMode, differing only in that ModeTag values are defined for dishwasher scenarios (Normal / Heavy / Light).

ModeBase Derived Cluster

DishwasherMode is a derived Cluster of ModeBase (0x0050) and cannot be implemented independently -- it reuses all command and attribute definitions from ModeBase, only extending with its own dedicated ModeTag enum values. Once you understand ModeBase, all Mode-type Clusters (washer, dishwasher, refrigerator, etc.) follow the same usage pattern.

Commands

DishwasherMode inherits from ModeBase with only one command pair: the client sends ChangeToMode, and the device returns ChangeToModeResponse.

ID Direction Name Description
0x00 Client → Server ChangeToMode Switch to a specified mode
0x01 Server → Client ChangeToModeResponse Return switch result

ChangeToMode (0x00)

Requests the device to switch to a specified wash mode. The target mode must exist in SupportedModes.

ParameterTypeDescription
NewMode uint8 Target mode number; must exist in the SupportedModes list
Switching During Operation

When the dishwasher is running, the device may reject mode switching and return an error status code in ChangeToModeResponse. The specific behavior depends on the manufacturer's implementation.

ChangeToModeResponse (0x01)

Response returned by the device after receiving ChangeToMode, indicating whether the switch succeeded.

ParameterTypeDescription
Status enum8 0x00 = success; other values are vendor-defined error codes
StatusText string (optional) Human-readable error description on failure, up to 64 bytes

Attributes

DishwasherMode inherits 4 attributes from ModeBase. Click an attribute ID to jump to its description.

ID Name Type Description
0x0000 SupportedModes list<ModeOptionStruct> List of all modes supported by the device
0x0001 CurrentMode uint8 Currently active mode number
0x0002 StartUpMode Removed in newer versions uint8 / null Initial mode after power-on
0x0003 OnMode Removed in newer versions uint8 / null Mode forced on power-on

SupportedModes (0x0000)

All wash modes supported by the device. Each element in the list is a ModeOptionStruct:

FieldTypeDescription
Label string Human-readable mode name (e.g., "Normal", "Heavy")
Mode uint8 Mode number, unique within the list
ModeTags list<ModeTagStruct> Mode tags identifying the semantic meaning (see ModeTag Enum)
Mode Numbers Are Vendor-Defined

Mode numbers (0, 1, 2...) are vendor-defined ordinals that may differ between manufacturers. To determine the semantic meaning of a mode, check the ModeTag values in ModeTags rather than the Mode number.

CurrentMode (0x0001)

The device's currently active mode number, which must be the Mode value of an entry in SupportedModes. Subscribe to this attribute to update the app UI when the mode changes.

StartUpMode (0x0002) Removed in newer versions

Removed in newer Matter 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 device decides its power-up mode itself; controllers switch modes with the ChangeToMode command.

Initial mode used after device power-on (or restart). Nullable — null means unspecified; the device decides on its own (typically restores the mode from before power loss).

OnMode (0x0003) Removed in newer versions

Removed in newer Matter 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. The DEPONOFF (OnOff dependency) feature it relied on was removed as well; controllers switch modes with the ChangeToMode command.

Mode forced when the device switches from Off to On. Nullable — null means no forced switch on power-on; CurrentMode is preserved.

Difference Between StartUpMode and OnMode

StartUpMode takes effect when the device powers on (power loss recovery); OnMode takes effect when the device transitions from Off to On (e.g. when the user presses the start button). The two are triggered at different times and can be set to different values.

ModeTag Enum

DishwasherMode defines 3 dedicated ModeTag values for identifying dishwasher wash mode semantics. The app should identify mode meaning through ModeTag rather than relying on Label strings or Mode numbers.

0x4000
Normal Normal wash — default mode for everyday dishes
0x4001
Heavy Heavy wash — heavy grease, pots, and stubborn stains
0x4002
Light Light wash — lightly soiled or delicate dishes
Common ModeTag

In addition to the above dedicated Tags, devices can also use common Tags defined by ModeBase, such as 0x0000 (Auto), 0x0001 (Quick), 0x0002 (Quiet), etc. A single mode can carry multiple Tags simultaneously.

Example Data

Read result from a DishwasherMode Cluster on a dishwasher with three wash modes, currently in Normal:

{
  // --- Current Mode ---
  "0x0000": [                 // SupportedModes — supported mode list
    {
      "Label": "Normal",
      "Mode": 0,
      "ModeTags": [{ "Value": 16384 }]
    },
    {
      "Label": "Heavy",
      "Mode": 1,
      "ModeTags": [{ "Value": 16385 }]
    },
    {
      "Label": "Light",
      "Mode": 2,
      "ModeTags": [{ "Value": 16386 }]
    }
  ],
  "0x0001": 0                // CurrentMode = 0 (currently Normal mode)
}

Common Scenarios

Scenario 1: Switch Wash Mode

  1. Read SupportedModes (0x0000) to get all modes and their ModeTag values
  2. Display mode options in the app based on ModeTag (e.g., "Normal", "Heavy", "Light")
  3. After the user's selection, send ChangeToMode with NewMode set to the target mode number
  4. Check ChangeToModeResponse Status — the dishwasher may return an error if currently running
  5. Subscribe to CurrentMode (0x0001) to confirm the switch succeeded

Scenario 2: Configure Default Mode

  1. The user selects "Default to Heavy mode on every power-on" in app settings
  2. Write OnMode (0x0003) Removed in newer versions to the Heavy mode number (e.g., 1)
  3. From then on, every time the dishwasher powers on, it automatically enters Heavy mode
  4. To cancel the forced mode, write OnMode back to null