The Dreame integration names the vacuum entity ' <device name>' (leading space), so HA composes the entity friendly_name as the device name twice (e.g. 'Z10 Pro Z10 Pro'). Derive vacuum_name from the device's name_by_user/name instead, falling back to friendly_name then entity_id. Bump blueprint_version to 1.2.1 and manifest to 2.14.2.
Dreame Vacuum Notifications
Sends customizable notifications for Dreame vacuum events. Requires the Dreame Vacuum integration and Home Assistant 2024.7+ (notify.send_message action).
Features
- Notifications for cleaning started and completed
- Consumable end-of-life alerts (brush, filter, mop pad, sensor, etc.)
- Device warning and error notifications
- Informational alerts (e.g., action blocked by Do Not Disturb)
- Friendly, readable labels for cleaning mode and status (raw enum names are translated)
- Optional localization: override any label, and map numeric codes to your own text
- Individual toggle for each event type
- Per-code/per-type filter lists for silencing routine warnings, errors, or info messages
- Customizable message templates
- Multiple notification targets
How It Works
The blueprint listens to events fired by the Dreame Vacuum integration:
| Event | Description |
|---|---|
dreame_vacuum_task_status |
Cleaning job started or completed |
dreame_vacuum_consumable |
Consumable reached end-of-life |
dreame_vacuum_warning |
Dismissible device warning |
dreame_vacuum_error |
Device fault |
dreame_vacuum_information |
Action blocked by user settings |
Matching the configured vacuum
The integration fires every event with an entity_id that it derives from the vacuum's device name (via generate_entity_id()); events do not carry a device_id. Matching therefore accepts:
- The event
entity_idexactly equal to the configured entity. - The configured entity followed by a purely numeric suffix (e.g.
vacuum.dreame_x10_2) —generate_entity_id()adds such a suffix when the base id is already taken.
Non-numeric suffixes (e.g. _pro) are rejected, so vacuum.dreame_x10 will not match vacuum.dreame_x10_pro.
Note: because the fired
entity_idis derived from the device name, if you rename the vacuum's entity_id in Home Assistant so it no longer matches the auto-generated id, matching can fail and notifications stop. Keep the integration-generated entity_id (or rename the device instead of the entity) for reliable matching.
Configuration
| Input | Description |
|---|---|
| Vacuum Entity | The Dreame vacuum entity to monitor |
| Notification Targets | One or more notify entities |
| Event Toggles | Enable/disable each event type independently |
| Filtering | Lists of warning/error codes and information types to silence |
| Message Templates | Customizable message for each event type |
| Localization | Optional label and code translation tables (see Localization) |
Filtering
- Warning Codes / Error Codes to Ignore — compared against the event's numeric
code. Enter the code as text (e.g.68). - Information Types to Ignore — information events carry a type id, not a numeric code; enter the id (
dust_collection,cleaning_paused). - The two temporary-map warnings (new-map / replace-temporary-map) carry no code. The spurious "map cleared" warning is suppressed automatically; the genuine "new map generated" warning can be filtered by its text if needed.
Message Template Variables
Cleaning Started
| Variable | Description |
|---|---|
{vacuum_name} |
Friendly name of the vacuum |
{cleaning_mode} |
Cleaning mode, friendly-formatted (e.g., Sweeping, Mopping, Sweeping & Mopping) |
{status} |
Current status, friendly-formatted (e.g., Cleaning, Room cleaning) |
Cleaning Completed
| Variable | Description |
|---|---|
{vacuum_name} |
Friendly name of the vacuum |
{cleaning_mode} |
Cleaning mode used, friendly-formatted |
{status} |
Final status, friendly-formatted |
{cleaned_area} |
Area cleaned (m²) |
{cleaning_time} |
Cleaning duration (minutes) |
Consumable Depleted
| Variable | Description |
|---|---|
{vacuum_name} |
Friendly name of the vacuum |
{consumable} |
Consumable name (e.g., Main Brush, Side Brush, Filter, Mop Pad) |
Warning
| Variable | Description |
|---|---|
{vacuum_name} |
Friendly name of the vacuum |
{warning} |
Warning description (already human-readable English from the integration) |
{code} |
Numeric warning code (empty for the temporary-map warning) |
{code_name} |
Optional label for the code — empty unless you fill the code table (see Localization) |
Error
| Variable | Description |
|---|---|
{vacuum_name} |
Friendly name of the vacuum |
{error} |
Error description (already human-readable English from the integration) |
{code} |
Numeric error code |
{code_name} |
Optional label for the code — empty unless you fill the code table (see Localization) |
Information
| Variable | Description |
|---|---|
{vacuum_name} |
Friendly name of the vacuum |
{information} |
Information message (e.g., Dust Collection, Cleaning Paused) |
The default warning/error templates show
(code: {code}). When an event has no code, the blueprint automatically strips the empty(code: )parenthetical.
Friendly Labels
{cleaning_mode} and {status} arrive from the integration as raw UPPER_SNAKE_CASE enum names; the blueprint translates them to readable text. Any value not in the tables below falls back to a generic humanizer (underscores → spaces, capitalized). All labels can be overridden — see Localization.
Cleaning Mode ({cleaning_mode})
| Raw enum | Friendly label |
|---|---|
UNKNOWN |
Unknown |
SWEEPING |
Sweeping |
MOPPING |
Mopping |
SWEEPING_AND_MOPPING |
Sweeping & Mopping |
Status ({status})
| Raw enum | Friendly label |
|---|---|
IDLE |
Idle |
PAUSED |
Paused |
CLEANING |
Cleaning |
BACK_HOME |
Returning to dock |
PART_CLEANING |
Spot cleaning |
FOLLOW_WALL |
Following wall |
CHARGING |
Charging |
OTA |
Updating firmware |
WIFI_SET |
Wi-Fi setup |
POWER_OFF |
Powered off |
ERROR |
Error |
REMOTE_CONTROL |
Remote control |
SLEEPING |
Sleeping |
STANDBY |
Standby |
SEGMENT_CLEANING |
Room cleaning |
ZONE_CLEANING |
Zone cleaning |
SPOT_CLEANING |
Spot cleaning |
FAST_MAPPING |
Mapping |
MONITOR_CRUISE |
Patrolling |
MONITOR_SPOT |
Spot monitoring |
SUMMON_CLEAN |
Summon clean |
(Also mapped: FCT, FACTORY, SELF_TEST, FACTORY_FUNCION_TEST — diagnostic states.)
Consumable ({consumable}) and Information ({information})
| Raw id | Friendly label |
|---|---|
main_brush |
Main Brush |
side_brush |
Side Brush |
filter |
Filter |
sensor |
Sensor |
mop_pad |
Mop Pad |
silver_ion |
Silver Ion |
detergent |
Detergent |
dust_collection |
Dust Collection |
cleaning_paused |
Cleaning Paused |
Localization
Two optional inputs (under Localization) let you relabel or translate any value without editing the blueprint. Both are entered as YAML key/value pairs (the object selector).
Label Overrides — keys are the raw values the integration emits (cleaning-mode/status are UPPER_SNAKE enum names; consumable/information are lower-case ids). Applied to {cleaning_mode}, {status}, {consumable}, and {information}:
SWEEPING_AND_MOPPING: Подметание и мытьё
CLEANING: Уборка
BACK_HOME: Возврат на базу
dust_collection: Очистка контейнера
Warning/Error Code Labels — keys are numeric codes (unquoted); the value is exposed as {code_name}. Leave empty to omit {code_name}:
68: Снять швабру
47: Робот застрял
Lookup order for every value is: your override → built-in friendly label → generic humanizer.
A ready-to-paste Russian starter table (all statuses, modes, consumables, information types, and warning/error codes) is provided in localization.ru.yaml — copy each section into the matching Localization input. To show fully Russian warning/error text, reference {code_name} in your warning/error templates instead of the English {warning}/{error}.
No built-in numeric-code → name table is shipped, because code meanings can differ between integration versions. The
{warning}/{error}text already comes from your installed integration (so it is always correct); use{code_name}only if you want a short, localized tag for specific codes.
Warning vs. Error Codes
The integration classifies a fault as a dismissible warning only for the codes below; every other fault with a positive code (except battery-low) is reported as an error and carries a numeric {code} you can paste into Error Codes to Ignore.
| Code | Name |
|---|---|
| 47 | Blocked |
| 68 | Remove mop |
| 70 | Mop removed |
| 71 | Mop pad stopped rotating |
| 72 | Mop pad stopped rotating |
| 107 | Water tank dry |
| 114 | Clean mop pad |
Notes
- The default messages contain emojis. Most modern notify integrations (Mobile App, Telegram, Discord) render them correctly; legacy SMS-based integrations may not.
notify.send_messagerequires Home Assistant 2024.7 or newer. It accepts only amessage(no title/tag); put any emphasis directly in the message text.
Debug Mode
Enable Debug Notifications in the Debug section to send a persistent notification for every trigger. Each debug notification includes the blueprint version, dispatched event kind, and the enable decision — useful for confirming filters are doing what you expect. The notification is keyed per vacuum so debug entries from multiple vacuums do not overwrite each other.
Author
Alexei Dolgolyov (dolgolyov.alexei@gmail.com)