| Developer: | Glenn's Plugins Like this plugin? Show your appreciation! |
| Category: | Miscellaneous |
| Github: | Github Repo |
| Assistance: | Get help! Check the online documentation |
| Plugin ID: | com.GlennNZ.indigoplugin.dreame_vacuum |
| Latest release: | v2025.1.35 released on Jan. 31, 2026 |
| Requires: | Indigo v2025.1.0 or higher |
| (Check the Releases tab below for older releases that may have different requirements) | |
| Download latest release |
![]()
An Indigo Domotics plugin to control and monitor Dreame robotic vacuums (and compatible Xiaomi / Dreame / Mova family models) from your Indigo home automation server.
This plugin takes a lot of inspiration and protocol knowledge from the Home Assistant custom component:
https://github.com/Tasshack/dreame-vacuum/tree/main/custom_components/dreame_vacuum
Most of the hard work in understanding Dreame devices was done there. If you find this Indigo plugin useful, please consider supporting the original project – you’ll find a donation link in that repository and are warmly encouraged to donate there if you wish.
This plugin currently works for my own purposes and devices. I’ve realised I am uncertain how much time I will have to:
I’ll do what I reasonably can, but there is no guarantee that all models, regions, or login types will be supported or kept working over time.
dreame.vacuum.r2527b, r2527j, r2527t, r2527udreame.vacuum.r9533a, r9533h, r9533tdreame.vacuum.r9535a, r9535hdreame.vacuum.r95475, r9547a, r9547c, r9547h, r9547kdreame.vacuum.r2527a, r2527hdreame.vacuum.r95285, r9528a, r9528hdreame.vacuum.r2527g, r2527qdreame.vacuum.r2423adreame.vacuum.r2260dreame.vacuum.r2205dreame.vacuum.r2423dreame.vacuum.r2243dreame.vacuum.r2240dreame.vacuum.r2250dreame.vacuum.r9523c, r9523k, r9524c, r9524kdreame.vacuum.r2563b, r2563v, r2564b, r2564z, r2565a, r2565v, r2566a, r2566h, r2562h, r9507bdreame.vacuum.p2009, p2259, r2312, r2312a, r2422, r2422a, r2422b, r2322, p2187dreame.vacuum.r9523a, r9523h, r9524a, r9524hdreame.vacuum.r9524b, r9523b, r2564s, r2562s, r2562u, r25799, r9493cdreame.vacuum.r22xx, p20xx modelsdreame.vacuum.r2253*, r2338*, r2394*dreame.vacuum.r23xx, r24xx, r25xx, r94xx, r95xx, r53xxdreame.vacuum.r2310a, r2310dreame.vacuum.r2513*dreame.vacuum.r2462dreame.vacuum.r22xx–r25xx, r94xx–r95xx rangedreame.vacuum.p2027, r2104, r2251o, r2232a, r2317, r2345a, r2345hdreame.vacuum.r22xx–r25xx, r93xx–r95xxdreame.vacuum.r2388dreame.vacuum.r2438*, r2458*, r2459*, mova.vacuum.r2569c, r2567adreame.vacuum.r2427*, mova.vacuum.r9504adreame.vacuum.r2350, r2212, r2385, r2435, r2455dreame.vacuum.p2157dreame.vacuum.r2380mova.vacuum.r24xx–r25xx, dreame.vacuum.r9406, r2491dreame.vacuum.r2382*, r2383*dreame.vacuum.r2432, r9420, mova.vacuum.r2525*, r2582*mova.vacuum.r2430*, dreame.vacuum.p2156o, mova.vacuum.r9540ndreame.vacuum.r2386dreame.vacuum.r2254, p2041, p2140, p2140adreame.vacuum.r2210dreame.vacuum.p2008xiaomi.vacuum.d110chdreame.vacuum.p2150o, p2140o, p2140p, p2140q, p2041o, p2150a, p2150bdreame.vacuum.p2148oxiaomi.vacuum.c102cn, d103cndreame.vacuum.r2211odreame.vacuum.p2114o, p2149odreame.vacuum.r2209, p2114a, xiaomi.vacuum.c102gldreame.vacuum.r2438rdreame.vacuum.r2427c, r2427rdreame.vacuum.p2036dreame.vacuum.r2380rdreame.vacuum.r2382rDevices explicitly unsupported by the upstream integration include:
dreame.vacuum.ma1808, md1808, mb1808, mc1808, ijai.vacuum.v18xiaomi.vacuum.*, ijai.vacuum.*, deerma.vacuum.*xiaomi.vacuum.c101eu, d109gl, d102gl, deerma.vacuum.a2404人 2, 人 3, etc.If your vacuum is not in the “supported” section or is explicitly listed as “unsupported”, this plugin may not work for it.
Download
Double Click the Dreame Indigo.indigoPlugin
In Indigo, go to:
The Dreame Vacuum Indigo device (id="dreame_vacuum") is configured via its Config UI.
You can connect to your Dreame vacuum using either cloud or (where still possible) local mode:
loginMode)Cloud (Mi/Dreame/Mova Account) – recommended and required for most new devicesLocal (IP + token) – often disabled by newer firmware unless using custom firmwareWhen local is selected, a blue note reminds you:
It seems local is essentially disabled on all new devices, without custom firmware.
For cloud mode, choose which account type you are using:
accountType, visible only when loginMode = cloud)Dreame account – direct Dreame cloud accountXiaomi / Mi Home account – uses your Mi account; supports 2FA/captcha via the Dreame libraryMovaHome account – uses Mova-specific Dreame cloud endpointsA short description explains:
username)password, secure)country, default eu)
Example values: eu, us, cn, sgVisible only when loginMode = local:
host)token)dreame_device_id)
If left blank, the plugin will use the first Dreame vacuum found on the account.
If you have multiple Dreame vacuums, you can target a specific one by entering its device ID.When using Xiaomi / Mi Home (accountType = mihome), a simple 2FA helper is provided.
dreameTwoFAEnabled, checkbox)
Enable this to use Xiaomi / Mi Home 2FA.When 2FA is enabled:
dreameLoginDevice, button) dreameVerificationCode, textfield) dreameSubmitCode, button) dreameLoginInfo, read-only textfield) enableMappingUpdates, checkbox)
When enabled and the vacuum is active, the plugin will periodically (about every 15 seconds) request map data while cleaning and save it to your Pictures directory as PNG files.
See Map Snapshots and Control Pages below.The device supports mapping On/Off to actions, making it easy to integrate with external control (e.g. Alexa, Home App via HomeKitLink).
relayOnAction, default start_clean)Start CleaningRun Shortcut (select below)relayOnShortcut)
Visible only when relayOnAction = shortcut.
Populated dynamically via the device’s shortcut menu.relayOffAction, default dock)Return to DockPause CleaningStop CleaningRun Shortcut (select below)relayOffShortcut)
Visible only when relayOffAction = shortcut.A blue description label clarifies:
These options control what happens when On, Off and Toggle is called by Indigo or an external device such as Alexa or Home App via (HomekitLink plugin).
The Dreame Vacuum device exposes a rich set of Indigo states. These can be used for Triggers, Conditionals, and Control Page display.
All state IDs below are defined on the dreame_vacuum device.
String)
High-level status summary (e.g., “Cleaning”, “Docked”, “Paused”, etc.).Number)
Battery percentage (%).String)
Current fan speed / suction setting.Number)
Area cleaned in square metres for the current/last task.Number)
Cleaning duration in minutes for the current/last task.String)
Summary / list of available shortcuts (favourites) discovered for the device.Boolean)
Whether the vacuum is currently charging.String)
Text description of any current error or alert, when available.String)
Timestamp of the last successful state update.String)
Overall robot state (e.g., idle, cleaning, returning).String)
More detailed robot state description.String)
Base / docking station state.String)
Status of the current cleaning task.String)
Current cleaning mode: full, room, zone, etc. (as supported by the device).Integer)
Current water level setting.Integer)
Mop wetness level.Integer)
Cleaning progress as a percentage (%).String)
Status of the base’s self-wash system.Integer)
Drying progress percentage for the base.String)
Auto-empty (dustbin) status.String)
Drainage status of the base (e.g., draining, idle).String)
A combined / synthesized status string summarising key states.String)
Water temperature as reported by the base (string form).Integer)
Main brush life remaining (%).Integer)
Side brush life remaining (%).Integer)
Filter life remaining (%).Integer)
Dirty water tank capacity remaining (%).Integer)
Scale inhibitor life remaining (%).Boolean)
Whether AI obstacle detection is supported/enabled.Boolean)
Whether AI pet detection is supported/enabled.String)
Summary list of available maps on the device.Integer)
Identifier for the current map.Boolean)
Whether multi-floor mapping is enabled.Boolean)
Whether mapping updates (map polling) are enabled in the device configuration.String)
Name of the current / selected map.String)
Summary of rooms known to the map.String)
Name of the room the vacuum is currently in (if available).Integer)
Current segment/room ID.String)
Sequence/order of rooms/segments being cleaned.String)
Lower-level/raw vacuum state (e.g., sweeping, mopping, etc.) as reported by the device.The UI display state for the device in Indigo is set to status.
The plugin defines a set of Indigo Actions that can be used in Action Groups, Schedules, and Triggers. All actions use deviceFilter="self" so they appear against the Dreame Vacuum device.
start_clean)
Starts a standard cleaning run.start_pause)
Toggles between starting and pausing cleaning.stop_clean)
Stops the current cleaning task.pause_clean)
Pauses the current cleaning operation.return_to_base_action)
Sends the vacuum back to its dock/base.locate_vacuum)
Triggers the “locate” function (typically causes the robot to play a sound to help you find it).Set Fan Speed (set_fan_speed)
Presents a simple menu:
SilentStandardStrongTurboThe plugin maps this choice to the appropriate Dreame fan power/suction setting.
Start Shortcut (Favourite) (start_shortcut)
Allows selecting and running one of the device’s saved shortcuts/favourites.
shortcutMenu – a dynamic menu (List class="self" method="shortcut_menu") filled by the plugin based on the vacuum’s configured shortcuts.Clean Selected Rooms (Segments) (clean_segments)
Cleans one or more segments/rooms by numeric segment ID.
Config fields:
Segment IDs (comma-separated) (segments)
Example: 2,3,5Repeats (repeats, default 1)
Number of times to clean these segments.Suction level (enum or numeric) (suction_level)
Optional – leave blank to use current setting.Water volume (enum or numeric) (water_volume)
Optional – leave blank to use current setting.Clean Room (clean_room)
Cleans a single room chosen by name/segment from a dynamic menu.
Config fields:
Room to clean (roomMenu)
Dynamic menu populated by room_menu, showing known rooms.Repeats (repeats, default 1)
How many times to clean that room.Custom Clean Room (custom_clean_room)
More advanced, per-room cleaning with parameters:
Config fields:
Room (roomMenu)
Dynamic list from room_menu.Suction Level (suction_level, menu; default standard)quietstandardstrongturboWater Volume (water_volume, menu; default 2)1 (Low)2 (Medium)3 (High)Repeats (repeats, menu; default 1)1, 2, or 3Cleaning Mode (optional) (cleaning_mode, menu)(Device default)Vacuum only (sweep)Mop only (mop)Vacuum and mop (sweep_mop)Wetness Level (optional) (wetness_level, menu)(Device default)1 (Low)2 (Medium)3 (High)Clean Zone(s) (clean_zones)
Cleans one or more rectangular zones defined in the robot’s coordinate system.
Config fields:
Zones (rectangles) (zones)x1,y1,x2,y2; x1,y1,x2,y2; ...Repeats (repeats, default 1)save_map_snapshot)
Captures the current cleaning map (when available) and saves a PNG into your Pictures directory.
Intended for easy use on Indigo Control Pages (see below).save_wifi_map_snapshot)
Saves a Wi-Fi map snapshot (when supported by the device) to the Pictures directory, again as PNG.export_map_resources, hidden action)
For internal / advanced usage. Exports base PNG/font resources required for rendering maps. Usually run once, if needed.These actions control the Dreame base/station (for models with self-wash/dry/drain features):
start_washing)
Starts base self-wash.pause_washing)
Pauses base self-wash.start_drying)
Starts drying operation at the base.stop_drying)
Stops base drying.Start Draining (Base) (start_draining)
Initiates a drainage cycle for the base.
Config fields:
Also empty clean water tank (if supported) (cleanWaterTank, checkbox)
When enabled, requests drainage of both dirty and clean water tanks (for models that support this).The map handling and visual style is based on the upstream integration. These examples from that project give a good idea of what the generated maps and live cleaning views look like:


Your actual rendered PNGs may differ in layout or overlay detail, but the goal is similar: a clean, readable map with robot position and cleaned regions, suitable for embedding into Indigo Control Pages.
One key feature of this plugin is automatic map snapshot generation for use on Indigo Control Pages.
There are two related mechanisms:
Live Map Polling (during cleaning)
enableMappingUpdates = true), the plugin:save_map_snapshot) can be called manually or via an Action Group to:save_wifi_map_snapshot) works similarly for Wi-Fi maps when supported.The plugin also has an internal Export Map Resources action that can export supporting PNGs and fonts if needed for map rendering; normally you should not need to run this repeatedly.
Once map PNGs are being written into your Pictures directory:
status, cleaning_progress, battery, and current_room for a full overview.Because the plugin maintains up-to-date map images while the vacuum is running (if enabled), your Control Page can provide a live-ish view of the cleaning progress, very similar to a native app map, without manual file handling.
| v2025.1.35 | Requires Indigo v2025.1.0+ | Released Jan. 31, 2026 | Update Libraries. More model support. Manual library install fix |
| Released on: | Jan. 31, 2026 |
| Requires: | Indigo v2025.1.0+ |
| Download this release | |
![]()
Changes:
Refactor on / off docked washing drying type states
Add a truck ton of states
Update Dreame library to beta21 supporting new vacuums
Update code for beta21 Dreame Library breaking changes... May still be more.,..
Let indigo create Packages directory hopefully helping quarantine
Manually install library to see where env variables are causing issues. Fixes library compile error introduced in OSX 10.14, hopefully soon to be fixed in new Indigo version. (Once new indigo version will revert changes and once again use requirements.txt)
Model support by Library: (Extensive)
https://github.com/Tasshack/dreame-vacuum/blob/dev/docs/supported_devices.md
Initial public release of Dreame-Indigo, an Indigo Domotics plugin for controlling and monitoring modern Dreame / Xiaomi / Mijia / MOVA / TROUVER robot vacuums that are supported by the upstream Dreame Home Assistant integration.
Dreame-Indigo connects your Dreame‑family robot vacuum to Indigo as a single Dreame Vacuum device, exposing:
The plugin also generates up-to-date map PNGs that can be used directly on Indigo Control Pages to show a near live view of the robot and cleaned areas.
This plugin is deliberately simple and modelled on the excellent upstream Home Assistant custom component:
https://github.com/Tasshack/dreame-vacuum/tree/main/custom_components/dreame_vacuum
If you find this Indigo plugin useful, please consider supporting the original project – there is a donation link in that repository.
Support is driven by the same Dreame/Mi library as the upstream project. In broad terms, this includes many:
The plugin does not support older or non‑Dreame hardware such as many ijai.vacuum.*, xiaomi.vacuum.*, or deerma.vacuum.* models that are explicitly marked unsupported in the upstream list (e.g. Vacuum‑Mop 2 / 2 Lite / 2 Pro / 2S / 2i, various 1C/2C/3C variants, some X20/X70, etc.).
Exact support and feature availability (self‑wash, drying, drainage, AI obstacle/pet detection, Wi‑Fi maps, etc.) depend on the specific model and its firmware.
Control
Status & telemetry
The Indigo device exposes a comprehensive set of states, including:
Map PNG generation
Dreame_Indigo.indigoPlugin in Indigo.This plugin currently works for my own purposes and devices. I am uncertain how much time I will have to:
I’ll fix what I can, but there is no guarantee that all supported‑list models or account types will continue to work, especially over time as vendors change APIs and firmware.
| Released on: | Nov. 23, 2025 |
| Requires: | Indigo v2025.1.0+ |
| Download this release | |
![]()
Initial public release of Dreame-Indigo, an Indigo Domotics plugin for controlling and monitoring modern Dreame / Xiaomi / Mijia / MOVA / TROUVER robot vacuums that are supported by the upstream Dreame Home Assistant integration.
Dreame-Indigo connects your Dreame‑family robot vacuum to Indigo as a single Dreame Vacuum device, exposing:
The plugin also generates up-to-date map PNGs that can be used directly on Indigo Control Pages to show a near live view of the robot and cleaned areas.
This plugin is deliberately simple and modelled on the excellent upstream Home Assistant custom component:
https://github.com/Tasshack/dreame-vacuum/tree/main/custom_components/dreame_vacuum
If you find this Indigo plugin useful, please consider supporting the original project – there is a donation link in that repository.
Support is driven by the same Dreame/Mi library as the upstream project. In broad terms, this includes many:
The plugin does not support older or non‑Dreame hardware such as many ijai.vacuum.*, xiaomi.vacuum.*, or deerma.vacuum.* models that are explicitly marked unsupported in the upstream list (e.g. Vacuum‑Mop 2 / 2 Lite / 2 Pro / 2S / 2i, various 1C/2C/3C variants, some X20/X70, etc.).
Exact support and feature availability (self‑wash, drying, drainage, AI obstacle/pet detection, Wi‑Fi maps, etc.) depend on the specific model and its firmware.
Control
Status & telemetry
The Indigo device exposes a comprehensive set of states, including:
Map PNG generation
Dreame_Indigo.indigoPlugin in Indigo.This plugin currently works for my own purposes and devices. I am uncertain how much time I will have to:
I’ll fix what I can, but there is no guarantee that all supported‑list models or account types will continue to work, especially over time as vendors change APIs and firmware.