Smart Home Assistant

Home Assistant Vacuum battery_level Removed: How to Fix Your Automations

SepehrBy Sepehr· 9 September 2026· Updated 12 September 2026· 5 min read
✓ Independent — no paid placements✓ UK-tested in real homes✓ Cited sources
Black robotic vacuum cleaner sitting on a light wooden floor next to a sofa.

Key takeaways

  • Home Assistant removed the battery_level property from vacuum entities in the 2026.9 release, after core integrations migrated away from it in 2026.8.
  • The deprecation ran for a full year, starting in Home Assistant Core 2025.8 before the property stopped working in 2026.8.
  • Vacuum battery level now lives on a dedicated sensor entity, typically named sensor.<vacuum_name>_battery, with the battery device class.
  • Battery sensor entities are filed under the Diagnostic category by default, so they're hidden from the main dashboard view unless you go looking for them.
  • Fixing broken automations means swapping state_attr('vacuum.x', 'battery_level') templates and dashboard cards for the new sensor.*_battery entity.
On this page[tap to expand]

Home Assistant vacuum battery_level removed is the change behind any robot vacuum automation or dashboard card that suddenly shows an unavailable battery reading: the battery_level property stopped working in 2026.8 and was deleted outright in 2026.9. The fix is to point your config at the separate battery sensor entity each vacuum integration now creates instead.

Why did battery_level disappear from vacuum entities?

  • It was deprecated a year in advance: the battery_level and battery_icon properties on StateVacuumEntity were marked deprecated back in Home Assistant Core 2025.8, with a stated one-year deprecation window before removal.
  • Core integrations were migrated ahead of the cut-off: by Home Assistant 2026.8, built-in integrations such as Roborock, Xiaomi Miio and Ecovacs had already stopped setting the property and started exposing battery level through a dedicated sensor entity instead.
  • 2026.9 removed the property from the base class entirely: the September release deleted battery_level from the core StateVacuumEntity definition, so any custom or community integration still relying on it now reports nothing for battery state.
  • The reasoning is architectural, not cosmetic: Home Assistant's own developer documentation recommends a standalone sensor with the battery device class (plus an optional charging binary sensor) because a dedicated entity plugs into battery-tracking dashboards, history graphs and the Battery Notes-style tooling built around the sensor domain — none of which worked with an attribute buried on the vacuum entity itself.

How do you find what's still referencing the old property?

Search your configuration for the literal string battery_level across every place templates and dashboards can hide it: run grep -ri battery_level against your configuration.yaml, any files under automations.yaml/scripts.yaml, and your Lovelace dashboard YAML if you edit it in YAML mode. Pay particular attention to three spots: Jinja2 templates using state_attr('vacuum.xxx', 'battery_level') or {{ state_attr('vacuum.xxx', 'battery_level') }}, template sensors built around the vacuum entity's attributes, and custom Lovelace cards (entity cards, glance cards, custom vacuum cards) configured to show a battery_level attribute rather than a separate entity. If you edit dashboards through the UI only, open each vacuum card's settings and check whether it references an attribute instead of an entity — that's the giveaway.

How do you find the new battery sensor entity for your vacuum?

Every core vacuum integration migrated in 2026.8 now creates a matching sensor entity with the battery device class, typically named sensor.<vacuum_name>_battery — for example a Roborock S7 named "Roborock S7" gets sensor.roborock_s7_battery. Go to Settings > Devices & services > Entities, search for your vacuum's name followed by "battery", and confirm the entity exists and reports a percentage. It's filed under the Diagnostic category by default, so if it isn't showing on your dashboard already, that's why — diagnostic entities are hidden from the default view unless you go looking for them.

How do you update templates and automations to the new entity?

Replace state_attr('vacuum.living_room', 'battery_level') with states('sensor.living_room_vacuum_battery') in every template, and swap any automation trigger or condition that watched the vacuum entity's battery_level attribute for a numeric state trigger/condition on the new sensor entity instead — for example a "battery below 20%" automation should trigger on sensor.roborock_s7_battery going below 20, not on an attribute of vacuum.roborock_s7. If you also want a low-battery indicator, add a binary sensor with the charging device class where the integration provides one, which several vacuum integrations now expose alongside the battery sensor. You'll know it worked when the template or automation runs without an "unknown" or "unavailable" state and the reported percentage matches what the vacuum's own app shows.

How do you rebuild dashboard cards around the new entity?

For built-in vacuum cards, Home Assistant should already show battery correctly if the card is entity-based rather than attribute-based — but any custom card (glance, entities, or a third-party vacuum card) explicitly configured to display battery_level as an attribute needs its YAML updated to reference the new sensor.*_battery entity directly. In an entities card this means adding a second row for the sensor entity; in a glance card it means swapping the entity list to include the sensor alongside the vacuum. Confirm the fix by checking the card renders a live percentage rather than a blank or "unknown" battery icon after a full browser refresh.

What if your vacuum doesn't have a custom integration?

If you use a community-maintained vacuum integration installed through HACS rather than a core integration, check its GitHub repository or release notes specifically — not every custom integration had migrated to the sensor-based approach by the time 2026.9 shipped, and some users only discovered the gap when their battery reading silently went blank. If the integration you rely on hasn't added a battery sensor yet, that's a bug report for the integration's maintainer rather than something fixable from the Home Assistant side; in the meantime a template sensor built from whatever raw attribute the integration still exposes (check its entity's attributes in Developer Tools) can bridge the gap until it's patched.

How do you stop this kind of breakage catching you out again?

Read the breaking changes section of each monthly release before updating rather than after — Home Assistant lists every removed or renamed entity, service and property at the top of its release post, and 2026.9 also removed the VLC integration outright and renamed several LLM tool names, so vacuum battery tracking wasn't the only thing worth checking that month. Take a full backup from Settings > System > Backups before every update so a broken automation costs you a rollback rather than a rebuild. We cover the rest of what changed in 2026.9, including the new Matter network map and security dashboard alerts, in our full Home Assistant 2026.9 breakdown, and if you're still deciding which robot vacuum plays nicest with Home Assistant in the first place, our Dreame vs Roborock comparison covers integration quality alongside cleaning performance.

Buy the picks in this guide

Recommended for Home Automation

See all devices →

Frequently asked questions

Why was battery_level removed from Home Assistant vacuum entities?
The battery_level and battery_icon properties on the base vacuum entity were deprecated in Home Assistant Core 2025.8 as part of a year-long deprecation cycle, then formally removed in the 2026.9 release after core integrations like Roborock and Xiaomi Miio had already migrated away from them in 2026.8. Home Assistant's developer documentation recommends a standalone sensor entity with the battery device class instead, because a dedicated sensor plugs into history graphs, battery-tracking dashboards and long-term statistics in a way an attribute buried on the vacuum entity never could. If your battery readings went blank after updating, this deprecation is almost certainly why, and the fix is to point your automations and cards at the new sensor entity your vacuum integration now creates alongside the vacuum entity itself.
How do I find the new battery sensor entity for my robot vacuum in Home Assistant?
Go to Settings, then Devices and services, then Entities, and search for your vacuum's name followed by "battery" — core integrations migrated in 2026.8 create a sensor entity typically named sensor._battery, for example sensor.roborock_s7_battery for a Roborock S7. This sensor is filed under the Diagnostic category by default, so it won't appear on your main dashboard automatically even though it exists; you may need to add it manually to a card or check "show diagnostic entities" in the entity list filter to find it. Once located, use its entity ID in place of the old battery_level attribute in any template, automation or dashboard card that broke after updating.

Sources

Sources verified 2026-09-09

  1. Home Assistant — 2026.9: There's room on this bus
  2. Home Assistant Developer Docs — Vacuum battery properties are deprecated
  3. Home Assistant — Vacuum integration documentation
How we researched this

Claims in this article are checked against primary sources — manufacturer specifications, official documentation, Which? research, Ofgem guidance, or gov.uk — rather than forum threads or video reviews. Where the author has direct hands-on experience with a product (most Home Assistant, Zigbee, and home-networking gear is running in his own homelab), that is stated explicitly in the text.

For categories outside that personal setup — such as boilers, heat pumps, and other areas that are traditionally a heating engineer's domain — verdicts are built from cross-referenced manufacturer data, published lab results, and vetted expert and owner reviews rather than a claim of personal hands-on testing. See the editorial policy for the full methodology.

Sepehr

Written by

Sepehr

10+ years hands-on with Home Assistant & networking · Research-backed elsewhere · No brand deals

Smart home specialist with 10+ years running a self-hosted Home Assistant setup — Zigbee2MQTT, Frigate NVR, and local-first automations. Independent coverage for UK homes, no brand deals.

LinkedIn →

Citing this page? Please use a dofollow link back to the original article — it helps us keep the data on this page accurate and up to date.

Related reading