Tapo Vacuum in H.A.
I needed to integrate my robot vacuum into Home Assistant, so I forked epg-pers/tapo-rv30-ha and made: jan-tdy/TapoVac-ADV
Features:
- Full vacuum control — start, pause, stop, dock, spot clean (
vacuum.clean_spot) - Native room cleaning, across every saved map/floor — the vacuum’s more-info dialog lets you map its rooms to Home Assistant areas and clean them with the standard
vacuum.clean_areaaction (Home Assistant 2026.3+, see below); rooms from multiple saved maps show up grouped by floor in the mapping dialog - Room-by-room cleaning via
tapo_rv30.clean_roomsservice - Live colour map image rendered from LZ4 pixel data
- Fan speed selection (Quiet / Standard / Turbo / Max / Ultra)
- Water level select (Off / Low / Medium / High)
- Clean passes select (1 / 2 / 3)
- Battery sensor
- Mop pad attached binary sensor - Clean progress sensor (
%, propernative_unit_of_measurement— usable directly in Tile cards etc. without hacking a literal%intostate_content) - Current Room sensor — which room the vacuum is currently in, inferred locally from its position against the map’s room geometry (no extra device call). Reads
unknownwhen the vacuum isn’t inside a mapped room (e.g. a hallway), and updates at the same cadence as the map image. - Error state sensor (e.g. “Ok”, “Dust Bin Removed”, “Trapped”)
- Consumable wear sensors (main brush, side brush, filter, sensor, charge contacts)
- Schedules sensor — view of the schedules you’ve saved in the Tapo app (time, repeat days, rooms, clean settings), decoded from
get_schedule_rules(credit: peggleg/tapo-rv30, who discovered this call — see Protocol notes — schedules below) - Run a saved schedule on demand via
tapo_rv30.run_schedule— no device call to trigger a schedule by ID is known to exist, so this reads the schedule’s settings and replays them through the same room-cleaning calls, right now instead of waiting for its own time (see Protocol notes — schedules) vacuum.send_command— raw passthrough to any device method (e.g.command: getConsumablesInfo), for calling anything this integration doesn’t have a dedicated action for yet. Response is logged at info level on thecustom_components.tapo_rv30logger.- Repair issue on room changes — if the currently active map’s rooms no longer match what you last mapped to Home Assistant areas (renamed, added, removed), Home Assistant raises a repair issue pointing back at the mapping dialog instead of silently leaving stale area mappings.
- Config flow UI — set up from Settings → Devices & Services
- Fixed: resuming after a pause now actually resumes (the upstream
start()re-sent the samesetSwitchCleancall, which the device silently ignores while alreadyclean_on: true)
Card
UI-editable through Home Assistant’s own card editor (YAML still available too). A live map with configurable rotation, click-to-select rooms for targeted cleaning, furniture placed and calibrated directly on the map, multi-floor awareness, and start/pause/stop/return-to-dock controls.
Repository: jan-tdy/VacuumCard-ADV