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.

Advertisements

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:

  • home
  • not_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:

  1. If everyone leaves the house
  2. And the time is between 09:00 and 16:00
  3. And the vacuum battery is above 40%
  4. And it hasn’t already cleaned today
  5. 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.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.