
Dreame Vacuum + Home Assistant: Smart Cleaning When Nobody’s Home
Robot vacuums are one of those devices that quietly save you hours every month. But on their own, they are still fairly simple. They follow a schedule, clean predefined rooms, and return to the dock. The real magic starts when you connect a Dreame vacuum to Home Assistant and let it react to your home.
In this post, I’ll explain how the Dreame integration works in Home Assistant. I will describe what components you get. I will also show how to build a practical automation that only runs when nobody is home. The goal is simple: your floors get cleaned automatically, without you ever noticing it happening.
Why integrate Dreame with Home Assistant?
Dreame vacuums are already smart, but they are still limited by their own app. Once integrated into Home Assistant, they become part of your wider system.
That means you can:
- Start cleaning based on presence
- Avoid running when someone is sleeping or working
- Combine cleaning with energy usage or electricity pricing
- Trigger room-specific cleaning based on activity
In short, your vacuum stops being a gadget and becomes part of your home logic.
What the Dreame integration provides
Once you add your Dreame vacuum to Home Assistant, you get several entities. These are the building blocks for automations.
1. Vacuum entity
This is the main control entity, typically something like:
vacuum.dreame_vacuum
It allows you to:
- Start and stop cleaning
- Send the vacuum back to dock
- Pause cleaning
- Set cleaning modes
This is what your automations will interact with most of the time.
2. Sensor entities
Dreame exposes a range of useful sensors, for example:
- Battery level (percentage)
- Cleaning status (idle, cleaning, returning)
- Error state
- Cleaning area (m²)
- Cleaning time (minutes)
These sensors help you decide when it is appropriate to run a cleaning cycle.
3. Select and switch entities
Depending on your model, you may also get:
- Cleaning mode (quiet, standard, turbo)
- Water flow level (for mopping models)
- Carpet boost
- Do-not-disturb mode
These can be set dynamically in automations, which is very useful if you want quiet cleaning during certain hours.
4. Map and room control
If your Dreame vacuum supports mapping, Home Assistant can expose room-level cleaning.
This allows you to:
- Clean specific rooms only
- Run targeted cleaning based on events
- Avoid unnecessary full-home cleaning
For example, you could clean only the kitchen after dinner.
Presence detection in Home Assistant
Before we build the automation, we need a reliable way to detect if anyone is home.
The most common options are:
- Mobile app presence (recommended)
- WiFi-based tracking
- Bluetooth tracking
The Home Assistant companion app is usually the best choice. It creates entities like:
person.john
person.jane
Each person can have a state:
homenot_home
We can combine multiple people into a simple condition: nobody is home.
The idea: Clean only when the house is empty
This is one of the most practical automations you can build.
Why it works well:
- No noise while you are home
- No obstacles like chairs being used
- No interruptions
- No risk of the vacuum bothering pets or meetings
We will also add a few extra conditions:
- Only run during daytime
- Only run if battery is above a safe level
- Only run once per day
Example automation logic
Here’s the logic in plain language:
- If everyone leaves the house
- And the time is between 09:00 and 16:00
- And the vacuum battery is above 40%
- And it hasn’t already cleaned today
- Then start a full cleaning cycle
YAML automation example
Below is a complete Home Assistant automation you can use as a starting point.
You will need to adjust entity names to match your setup.
alias: Start Dreame cleaning when nobody is home
description: Runs the vacuum when the house is empty
mode: single
trigger:
- platform: state
entity_id:
- person.john
- person.jane
to: "not_home"
condition:
- condition: state
entity_id: person.john
state: "not_home"
- condition: state
entity_id: person.jane
state: "not_home"
- condition: time
after: "09:00:00"
before: "16:00:00"
- condition: numeric_state
entity_id: sensor.dreame_battery
above: 40
- condition: state
entity_id: input_boolean.vacuum_ran_today
state: "off"
action:
- service: vacuum.start
target:
entity_id: vacuum.dreame_vacuum
- service: input_boolean.turn_on
target:
entity_id: input_boolean.vacuum_ran_today
Resetting the daily run
To make sure the vacuum only runs once per day, we used an input_boolean.
You also need a small automation to reset it at night:
alias: Reset vacuum daily flag
trigger:
- platform: time
at: "00:00:00"action:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.vacuum_ran_today
Making it smarter
Once you have the basic automation running, you can improve it further.
1. Use electricity pricing
If you have access to dynamic electricity prices, you can run cleaning when prices are lowest.
This is especially relevant in Europe where energy costs fluctuate throughout the day.
You can add a condition like:
- condition: numeric_state
entity_id: sensor.electricity_price
below: 0.20
This ensures your vacuum runs when electricity is cheaper.
2. Room-based cleaning
Instead of cleaning the whole house every time, you can target rooms.
For example:
- Clean hallway and kitchen on weekdays
- Full clean on weekends
This reduces wear and saves energy.
3. Combine with calendar
If you work from home, presence alone is not enough.
You can use a calendar integration to avoid cleaning during meetings.
4. Battery-aware cleaning
Instead of a fixed threshold like 40%, you can make the logic adaptive.
Example:
- If battery > 80%, run full clean
- If battery 40–80%, clean only key rooms
5. Quiet mode during mornings
If your vacuum supports it, you can set cleaning mode dynamically:
- service: select.select_option
target:
entity_id: select.dreame_cleaning_mode
data:
option: "quiet"
A note on reliability
Presence-based automations depend on accurate tracking.
A few tips:
- Use the Home Assistant mobile app for best reliability
- Avoid relying only on WiFi tracking
- Consider adding a delay (e.g. 5 minutes) before triggering
Example:
for: "00:05:00"
This prevents the vacuum from starting if someone briefly leaves and comes back.
Real-world impact
This kind of automation sounds simple, but it makes a noticeable difference.
You stop thinking about cleaning schedules entirely. The vacuum just runs when it makes sense.
Over time, you also:
- Reduce unnecessary cleaning cycles
- Save a bit of energy (kWh)
- Keep noise away from your daily life
It is one of those automations that fades into the background, which is exactly what you want.
Final thoughts
The Dreame integration in Home Assistant is a perfect example of how a standalone smart device becomes much more useful when connected to a larger system.
The key idea is not just automation, but context. Your home knows when you are away, when energy is cheap, and when it is appropriate to clean.
Start simple. Build the “nobody home” automation first. Then refine it based on your habits.
Once you do, your vacuum becomes something you never have to think about again.
Some of the links in this article are "affiliate links", a link with a special tracking code. This means if you click on an affiliate link and purchase the item, we will receive an affiliate commission. The price of the item is the same whether it is an affiliate link or not. Regardless, we only recommend products or services we believe will add value to our readers. By using the affiliate links, you are helping support our Website, and we genuinely appreciate your support.