I got tired of babysitting my Dreame through a pile of MIoT scripts and the cloud map extractor.
Most days it worked. Then a token expired, or Xiaomi changed something, or "clean the kitchen" became "try and escape the house." So I locked in and built a HACS custom integration for it:
It supports a set of ijai, Dreame, Viomi, and Xiaomi-labelled vacuums. Control is over the LAN with MIoT once the vacuum is set up. If you sign in with a Mi account, it can also fetch maps and room data.
Features:
- Local controls: start, pause, stop, dock, locate, fan speed, water level, and whatever else your model exposes.
- Two setup paths: Mi account (with captcha and email 2FA built in) for maps and cloud-assisted setup, or IP/token if you want local control only.Mi account password is used for login or reauth, then left out of the stored config entry.
- Live map camera for Mi account setups including rooms, labels, room boundaries, cleaning path, charger position, vacuum position, walls, no-go areas, no-mop areas, zones, calibration points, and map dimensions when the vacuum provides them.
- Map polling speeds up while the vacuum is cleaning or returning, then slows down while it is idle or docked.
- Multi-map display for devices that expose stored maps.
- Bundled Lovelace card with vacuum controls, maps, display toggles, and room selection, no YAML necessary.
- Tap-to-clean from the card by selecting rooms on the map.
- Room-by-room cleaning is exposed as a service call using segment IDs.
CARD RENDERS
| Paused | Cleaning | |
|---|---|---|
![]() |
![]() |
| Room select | Charging | |
|---|---|---|
![]() |
![]() |
SUPPORTED MODELS (65)
| Brand | Models |
|---|---|
| ijai | v1, v2, v3, v13, v14, v15, v17, v18, v19 |
| Dreame | p2008, p2009, p2027/28/28a/29/36, p2114a/o, p2140/a/p, p2148o, p2149o, p2150a/b/o, p2157, p2187, p2259, r2104, r2205, r2209, r2210, r2211o, r2215, r2216o, r2228/o/z, r2232a, r2233, r2235, r2246, r2247, r2254 |
| Viomi | v12, v13, v15, v17, v18, v19, v22, v23, v24, v35, v38, v40, v45 |
| Xiaomi | b106bk/eu, c101/eu, c103, c104, d106gl |
If your model is missing and it looks close to one of these, open an issue with the exact model name and I can take a look.



