Chapter 10

Device mapping 2: sensors and energy

Use the full Stable 2.0.55 matrix to read sensor, binary_sensor and weather, covering temperature and humidity, pressure, air quality, safety detection, power, energy, battery, utility meter and EVSE, and tell the difference between a controller that will not display a value and source data that is wrong.

A sensor value that builds is not a value the controller will show

A sensor entity is not like a light, which has only a few obvious controls. A Home Assistant sensor can be a temperature, a pressure, an illuminance, a flow rate, a pollutant, instantaneous power, accumulated energy or a battery percentage; a binary_sensor can be a door or window, motion, occupancy, smoke, a leak or a plain boolean state. Matter Hub picks the endpoint from device_class first, and the controller then decides whether it shows that device type and cluster.

That produces three different outcomes. Matter Hub skips an unsupported device class outright; or the endpoint is healthy but the controller does not support that type; or the controller has a tile and shows an implausible number because the source unit, state or linked entity is wrong. Work out which layer you are in before you start troubleshooting.

Version limit: every domain and override in this chapter is in the Stable 2.0.55 release channel. electrical_utility_meter is an opt-in Matter 1.4 override inside Stable, and the pinned sources do not mark it experimental; controller support is listed separately, and you cannot derive it from the release channel or the specification version.

Safety sensors only give you notifications and automation signals. They do not replace the smoke, gas, leak or freeze protection equipment that regulations require. The energy and EVSE types likewise only bridge Home Assistant states and commands; they are not billing-grade metering and not a charging safety controller.

Where sensor, binary_sensor and weather come in

domainAutomatic resultIf it does not match
sensorMaps to a measurement or energy endpoint by device_class; some capabilities then depend on the mapping.An unknown device_class is logged as an entity warning and skipped; with no class at all, it does not guess either.
binary_sensorPicks Contact, Motion, Occupancy, Smoke/CO or a plain OnOff Sensor from device_class.An unknown class falls back to OnOff Sensor; it never becomes a safety alarm on its own.
weatherWeatherDevice combines the current temperature, humidity, pressure and whichever other attributes are available.A controller may show only some of them; weather is not a general Matter surface for forecast data.

On a sensor, temperature builds a Temperature Sensor; humidity and moisture both map to Relative Humidity, and the second suits the 0–100% soil-moisture meaning; illuminance maps to Light Sensor; pressure and atmospheric_pressure map to Pressure; volume_flow_rate maps to Flow. PM2.5, PM10 and CO2 are not override names in the Entity Mapping picker, but the v2.0.55 automatic path still has endpoint implementations for them; the matrix in this chapter lists the complete override set the manifest defines, so do not confuse automatic support with the override options.

On a binary_sensor, door, garage_door, opening and window become Contact; motion / moving become Motion; occupancy / presence become Occupancy; smoke becomes Smoke Alarm; carbon_monoxide / gas become CO Alarm. cold and moisture use the detector contact variants. battery_charging, light, plug, power and running use OnOff Sensor; the rest, including battery, connectivity, heat, lock, problem, safety, sound, tamper, update and vibration, use Contact.

Battery: if a binary sensor has a battery / battery_level attribute or a linked batteryEntity, a Power Source is added wherever a matching variant exists. When a mains-powered device wrongly reports a battery, use disableBatteryMapping so the controller does not show a fake low battery indefinitely.

Temperature, humidity, pressure, illuminance and flow

A Temperature Sensor can use humidityEntity, pressureEntity and batteryEntity to build a flat multi-measurement endpoint. v2.0.55 puts the Temperature, Humidity and Pressure device types all into the descriptor, which gives controllers such as SmartThings a better chance of recognizing each one. The available combinations are temperature with humidity, temperature with pressure, temperature with humidity and pressure, and each of those with a battery.

The bridge flags autoHumidityMapping, autoPressureMapping and autoBatteryMapping can find linked entities on the same HA device; autoComposedDevices may build a composed device structure instead. These flags are in Stable at maturity stable, but whether the automatic link is correct depends on the HA device registry. Similar names do not mean the same piece of hardware, so cross-check which device an entity belongs to, and its unit, before you save.

overrideWhat the measurement meansController notes from the pinned matrix
temperature_sensorTemperatureApple, Google, Alexa and Aqara yes.
humidity_sensorRelative humidity, or a percentage moisture valueYes on all four main controllers.
pressure_sensorPressure / atmospheric pressureGoogle and Aqara yes; Apple and Alexa no.
light_sensorIlluminanceApple, Google and Alexa yes; Aqara unknown.
flow_sensorVolume flow rateGoogle yes; Apple and Alexa no; Aqara unknown.

Before data reaches Matter it still has to match the unit meaning of the HA device class. If a temperature looks an order of magnitude off, a humidity falls outside 0–100, or a pressure is implausible, fix the source integration or the template sensor first; do not just relabel it with an override.

The full air-quality and rare-pollutant table

Air quality is not a single cluster. AQI, CO, CO2, TVOC, NO₂, O₃, formaldehyde, radon, PM1, PM2.5 and PM10 each measure something different. The complete air-related set in the Matter override picker is below; even when a controller does not display one of them, the endpoint can still be healthy.

overrideRecommended sourceController support snapshot
air_quality_sensorThe AQI device classApple no; Google, Alexa and Aqara yes.
carbon_monoxide_sensorA numeric CO measurement, not a binary alarmApple partial (an alarm rather than a reading), Google no, Alexa partial, Aqara yes.
tvoc_sensorvolatile_organic_compounds or partsApple and Google no; Alexa partial; Aqara yes.
nitrogen_dioxide_sensorNO₂Apple and Google no; Alexa partial; Aqara yes.
ozone_sensorO₃Apple and Google no; Alexa partial; Aqara yes.
formaldehyde_sensorFormaldehyde (HCHO); usually needs an explicit overrideApple and Google no; Alexa partial; Aqara yes.
radon_sensorRadonApple and Google no; Alexa partial; Aqara yes.
pm1_sensorPM1Apple and Google no; Alexa partial; Aqara yes.

carbon_monoxide_sensor, which carries a CO value, is not the same as smoke_co_alarm, which detects a dangerous condition. The first reports a concentration; the second reports an alarm event. Forcing a concentration sensor into an alarm can give you the wrong alarm semantics, and turning a binary smoke detector into a reading loses the alerting display.

Health-data boundary: a bridged value faithfully reflects Home Assistant and nothing more. Calibration, sensor lifetime, mounting position and the regulatory certification of an alarm device are all outside Matter Hub's scope.

Contact, motion, occupancy, smoke, leak and weather detection

overrideSuitable stateKey controller support
contact_sensorOpen / closed, in contact / separatedApple, Google, Alexa and Aqara yes.
motion_sensorMomentary motion / PIRYes on all four main controllers.
occupancy_sensorRoom occupancy / presenceApple partial; Google, Alexa and Aqara yes.
smoke_co_alarmA binary smoke or CO alarmApple, Alexa and Aqara yes; Google no.
water_leak_detectorA water leakApple, Alexa and Aqara yes; Google no.
water_freeze_detectorFreezing riskAqara yes; Apple, Google and Alexa no.
rain_sensorRainfallAqara yes; Apple, Google and Alexa no, and Alexa may reject this newer type.

A Smoke/CO Alarm can use the mapping's faultEntity so that a problem or safety binary sensor on the same device drives the hardware fault alert; that fault entity is not necessarily absorbed, and it can keep its own endpoint. This is a device fault signal, not an active alarm. Choose the wrong one and the controller treats a maintenance problem as a fire, or the other way round.

Door, window and motion sensors need no control commands, so verify them with read-only state changes. Do not create a real hazard in order to test a leak or smoke endpoint; you can use documented test entities in a Home Assistant development or test environment, but this chapter provides no data from a live environment.

Power, energy, battery, utility and EVSE

The power, energy, voltage and current device classes map to electrical_meter by default, because the pinned sources say Google and SmartThings can display an Electrical Meter. electrical_sensor is the legacy SolarPower alias; solar_power is for generation. Choosing consumption or generation has to match the sign convention and the meaning of the source.

overrideWhat it is forMaturity / controller caveat
electrical_meterA consumption device for power, energy, voltage and currentstable; Google yes, Apple and Alexa no, Aqara unknown; the source note says SmartThings can display it.
electrical_sensorThe legacy SolarPower typestable; Apple and Google no, Alexa and Aqara unknown.
solar_powerGenerationstable; Apple and Google no, Alexa and Aqara unknown; the source note says SmartThings can display it on its own.
electrical_utility_meterMatter 1.4 Meter Identification plus the measurement clustersOpt-in inside Stable, and not marked experimental by the sources; Apple, Google and Alexa no, Aqara unknown, SmartThings yes.
battery_storageStorage with charge and discharge power or energy; a plain percentage is a lighter battery source insteadstable; Aqara yes, no on the other three main platforms.
evseElectric vehicle supply equipmentstable; Aqara yes, Apple, Google and Alexa no; a bridged EVSE can break Alexa recognition, so keep it off an Alexa bridge.

An Electrical Meter can fold powerEntity, energyEntity, voltageEntity and currentEntity into the same endpoint. A Utility Meter can also carry meter serial and point of delivery fields; this site uses text placeholders only and puts no real identifying data anywhere. Battery Storage becomes a fuller ESS once you add batteryPowerEntity and batteryEnergyEntity; cross-check the charge and discharge directions against the source definition.

EVSE can carry both state and control, but controller support is a clear limit. Do not treat a Matter tile as electrical protection, load management or a basis for billing; any remote start or stop must follow the safety rules of the charging equipment and of the installation site.

Build a sensor mapping you can verify

  1. Confirm the device class and the unit on the HA entity page

    Go to Settings → Devices & services → Entities, confirm the source is a sensor, a binary_sensor or weather, and note the device class, the unit and the normal range. Documents use placeholders such as sensor.example_temperature only.

  2. Look at the automatic result in Devices

    Search for the entity and confirm first whether it has already been mapped automatically, composed or skipped. If it shows an unsupported device class, fix the HA source first rather than rushing to apply an override whose meaning does not fit.

  3. Cross-check the linked entities

    If you add a humidity, pressure, battery or power measurement, confirm they belong to the same physical device and that the units are compatible. Add one link at a time, so you can always tell which value caused the problem.

  4. Pick an override and read the controller caveat

    Override only when the automatic type does not fit and the meaning is unambiguous. For rare types such as utility meter, freeze, rain and EVSE, accept up front that a controller may not display them at all.

  5. Verify the endpoint on the bridge details page

    Confirm there is no failed entity, and compare the value Matter Hub shows against Home Assistant. Observe safety detection read-only; do not create smoke, a leak or any other real hazard.

  6. Verify in the controller UI last

    When a controller shows nothing, go back to the support matrix in this chapter. If it says no or unknown, keep HA as the primary view rather than commissioning the device again and again.

Troubleshooting sensors and energy

  1. The sensor is skipped

    Look at the entity warning and the device class. v2.0.55 skips an unknown sensor class rather than guessing; building an HA template sensor with the correct device class and unit is safer than forcing the wrong Matter type.

  2. A binary sensor turns into a plain On/Off

    An unknown or unset binary_sensor class falls back to OnOff Sensor. If it really is a door, motion, occupancy or smoke sensor, fix the device class in HA first, then look at the endpoint again.

  3. Only one of temperature, humidity and pressure shows

    Confirm the mapping's humidityEntity / pressureEntity have values and are available, and whether the descriptor lists more than one device type; then check whether the controller supports that measurement. Apple and Alexa are no for pressure.

  4. The controller shows a fake low battery

    If the source is a mains-powered device that wrongly reports a battery, use disableBatteryMapping on that entity. Confirm first that a real battery sensor has not actually failed.

  5. Power and energy values are mixed together

    Check the device class for W and for the accumulated energy unit, and confirm powerEntity and energyEntity have not been swapped. Do not guess from the name; go by the HA attributes and the statistics semantics.

  6. Alexa breaks after commissioning because of EVSE or a newer detector

    Exclude thinly supported types such as EVSE, rain and freeze from the Alexa-only bridge, then watch whether it recovers. Do not delete other healthy fabrics over it; locate the problem with the smallest possible filter change first.

FAQ

Does weather send a full forecast to a Matter controller?
Do not assume that. The v2.0.55 WeatherDevice uses whatever combination of current measurements is available; whether a controller shows every cluster, and whether it has a forecast UI, is a separate matter.
Why does a moisture sensor map to humidity?
For the 0–100% HA moisture device class, the code reuses the same percentage semantics as Relative Humidity so that the entity is not skipped. It does not represent the relative humidity of the air; name it clearly as soil or material moisture.
Can a CO sensor and a Smoke/CO Alarm be swapped?
They should not be. The first is a concentration reading, the second a binary safety alarm. The source device class and the real capability of the device have to match.
Why can electrical_utility_meter not be treated as broadly supported?
It is an opt-in Matter 1.4 override inside Stable, and the pinned sources do not mark it experimental; but Apple, Google and Alexa are no, Aqara is unknown, and only SmartThings is yes. Keep the release channel, the specification version and controller support separate.
Can I change a sensor the controller does not support into a contact sensor?
Only when the source already means a binary contact. Forcing a pressure, AQI or energy value into a contact loses both the number and the correct semantics; keep it in HA, or pick a platform that supports it.

Stable 2.0.55 pinned sources

Every source is pinned to an exact commit. What a platform displays can change with controller firmware and app updates; this chapter states only the support snapshot you can verify inside pinned v2.0.55.