Skip to content

feat: Mode Select (0x0050) #71

Description

@simons-plugins

What

Add a ModeSelectHandler for the Matter Mode Select cluster (0x0050). This is the generic multi-mode cluster used by devices that don't fit a more specific cluster — coffee makers, robot vacuums in simple form, smart appliances, multi-function sensors.

Matter details

  • Cluster 0x0050 — Mode Select
  • Key attributes: CurrentMode (0x0003, uint8), SupportedModes (0x0002, list of {label, mode, semanticTags}), StartUpMode (0x0004, optional), OnMode (0x0005, optional)
  • Command: ChangeToMode {newMode: uint8}
  • semanticTags provide machine-readable intent (e.g. MfgCode=0, Value=0 = "Auto"); without them the modes are device-specific text labels

Proposed Indigo mapping

  • Device type: matterModeSelect — custom device
  • State currentMode (integer) + currentModeLabel (string, derived from SupportedModes)
  • Action: SelectMode with a dynamic list populated from SupportedModes labels
  • SupportedModes stored as a plugin prop on first commission; refreshed on reconnect

Complexity note

SupportedModes is a variable-length list that must be read once and stored — it can't be statically declared in Devices.xml. The dynamic action list is the same challenge GenericSwitchHandler faces with event numbers. Precedent: thermostat fan-mode mapping already handles a small fixed enum; this is the generalised form.

Scope

Many appliance clusters (Laundry Washer Mode, Dishwasher Mode, Oven Mode, etc.) are thin wrappers around Mode Select semantics. A solid ModeSelectHandler would be the foundation for those if ever needed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    device-supportNew Matter device class / cluster supportenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions