Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Supported Device Types

This document provides comprehensive information about all device types supported by Home-Assistant-Matter-Hub, including their capabilities, controller compatibility, and configuration options.


Quick Reference

Home Assistant DomainMatter Device TypeApple HomeGoogle HomeAlexa
lightLight (various)
switchOn/Off Plug-in Unit
lockDoor Lock
coverWindow Covering
climateThermostat
fanFan
sensorVarious Sensors
binary_sensorVarious Sensors
media_playerSpeaker
valveWater Valve
vacuumRobotic Vacuum
water_heaterThermostat (Heating)
eventGeneric Switch
humidifierOn/Off Plug-in Unit

Legend: | Full Support | | Partial/Limited | | Not Supported



Detailed Device Types

Lights (light)

Home Assistant lights are mapped to the appropriate Matter light type based on supported features.

HA FeaturesMatter Device TypeCapabilities
On/Off onlyOnOffLightPower control
BrightnessDimmableLightPower + brightness
Color tempColorTemperatureLightPower + brightness + temperature
RGB/HS/XYExtendedColorLightFull color control

Supported Attributes:

Power & Energy Measurement:

Controller Notes:


Switches & Booleans (switch, input_boolean)

Mapped to OnOffPlugInUnit - a simple on/off controllable outlet.

Supported Actions:

Power & Energy Measurement:

Use Cases:


Locks (lock)

Mapped to DoorLock with PIN code support where available.

Supported Actions:

Supported States:

Feature Flags:

Controller Notes:


Covers (cover)

Mapped to WindowCovering supporting position and tilt control.

Supported Features:

HA FeatureMatter Capability
open / closeOpen/Close commands
set_positionLift percentage (0-100%)
set_tilt_positionTilt percentage (0-100%)
stopStop movement

Feature Flags (Bridge Settings):

FlagDescription
coverDoNotInvertPercentageSkip percentage inversion (not Matter compliant)
coverUseHomeAssistantPercentageDisplay HA percentages in Matter (Alexa-friendly)
coverSwapOpenCloseSwap open/close commands (fixes reversed Alexa commands)

Supported Device Classes:


Climate (climate)

Mapped to Thermostat with heating, cooling, and auto modes.

Supported HVAC Modes:

HA ModeMatter SystemMode
offOff
heatHeat
coolCool
heat_coolAuto
autoAuto*
dryDry
fan_onlyFanOnly

Important: Matter’s “Auto” mode means automatic switching between heat/cool based on temperature. This matches HA’s heat_cool mode, NOT the auto mode which typically means “device decides”.

Supported Attributes:

Feature Variants (auto-detected from HA hvac_modes):

New in v2.0.20: AutoMode is now only exposed when the device supports heat_cool (dual setpoint) in Home Assistant. Devices with only auto mode (single setpoint, device decides) no longer get AutoMode, which previously caused Apple Home to send conflicting commands and mode flipping.

This prevents Alexa from rejecting commands on single-capability thermostats (#136).

Temperature Display Unit: The ThermostatUserInterfaceConfiguration cluster exposes your HA temperature unit preference (°C or °F) to Matter controllers.


Fans (fan)

Mapped to Fan device with speed and direction control.

Supported Features:

HA FeatureMatter Capability
On/OffFanControl On/Off
Speed percentageFanControl SpeedPercent
Preset modesFanControl FanMode
DirectionFanControl AirflowDirection
OscillationFanControl Rocking

Wind Modes:

FeatureDescription
OscillationMaps oscillating attribute to Matter Rocking
Natural WindMaps “Natural” preset mode to naturalWind
Sleep WindMaps “Sleep” preset mode to sleepWind

Entity Mapping:

Speed Mapping:


Sensors (sensor)

Various sensor types mapped based on device_class and unit_of_measurement.

Temperature Sensor

Humidity Sensor

Pressure Sensor

Flow Sensor

Illuminance Sensor

Air Quality Sensors

Device ClassMatter Cluster
aqiAirQuality
pm25PM2.5 Concentration
pm10PM10 Concentration
co2CO2 Concentration
volatile_organic_compoundsTVOC Concentration

Auto Sensor Grouping

HAMH can automatically combine related sensors from the same HA device into a single Matter endpoint:

Feature FlagDescription
autoBatteryMappingCombines battery sensor with the primary sensor (default: enabled)
autoHumidityMappingCombines humidity sensor with temperature sensor (default: enabled)
autoPressureMappingCombines pressure sensor with temperature sensor (default: enabled)

You can also manually assign sensors via Entity Mapping:

See Temperature & Humidity Sensor for detailed setup instructions.


Binary Sensors (binary_sensor)

Mapped based on device_class attribute.

Device ClassMatter Device TypeController Display
running, plug, power, battery_charging, lightOnOffSensorOn/Off
door, window, garage_door, opening, lockContactSensorOpen/Closed
coldWaterFreezeDetectorFreeze/Normal
battery, heat, connectivity, problem, safety, sound, tamper, update, vibrationContactSensorOpen/Closed
motion, moving, occupancy, presenceOccupancySensorOccupied/Clear
moistureWaterLeakDetectorLeak/Dry
smokeSmokeCoAlarm (Smoke)Alarm
carbon_monoxide, gasSmokeCoAlarm (CO)Alarm
Other / unsetOnOffSensorOn/Off

Media Players (media_player)

Mapped to Speaker device with volume and playback control.

Supported Features:

Controller Notes:


Events (event)

Mapped to GenericSwitch device.

Supported Use Cases:

Behavior:


Buttons (button, input_button)

Mapped to OnOffPlugInUnit with auto-off behavior.

Behavior:

  1. Controller sends “turn on” command

  2. Button press is triggered in HA

  3. Device automatically turns off after 3 seconds


Scenes (scene)

Mapped to OnOffPlugInUnit with activate-only behavior.

Behavior:


Scripts (script)

Mapped to OnOffPlugInUnit.

Behavior:

Note: Scripts that are hidden in Home Assistant (hidden_by: user) will still be included if explicitly matched by your filter configuration.


Valves (valve)

Mapped to WaterValve device.

Supported Actions:

Controller Support:


Humidifiers (humidifier)

Mapped to OnOffPlugInUnit with level control.

Note: Matter does not have a native humidifier device type yet.

Supported Features:


Vacuums (vacuum)

Mapped to RoboticVacuumCleaner.

Supported Features:

Entity Mapping Options:

OptionDescription
roomEntitiesArray of button entity IDs for room selection (Roborock)
batteryEntityExternal battery sensor entity (Roomba, Deebot)
cleaningModeEntitySelect entity for cleaning mode (Dreame, Ecovacs, etc.)

Feature Flags (Bridge Settings):

FlagDescription
serverModeExpose as standalone device (required for Apple Home/Alexa)
vacuumIncludeUnnamedRoomsInclude rooms without names in room selection

Important Limitations:

See Robot Vacuum Guide for detailed setup instructions.


Automations (automation)

Mapped to OnOffPlugInUnit.

Behavior:


Entity Mapping Customization

You can override the default device type mapping per entity using the Entity Mapping UI.

Available Override Types:

Use Cases:


Known Controller Limitations

Google Home

Light Brightness Reset After Extended Off Period

Issue: When a light has been off for several minutes (typically 5+), turning it on via Google Home may set brightness to 100% instead of the last used value.

Cause: This is a Google Home / Matter.js interaction issue. Google Home sends brightness commands without the required transitionTime field after subscription renewals, causing validation errors in Matter.js before the bridge can process the command.

Workaround - Home Assistant Blueprint:

Create a blueprint that stores brightness on turn-off and restores it on turn-on:

Click to expand Blueprint YAML
blueprint:
  name: Matter/Google - Restore brightness after delayed ON
  description: >
    Workaround for Google Home / Matter bridge behavior that turns lights on at 100%
    after being off for a while. Stores brightness on turn_off and restores it on
    turn_on if the light was off for at least X minutes.
  domain: automation
  input:
    light_target:
      name: Light entity
      selector:
        entity:
          domain: light
    brightness_store:
      name: Helper to store last brightness (input_number, 1..255)
      selector:
        entity:
          domain: input_number
    off_minutes_threshold:
      name: Minutes off before restore
      default: 5
      selector:
        number:
          min: 1
          max: 120
          mode: slider
          step: 1
    restore_only_if_100pct:
      name: Only restore if Google turned it on at ~100%
      description: If enabled, restore only when current brightness is very high (>=250).
      default: true
      selector:
        boolean: {}

mode: restart

trigger:
  - platform: state
    entity_id: !input light_target
    to: "off"
    id: turned_off
  - platform: state
    entity_id: !input light_target
    to: "on"
    id: turned_on

variables:
  light_entity: !input light_target
  store_entity: !input brightness_store
  minutes_threshold: !input off_minutes_threshold
  only_if_100: !input restore_only_if_100pct

action:
  - choose:
      - conditions:
          - condition: trigger
            id: turned_off
        sequence:
          - variables:
              prev_brightness: "{{ state_attr(light_entity, 'brightness') }}"
          - condition: template
            value_template: "{{ prev_brightness is number and prev_brightness|int > 0 }}"
          - service: input_number.set_value
            target:
              entity_id: "{{ store_entity }}"
            data:
              value: "{{ prev_brightness|int }}"
      - conditions:
          - condition: trigger
            id: turned_on
        sequence:
          - delay: "00:00:02"
          - variables:
              was_off_seconds: >
                {{ (as_timestamp(now()) - as_timestamp(states[light_entity].last_changed)) | int }}
              threshold_seconds: "{{ (minutes_threshold | int) * 60 }}"
              current_brightness: "{{ state_attr(light_entity, 'brightness') | int(0) }}"
              saved_brightness: "{{ states(store_entity) | int(0) }}"
          - condition: template
            value_template: >
              {{ saved_brightness > 0 and (not only_if_100 or current_brightness >= 250) }}
          - service: light.turn_on
            target:
              entity_id: "{{ light_entity }}"
            data:
              brightness: "{{ saved_brightness }}"

Setup:

  1. Create an input_number helper for each light (range 1-255)

  2. Import the blueprint or create an automation with the YAML above

  3. Configure: select your light entity and the corresponding helper

Alternative: Use voice commands (“Hey Google, dim the lights to 50%”) which work reliably.

Cover Automations Not Available

Issue: Window covering devices (blinds, shutters, curtains) cannot be used as actions in Google Home Automations. When selecting a cover device, “no actions available” is shown.

Cause: This is a Google Home limitation with Matter WindowCovering devices. The same issue affects native Matter blinds (e.g., Smartwings).

Workarounds:

  1. Use Google Home Routines with voice commands (“Hey Google, close [cover name]”)

  2. Create Home Assistant scripts and expose them as switches via HAMH

  3. Use Home Assistant automations instead of Google Home automations


Amazon Alexa / Echo Devices

Light Brightness Reset on Turn-On

Issue: After a subscription renewal (approximately every 5 minutes), Alexa may reset light brightness to 100% when turning on a light, even if it was previously dimmed to a different level.

Cause: This is an Alexa-side behavior where Echo devices send an explicit moveToLevel(254) command immediately after the on() command following a new subscription.

Evidence:

Workaround: A feature flag alexaPreserveBrightnessOnTurnOn is available in Alpha/Testing versions. When enabled, the bridge will ignore brightness commands that set the light to 100% immediately after a turn-on command.


Requesting New Device Types

Before requesting a new device type, please verify:

  1. The device type exists in the Matter Specification

  2. Your controller supports the device type

  3. There isn’t an existing mapping that works

To request a new device type, open a feature request with: