Vacuum Card
Robot vacuum cards for Roborock, Xiaomi, Dreame, Ecovacs, Dyson and iRobot.
A drawn device picture matching about 130 models, brand colours, battery, status, current room, cleaning settings and room cleaning, with animations while cleaning, returning or washing the mop.
Highlights
- About 130 models recognised, drawn picture per model
- Header icon by kind of device (robot vacuum, mopping robot, wet-dry vacuum) with the brand logo as a badge
- Brand colours, readable in light and dark
- Battery, status, current room, progress and errors
- Cleaning mode, suction, mop intensity and route
- Room selection and dock actions, Dreame and Xiaomi Miio included, with your own list of rooms if needed
- Map paused while the card is off-screen
Cards
type: custom:vacuum-cardInstall
- 1Open the repository in the Marketplace with the Add to Marketplace button above, or add
github.com/juju35/ha-vacuum-cardas a custom repository (category Dashboard). - 2Download it from the Marketplace.
- 3Reload the browser and add the card from the dashboard editor.
Gallery 35
Documentation
From the README Features
Features
- Two cards: a full Vacuum Card (
custom:vacuum-card) and a compact Vacuum Mini Card (custom:vacuum-mini-card) - Robot vacuums and wet-dry vacuums, several devices supported, Roborock dock merged with its robot
- Drawn device picture that follows the model (about 130 Roborock, Xiaomi / Mijia, Dreame, Ecovacs, Dyson and iRobot models recognized, see Recognized models from their model id, even when the device was renamed), animated by what the robot is doing, white or dark (
color), or your own picture - Header icon of the kind of device (robot vacuum, mopping robot or wet-dry vacuum) with the brand logo (Roborock, Xiaomi, Mi Home, Dreame, Ecovacs, Dyson or iRobot) as a badge, opening the brand's site, and buttons in the brand's color, readable in the light and dark themes
- The header icon takes the color of the device state, the worst of the robot status, the water tanks and the consumables: red on an error, offline, an empty clean water tank, a full dirty water tank, an empty cleaning fluid tank or a worn-out consumable; orange when paused, a water tank is at 25 % or less or a consumable is nearly due; otherwise the color of the status (blue cleaning, green docked or charging, grey idle). Without a status, it keeps the brand color
- Battery (sensor, or the vacuum's attribute when the integration has no sensor), status, current room, cleaning progress and errors
- Cleaning settings: mode, suction power, mop intensity and route
- Start / pause, stop, return to dock and locate buttons
- Maintenance: main brush, side brush, filter, sensors, mop, dock strainer… with remaining time or percentage, and a reset button (with confirmation) when the integration provides one
- Statistics: last clean, number of cleanings, total area and time
- Map of the current floor while the robot is cleaning (or always, or never), with optional cropping, enlarged full screen on click; any camera or image entity can be used (
map_entity) - Room selector on the Start button: Roborock, Dreame Vacuum, and Xiaomi Miio with the
roomsoption (see Room selection) - Roborock: routines of the Roborock app as one-tap buttons, dock (water tanks, detergent, auto-empty mode, mop drying, Empty bin / Wash mop / Dry mop buttons)
- Collapsible sections (statistics and dock folded by default)
- Sections view: the full card takes 12 columns by default and at least 9, the mini card 6; narrow widths get their own layout (see Screenshots)
- Command buttons disabled while the vacuum is unavailable
- Detail button on the mini card (top right): it switches the mini card to the full card's content and back; a click anywhere outside the card brings the compact view back
- Click any value to open its Home Assistant history (more-info dialog)
- Visual editor in the dashboard UI for both cards (no YAML needed)
- Light and dark mode, English, French, German, Spanish, Serbian (Cyrillic and Latin), Italian, Dutch, European Portuguese, Polish, Romanian, Danish, Swedish, Bulgarian, Russian, Ukrainian, Hungarian, Slovak, Czech, Slovenian, Latvian and Greek
- Single file, no external dependency, the logos and pictures are embedded
Supported integrations
Supported integrations
| Integration | Brands | What the cards show |
|---|---|---|
| Roborock, Mi Robot Vacuum (1S…) | Everything: status, room, progress, modes, controls, room selector, routines, dock, maintenance with reset, statistics, map | |
| Roborock and Xiaomi robots paired with Mi Home | Status, errors, fan speed, controls, maintenance with reset, statistics; room selector with the rooms option; map with map_entity |
|
| Xiaomi / Mijia robots | Vacuum (status, fan speed, controls) and battery | |
| Dreame, Xiaomi / Mijia robots built by Dreame | Status, room, progress, errors, controls, room selector, maintenance (mop included) with reset, statistics, map | |
| Ecovacs DEEBOT | Status, errors, cleaning mode and water amount, controls, maintenance in % (mop included) with reset, statistics, map | |
dyson_local) |
Dyson 360 Eye, 360 Heurist, 360 Vis Nav | Vacuum (status, power mode, controls) and battery |
roomba) |
iRobot Roomba (600, 900, e, i, s, j, Combo) and Braava jet m6 | Status (Clean Base emptying the bin included), battery, current clean, errors and bin full, fan speed or mopping behavior, water tanks, controls, statistics |
Only robot vacuums and wet-dry vacuums are listed: the other devices of these integrations (fans, purifiers, air conditioners, lamps, mowers, the Roborock Zeo washing machine…) are skipped. Details in Integrations.
Prerequisites
Prerequisites
Home Assistant 2024.8 or later, with at least one of the supported integrations configured.
Configuration
Configuration
Card types#
| Card | Type | Former types (same card) |
|---|---|---|
| Vacuum Card | custom:vacuum-card |
custom:roborock-card, custom:robot-vacuum-card |
| Vacuum Mini Card | custom:vacuum-mini-card |
custom:roborock-mini-card, custom:robot-vacuum-mini-card |
The former types are identical (same options, same editor), whatever the brand of the robot: existing dashboards keep working.
Note
custom:vacuum-cardis also the type of denysdovhan/vacuum-card. When both are installed, the one loaded first getsvacuum-card; usecustom:robot-vacuum-card/custom:robot-vacuum-mini-cardfor this one, they are always available.
Visual editor#
Edit a dashboard, click Add card and search for Vacuum Card or Vacuum Mini Card. The first robot vacuum is preselected; pick another device in the list if you have several, set an optional title, choose the picture and its color, the sections to display and the language. The preview updates live, and options left at their default are kept out of the generated YAML.
Minimal#
type: custom:vacuum-card
type: custom:vacuum-mini-card
Full options#
type: custom:vacuum-card
device: Roborock Saros 20
title: Saros
image: auto
color: auto
show_logo: true
show_controls: true
room_selection: true
show_modes: true
show_routines: true
show_dock: true
show_consumables: true
show_stats: true
show_map: cleaning
map_entity: camera.dustbusters_map
collapsed:
- stats
- dock
crop:
top: 170
bottom: 190
left: 180
right: 150
language: fr
type: custom:vacuum-mini-card
device: Roborock F25 Ultra
title: F25
image: auto
color: dark
show_logo: true
show_controls: true
room_selection: true
zoom: true
language: fr
Options reference#
| Option | Card | Default | Description |
|---|---|---|---|
device |
both | First robot vacuum | Device to display: its name (as shown in Home Assistant) or its device id (set by the visual editor) |
title |
both | Device name | Card title |
show_title |
both | true |
Show the title in the header (e.g. false under a section heading of your own) |
show_subtitle |
both | true |
Show the subtitle under the title |
image |
both | auto |
Device picture: auto (per model), a model id to draw another model (e.g. roborock.vacuum.a72 for the Q5 Pro — the visual editor lists the models by brand and name), none, or the URL of your own picture (e.g. /local/my-robot.png). The former presets saros_20, s8_maxv_ultra, qrevo, q7, f25_ultra and dyad_pro still work |
color |
both | auto |
Color of the drawn picture: auto (per model), white or dark — for models sold in both colors (F25 Ultra, S7, Q5…) |
show_logo |
both | true |
Show the header icon of the kind of device, colored with the device state, with the brand logo (opens the brand's site in a new tab), see Brands |
show_controls |
both | true |
Start / pause, stop, dock and locate buttons (robot vacuums), dock actions (empty bin, wash and dry mop) and maintenance reset buttons |
room_selection |
both | true |
Roborock, Dreame Vacuum and Xiaomi Miio (with rooms): the Start button opens the room selector; false starts a full cleaning right away |
rooms |
both | — | Rooms of the room selector, as a list of id (segment id) and name, in the order shown: needed with Xiaomi Miio, which cannot list them; with Roborock and Dreame Vacuum, replaces the rooms read from the robot. See Room selection |
zoom |
mini | true |
Detail button at the top right of the mini card: it shows the full card's content (with the same options, so show_dock, show_map, collapsed… can be set on the mini card too) and switches back to the compact view; a click outside the card also brings the compact view back. false removes the button |
show_modes |
full | true |
Cleaning mode, suction power, mop intensity and route |
show_routines |
full | true |
Routines buttons (Roborock integration) |
show_dock |
full | true |
Dock status (Roborock integration; the Clean Base water tank of the iRobot Combo j9+) |
show_consumables |
full | true |
Maintenance (remaining time of brushes, filter, sensors…) |
show_stats |
full | true |
Cleaning statistics |
show_map |
full | cleaning |
Map of the current floor: cleaning (only while the robot is cleaning), always (or true) or never (or false) |
collapsed |
full | [stats, dock] |
Sections folded by default, among routines, dock, consumables and stats ([] to unfold everything). Click a section title (or Tab to it and press Enter or Space) to fold or unfold it. The dock section unfolds on its own when the dock reports a problem |
map_entity |
full | — | Camera or image entity to show as the map instead of the integration's map, e.g. the camera of Xiaomi Cloud Map Extractor |
crop |
full | — | Crop the map, in pixels of the map image: top, bottom, left and/or right (see below) |
language |
both | Auto | Force language: fr, en, de, es, sr, sr-Latn, it, nl, pt, pl, ro, da, sv, bg, ru, uk, hu, sk, cs, sl, lv or el (auto-detects from HA settings) |
Cropping the map#
Map images often have wide empty borders. Remove them with crop, in pixels of the original image (all four values are optional):
type: custom:vacuum-card
crop:
top: 170
bottom: 190
left: 180
right: 150
In the visual editor, the values are under Map crop (pixels).
Click the map to open it full screen; click anywhere or press Escape to close it.
How it works
How it works
The cards read the Home Assistant entity and device registries instead of entity ids: every entity of a supported integration is matched by its translation_key (status, current_room, main_brush_time_left…) and by the device it belongs to. The keys of Xiaomi Miio, Dreame Vacuum, Ecovacs and iRobot are mapped onto the Roborock ones, so the same card reads all of them. Entity ids can therefore be in any language or renamed without breaking the cards.
States and errors are shown with the card's own translations when available, otherwise with Home Assistant's translation of the integration.
Brands#
The brand comes from the model id of the device: roborock.* → Roborock, the Mi / Xiaomi / Mijia robots (rockrobo.vacuum.v1, roborock.vacuum.m1s, xiaomi.*, mijia.*, ijai.* and the Mi models built by Dreame or Viomi) → Xiaomi, other dreame.* → Dreame, DEEBOT … → Ecovacs, Dyson product types (N223, 276, 277) → Dyson, iRobot SKUs (R980020, i755020, j755840, m611020…) → iRobot. A model of another brand gets the brand of its integration: Mi Home for Xiaomi Miio, Xiaomi for Xiaomi Home, Dreame for Dreame Vacuum, Ecovacs for Ecovacs, Dyson for Dyson, iRobot for iRobot. A Q5 Pro set up with Xiaomi Miio therefore shows the Roborock logo, an X10+ (built by Dreame, sold by Xiaomi) the Xiaomi one.
The brand gives the logo and the color of the buttons, taken from the logo, with a darker shade in the light theme so that they stay readable on a white card:
| Brand | Light theme | Dark theme |
|---|---|---|
#ea0029 |
#ea0029 |
|
#c24c00 |
#ff6900 |
|
#2a7f57 |
#43b17e |
|
#8a6a3c |
#c9a46e |
|
#0b6bc4 |
#3d9be9 |
|
#4a4a4a |
#b8b8b8 |
|
#4a8209 |
#64a70b |
The Ecovacs and Dyson logos are drawn on a white rounded tile, so that they stay visible on a dark card; the iRobot logo is its green rounded tile.
Device pictures#
The picture is drawn from the device name and the commercial name of its model id (roborock.vacuum.a72 → Q5 Pro…), for about 130 models compatible with the integrations: Roborock E2 / S4 to S8, Q5 to Q10, the Qrevo range (Edge, Curv 2, S Pro…), Saros 10 / 20, G10 / G30, Dyad and F25; Xiaomi / Mijia Mi Robot Vacuum, 1S, Vacuum-Mop Essential / 1C / P / 2 / 2 Pro+ / 2 Ultra, X10 / X10+ / X20+, S10+, Omni 2, M40…; Dreame F9, D9, Z10 Pro, L10 Pro, D10 Plus, L10s Ultra; Ecovacs DEEBOT N8, OZMO, T8 to T30, X1 / X2 / X5 (Omni, Turbo); Dyson 360 Eye, 360 Heurist, 360 Vis Nav; iRobot Roomba 600 / 900, e5, i3 / i5 / i7, s9, j7 / j9, Combo j7+ / j9+ (with or without Clean Base) and Braava jet m6 — from their SKU, whatever the region (…020 Europe, …840 America…). A renamed device keeps the right picture. The full list is in Recognized models.
Saros robots, the E / C1 series and the Mi Vacuum-Mop Essential / 1C have no LiDAR turret; the Q series (Q5…Q10, Qrevo), the Xiaomi, Dreame and Ecovacs robots are white, the other robots (S series…) are dark; the dock is drawn when the integration reports one or the name implies it (Ultra, Plus / +, Qrevo, Saros, Omni, Self-Cleaning, G10 / G30). Wet-dry vacuums (roborock.wdv.*, roborock.wetdryvac.*) show an upright vacuum, dark for the Dyad series. iRobot robots have their own drawing: Roombas dark (the s9 D-shaped, the j series with its front camera) and in front of their Clean Base for the "+" models, the Braava jet white.
The picture is animated by the current activity, from the status, the cleaning mode and the dock drying: vacuuming (side brushes and dust), mopping (wet trail and drops), both, returning to the dock, washing the mops (bubbles) and drying them (heat waves), emptying the bin into an iRobot Clean Base (dust rising up the base); it stays still otherwise and with the reduced-motion setting. Use the image option to pick another model or your own picture, and color (white / dark) when your model exists in both colors.
Room selection#
The Start button opens a list of rooms to clean (or Whole home) when the integration can clean rooms (segments):
| Integration | Rooms listed from | Cleaned with |
|---|---|---|
| Roborock | roborock.get_maps (current map) |
vacuum.send_command app_segment_clean |
| Dreame Vacuum | the vacuum's rooms attribute (current map, selected_map) |
dreame_vacuum.vacuum_clean_segment |
| Xiaomi Miio | the rooms option only (the integration cannot list them) |
xiaomi_miio.vacuum_clean_segment |
The segment ids of a Xiaomi Miio robot can be read with Xiaomi Cloud Map Extractor (rooms attribute of its camera) or found by trying xiaomi_miio.vacuum_clean_segment from the developer tools:
type: custom:vacuum-card
device: Living room robot
rooms:
- id: 16
name: Kitchen
- id: 17
name: Living room
- id: 18
name: Bedroom
The option can be set on the mini card too. It is YAML only (the visual editor keeps it).
Integrations#
- Roborock: the dock entities, which the integration puts on a separate "… Dock" device, are attached to their robot. The room selector reads the rooms of the current map (the one chosen in the integration's Selected map select) with the
roborock.get_mapsservice, then cleans the selected rooms with the sameapp_segment_cleancommand the integration uses; when the robot is paused, the Start button resumes the cleaning instead. Routines created in the Roborock app appear as buttons in the integration; the card lists them and asks for confirmation before running one. - Xiaomi Miio: current / last clean (
clean_time,clean_area), totals (total_duration,total_area,count), last clean start / end, maintenance (main_brush_left,side_brush_left,filter_left,sensor_dirty_left) with their Reset buttons. The status comes from the vacuum entity, errors from itserrorattribute. Some of these sensors are disabled by default in the integration (totals, DND): enable them to see the statistics. No map: setmap_entityto the camera of Xiaomi Cloud Map Extractor. - Xiaomi Home: its entities have no
translation_key, so the cards show the vacuum (status, fan speed, controls) and the battery only. No map: usemap_entityas for Xiaomi Miio. - Dreame Vacuum: status, battery, current room, cleaning progress, error, current and total cleaning, maintenance (
main_brush_time_left,side_brush_time_left,filter_time_left,sensor_dirty_time_left,mop_pad_time_left) with the Reset buttons of the integration, and its map camera. - Ecovacs: current and total cleaning (
stats_area,stats_time,total_stats_*), cleaning mode (work_mode) and water amount (water_amount), maintenance in percent (lifespan_brush,lifespan_side_brush,lifespan_filter,lifespan_round_mop) with thereset_lifespan_*buttons, error code (0: no error) with its description, the station state (station_state: mops washed / dried, animated on the picture), and the map image. The error sensor is disabled by default in the integration: enable it to see the errors. - Dyson (
dyson_local): the vacuum entity only — status, power mode, controls — and the battery from itsbattery_levelattribute. The picture is a dedicated Dyson 360 drawing. - iRobot (
roomba): the vacuum (status, fan speed — Automatic / Eco / Performance on the Roombas with Carpet Boost — or mopping behavior of the Braava, controls), the battery sensor, the current clean (time and area, attributes of the vacuum while it cleans; the area in m², or ft² with the US customary unit system), the error (errorattribute) and the Bin full sensor as alerts, the statistics (total_missions,total_cleaned_area,total_cleaning_time,last_mission), the robot's water tank (tank_level, Braava and Combo) and the Clean Base's (dock_tank_level, Combo j9+). The vacuum'sstatusattribute tells the Clean Base emptying the bin (Emptying Bin, shown and animated) and the robot charging. No map and no maintenance counters (the integration has none). - Xiaomi Home, Ecovacs, Dyson and iRobot have no room cleaning the cards know: the Start button starts a full cleaning (no room selector). Only Roborock has the routine and dock sections.
Each maintenance line has a reset button when the integration exposes the matching reset button, and asks for confirmation before resetting the counter. The remaining time turns orange under 10 % of the part lifetime (or under 10 h when the lifetime is unknown), and red when it reaches 0; a percentage (Ecovacs, Roborock wet-dry vacuums) turns orange under 10 % and red at 0 %. Bars use the robot lifetimes: main brush 300 h, side brush 200 h, filter 150 h, sensors 30 h.
Recognized models#
Models the cards recognize from the model id the integration reports (drawn picture, logo and buttons of their brand). Any of these model ids can also be set as the image option to draw that model; the visual editor lists them by brand and name. iRobot SKUs of other regions are recognized all the same.
Roborock (58)
| Model | Model id |
|---|---|
| C1 | roborock.vacuum.c1 |
| Dyad | roborock.wetdryvac.a01 |
| Dyad Air | roborock.wetdryvac.a107 |
| Dyad Pro | roborock.wetdryvac.a56 |
| Dyad Pro Combo | roborock.wetdryvac.a83 |
| E2 | roborock.vacuum.e2 |
| E4 | roborock.vacuum.a01 |
| F25 Ultra | roborock.wdv.a194 |
| G10 | roborock.vacuum.a29, roborock.vacuum.a30 |
| G10S | roborock.vacuum.a46 |
| G10S Pro | roborock.vacuum.a26 |
| G30 | roborock.vacuum.a146 |
| P30 Pro | roborock.vacuum.a306 |
| Q5 | roborock.vacuum.a34 |
| Q5 Max+ | roborock.vacuum.a125 |
| Q5 Pro | roborock.vacuum.a72 |
| Q7 | roborock.vacuum.a40 |
| Q7 Max | roborock.vacuum.a38 |
| Q7 Series | roborock.vacuum.sc01, roborock.vacuum.sc05 |
| Q8 Max | roborock.vacuum.a73 |
| Q10 | roborock.vacuum.ss07 |
| Qrevo | roborock.vacuum.a75 |
| Qrevo 2 Pro | roborock.vacuum.a294 |
| Qrevo C | roborock.vacuum.a170 |
| Qrevo Curv | roborock.vacuum.a135 |
| Qrevo Curv 2 Flow | roborock.vacuum.a245 |
| Qrevo Edge | roborock.vacuum.a187 |
| Qrevo Edge 2 | roborock.vacuum.a298 |
| Qrevo Master | roborock.vacuum.a117 |
| Qrevo MaxV | roborock.vacuum.a87 |
| Qrevo Plus | roborock.vacuum.a123 |
| Qrevo Pro | roborock.vacuum.a101 |
| Qrevo S | roborock.vacuum.a104 |
| Qrevo S Pro | roborock.vacuum.a326 |
| QV 35A | roborock.vacuum.a168 |
| S4 | roborock.vacuum.s4 |
| S4 Max | roborock.vacuum.a19 |
| S5 | roborock.vacuum.s5 |
| S5 Max | roborock.vacuum.s5e |
| S6 | roborock.vacuum.s6 |
| S6 MaxV | roborock.vacuum.a10 |
| S6 Pure | roborock.vacuum.a08 |
| S7 | roborock.vacuum.a15 |
| S7 MaxV | roborock.vacuum.a27 |
| S7 MaxV Ultra | roborock.vacuum.a65 |
| S7 Pro Ultra | roborock.vacuum.a62 |
| S8 | roborock.vacuum.a51 |
| S8 MaxV Ultra | roborock.vacuum.a97 |
| S8 Pro Ultra | roborock.vacuum.a70 |
| Saros 10 | roborock.vacuum.a147 |
| Saros 10R | roborock.vacuum.a143, roborock.vacuum.a144 |
| Saros 20 | roborock.vacuum.a288 |
| Saros 20 Flow | roborock.vacuum.a307 |
| Saros 20 Sonic | roborock.vacuum.a279 |
| T6 | roborock.vacuum.t6 |
| T7 | roborock.vacuum.a11 |
| T7S | roborock.vacuum.a14 |
| T7S Plus | roborock.vacuum.a23 |
Xiaomi (26)
| Model | Model id |
|---|---|
| Mi Robot Vacuum | rockrobo.vacuum.v1 |
| Mi Robot Vacuum 1S | roborock.vacuum.m1s |
| Mi Robot Vacuum X10 | dreame.vacuum.r2209 |
| Mi Robot Vacuum X10+ | dreame.vacuum.p2114a |
| Mi Robot Vacuum X20+ | xiaomi.vacuum.c102gl |
| Mi Robot Vacuum-Mop | dreame.vacuum.p2150o |
| Mi Robot Vacuum-Mop 1C | dreame.vacuum.mc1808 |
| Mi Robot Vacuum-Mop 2 | dreame.vacuum.p2140o, dreame.vacuum.p2140p, dreame.vacuum.p2140q |
| Mi Robot Vacuum-Mop 2 Pro | ijai.vacuum.v3 |
| Mi Robot Vacuum-Mop 2 Pro+ | dreame.vacuum.p2041o |
| Mi Robot Vacuum-Mop 2 Ultra | dreame.vacuum.p2150a |
| Mi Robot Vacuum-Mop 2 Ultra Set | dreame.vacuum.p2150b |
| Mi Robot Vacuum-Mop Essential | mijia.vacuum.v1 |
| Mi Robot Vacuum-Mop Essential G1 | mijia.vacuum.v2 |
| Mi Robot Vacuum-Mop P | viomi.vacuum.v7, viomi.vacuum.v8 |
| Mi Robot Vacuum-Mop Ultra Slim | dreame.vacuum.p2148o |
| Mijia 1S | dreame.vacuum.r2254 |
| Mijia 1T | dreame.vacuum.p2041 |
| Mijia 2C | dreame.vacuum.p2140, dreame.vacuum.p2140a |
| Mijia Cleaning and Mopping Robot 2 Pro | dreame.vacuum.r2210 |
| Mijia M40 | xiaomi.vacuum.d110ch |
| Mijia Omni 2 | xiaomi.vacuum.c102cn |
| Mijia Omni M30S | xiaomi.vacuum.d103cn |
| Mijia Self-Cleaning Robot Vacuum-Mop | dreame.vacuum.p2114o |
| Mijia Self-Cleaning Robot Vacuum-Mop Pro | dreame.vacuum.p2149o |
| Robot Vacuum S10+ | dreame.vacuum.r2211o |
Dreame (6)
| Model | Model id |
|---|---|
| D9 | dreame.vacuum.p2009 |
| D10 Plus | dreame.vacuum.r2205 |
| F9 | dreame.vacuum.p2008 |
| L10 Pro | dreame.vacuum.p2029 |
| L10s Ultra | dreame.vacuum.r2228o |
| Z10 Pro | dreame.vacuum.p2028 |
Ecovacs (17)
| Model | Model id |
|---|---|
| DEEBOT N8 | deebot n8 |
| DEEBOT N8 Pro | deebot n8 pro |
| DEEBOT N8 Pro+ | deebot n8 pro+ |
| DEEBOT OZMO 920 | deebot ozmo 920 |
| DEEBOT OZMO 950 | deebot ozmo 950 |
| DEEBOT OZMO T8 | deebot ozmo t8 |
| DEEBOT T8 AIVI | deebot t8 aivi |
| DEEBOT T8+ | deebot t8+ |
| DEEBOT T9 | deebot t9 |
| DEEBOT T9+ | deebot t9+ |
| DEEBOT T10 Omni | deebot t10 omni |
| DEEBOT T20 Omni | deebot t20 omni |
| DEEBOT T30 Omni | deebot t30 omni |
| DEEBOT X1 Omni | deebot x1 omni |
| DEEBOT X1 Turbo | deebot x1 turbo |
| DEEBOT X2 Omni | deebot x2 omni |
| DEEBOT X5 Pro Omni | deebot x5 pro omni |
Dyson (3)
| Model | Model id |
|---|---|
| 360 Eye | n223 |
| 360 Heurist | 276 |
| 360 Vis Nav | 277 |
iRobot (22)
| Model | Model id |
|---|---|
| Braava jet m6 | m611020 |
| Roomba 675 | r675020 |
| Roomba 694 | r694020 |
| Roomba 696 | r696020 |
| Roomba 960 | r960020 |
| Roomba 974 | r974020 |
| Roomba 976 | r976020 |
| Roomba 980 | r980020 |
| Roomba Combo j7+ | c755020 |
| Roomba Combo j9+ | c975020 |
| Roomba e5 | e515020 |
| Roomba i3 | i315020 |
| Roomba i3+ | i355020 |
| Roomba i5 | i515020 |
| Roomba i5+ | i555020 |
| Roomba i7 | i715020 |
| Roomba i7+ | i755020 |
| Roomba j7 | j715020 |
| Roomba j7+ | j755020 |
| Roomba j9+ | j955020 |
| Roomba s9 | s915020 |
| Roomba s9+ | s955020 |
Changelog
All 58 versions 2.10.0Nov 12, 2026Latest
Features
show_titleandshow_subtitleoptions (also in the visual editor) hide the header's title and its subtitle, separately, for a card placed under a section heading of its own (asked in juju35/ha-vehicle-card#72).
2.9.0Nov 10, 2026
Features
- The header icon takes the color of the device state, on the full and the mini card: red on an error, offline, an empty clean water tank, a full dirty water tank, an empty cleaning fluid tank or a worn-out consumable; orange when paused, a water tank is low (25 % or less) or a consumable is nearly due; otherwise the color of the status (blue while cleaning, green docked or charging, grey idle). It keeps the brand color when the device reports no status.
2.8.1Nov 9, 2026
Fixes
- Translations: the cards are defined once the page's language file has arrived (at most 1.5 s; Home Assistant builds a card when its element gets defined), so the first render is already translated instead of English then redrawn; until a language file is in, a missing text reads the English one wherever the card has no fallback of its own.
2.8.0Nov 9, 2026
Performance
- Translations load on demand: the bundle keeps English only (296 KB → 192 KB) and each other language is its own
vacuum-card.i18n.<lang>.jsfile next to it, fetched the first time a card needs it. Home Assistant loads every dashboard resource on every dashboard, so each page used to download and parse all 22 languages to use one. Until a language file has arrived (a few milliseconds), texts fall back to English, and the cards redraw once it is there.
Maintenance
- Build:
scripts/i18n-split.mjssplits the built bundle and rebuilds every table from the split files to check them (the build fails on any difference);src/keeps every language as before. - Release: every file of
dist/is attached. Manual installation copies the translation files too.
2.7.2Nov 8, 2026
Features
- iRobot: Roomba 976 (
r976020) recognized and offered as animagepreset; the 974 and 976 are drawn with their silver faceplate (picture added to the README gallery).
2.7.1Nov 8, 2026
Fixes
- Mini card: the 40 px robot type icon keeps its size in the narrowest compact view (it shrank to 28 px below 200 px); the name gives way instead.
- "Last clean … ago" no longer freezes: the card re-checks it every minute while it is on the page.