LaundryWasherMode Cluster
Cluster ID: 0x0051 |
Endpoint: Typically on Endpoint 1 (application endpoint)
LaundryWasherMode is a Cluster in Matter for washing machine mode selection, derived from ModeBase Cluster. It allows users to switch between multiple wash modes supported by the machine, such as Normal, Delicate, Heavy, and Whites. Each mode uses semantic tags (ModeTag) to describe its purpose, enabling standardized control across different manufacturers' washing machines.
LaundryWasherMode inherits all commands and attribute structures from the ModeBase Cluster, and defines washing machine-specific ModeTag values (0x4000 ~ 0x4003). If you are already familiar with how ModeBase works, this Cluster operates exactly the same way -- only the mode tags differ.
Commands
LaundryWasherMode Cluster has only one command, ChangeToMode, for switching wash modes. The device returns ChangeToModeResponse to indicate whether the switch succeeded.
| ID | Name | Direction | Description |
|---|---|---|---|
0x00 |
ChangeToMode | Client → Server | Switch to a specified wash mode |
0x01 |
ChangeToModeResponse | Server → Client | Mode switch response (Status + StatusText) |
ChangeToMode (0x00)
Requests the device to switch to a specified wash mode. The NewMode value must match the Mode field of a ModeOptionStruct in the SupportedModes list. The device returns 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 "Delicate" mode in the app. The app sends ChangeToMode (NewMode = 1). The washer returns ChangeToModeResponse (Status = 0x00, Success) and CurrentMode updates to 1. If the washer is running and does not allow switching, it returns GenericFailure with the reason in StatusText.
Attributes
LaundryWasherMode Cluster inherits 4 attributes from ModeBase.
| ID | Name | Type | Description |
|---|---|---|---|
0x0000 |
SupportedModes | list<ModeOptionStruct> | All wash 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 (0x0000)
All wash modes supported by the device. Each element is a ModeOptionStruct:
| Field | Type | Description |
|---|---|---|
| Label | string | Mode name for human display (e.g., "Normal", "Delicate") |
| 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 (0x0001)
The currently selected wash mode number. Must be the Mode field of a ModeOptionStruct in SupportedModes. Modified via the ChangeToMode command. Subscribe to this attribute for mode change notifications.
StartUpMode (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 device decides its power-up mode itself; controllers switch modes with the ChangeToMode command.
Initial mode after device power-on or restart. Nullable — null means retain the mode from before power loss.
When set to a specific value, it must exist in the SupportedModes list.
OnMode (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. The DEPONOFF (OnOff dependency) feature it relied on was removed as well; controllers switch modes with the ChangeToMode command.
Mode automatically applied when the device switches from Off to On. Nullable — null means no override; CurrentMode is preserved.
If OnMode has a value, CurrentMode is forced to that value on every power-on, overriding StartUpMode.
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 Labels
LaundryWasherMode defines 4 dedicated ModeTag values for standardized wash mode identification. The app should use these tags to identify mode purposes rather than relying on vendor-defined Label text.
Status Codes
Possible values for the Status field in ChangeToModeResponse:
Example Data
Read result from a LaundryWasherMode Cluster on a washer with 4 modes, currently in Normal:
{
// --- Supported Modes ---
"0x0000": [ // SupportedModes
{
"Label": "Normal",
"Mode": 0,
"ModeTags": [{ "Value": 16384 }] // 0x4000 = Normal
},
{
"Label": "Delicate",
"Mode": 1,
"ModeTags": [{ "Value": 16385 }] // 0x4001 = Delicate
},
{
"Label": "Heavy",
"Mode": 2,
"ModeTags": [{ "Value": 16386 }] // 0x4002 = Heavy
},
{
"Label": "Whites",
"Mode": 3,
"ModeTags": [{ "Value": 16387 }] // 0x4003 = Whites
}
],
// --- Current Mode ---
"0x0001": 0 // CurrentMode = 0 (Normal)
// --- Startup and On Modes ---
}
SupportedModes content is defined by the device manufacturer; different washers may support different numbers and numbering of modes. The app should dynamically read SupportedModes to display the mode list — do not hard-code mode options. Use ModeTag values to determine mode types rather than comparing Label strings.
Common Scenarios
Scenario 1: Select Wash Mode
- Read
SupportedModes (0x0000)to get all wash modes supported by the device - Display the mode list in the app, showing appropriate icons and descriptions based on ModeTag values
- The user selects "Delicate"; send
ChangeToMode (0x00)with NewMode set to the corresponding Mode number - Check ChangeToModeResponse Status:
0x00(Success) — switch succeeded; subscribe to CurrentMode to confirm the update0x01(UnsupportedMode) — invalid mode number; check synchronization with SupportedModes0x02(GenericFailure) — device refused the switch; read StatusText for the reason (e.g., "Cannot switch mode while washing")
Scenario 2: Configure Startup Mode
- Read
SupportedModes (0x0000)to get the available modes - Write
StartUpMode (0x0002)Removed in newer versions to set the power-on default mode:- Write a specific Mode number — automatically use that mode on every power-on (e.g., always default to Normal)
- Write
null— retain the mode from before power loss (recommended)
- To force a specific mode on every power-on, set
OnMode (0x0003)Removed in newer versions, which takes priority over StartUpMode - For most household use cases, it is recommended to set both to
null, letting the user manually select a mode each time