Dreame Scheduler — clean when you're out, room-by-room, and actually know what happened

Dreame Scheduler — clean when you’re out, room-by-room, and actually know what happened

Issues I was having is the vacuum ran while everyone was home, it skipped rooms with no explanation, and when it got stuck the whole run was left half done.

It doesn’t talk to the robot directly - it drives the entities the excellent Tasshack dreame_vacuum integration already exposes. So it works with any Dreame model and needs no rooting.

What it does:

  • Cleans when you’re out - gates on your presence entities with a grace delay, and if someone comes home mid clean it docks and resumes once the house is empty again.
  • Per-room weekly schedule - each room on its own weekdays, with its own mode / suction / mop wetness.
  • Weekly whole-house guarantee - finishes whatever’s still pending on your catch-up day.
  • Weekly report - What got done and what didn’t, with the robot’s own coverage renders and obstacle flags.
    Self-healing - if it gets stuck on the same spot, it walls off the area, backs out and continues
  • Optional add-on GUI — set it all up without YAML, plus a beta Floor Plan Studio (no-go/virtual walls, 3D view, export). this is a work in progress!

Install: HACS > custom repositories > add the repo > Download > add the integration.
(It’s submitted to the default HACS store too - search will work once that PR merges.)

Screenshots

(floor plan details are blurred - yours won’t be)

Overview - robot status, next run, this week’s progress, suggestions and coverage.

Report - per room status this week, why rooms were missed, and the robot’s own coverage renders.

Floor Plan Studio (beta) - no-go / no-mop zones, virtual walls, auto-fit, 3D view, export.

Install

Requirements: Home Assistant 2025.12+ and the dreame_vacuum integration already set up with your vacuum.

1. Integration (via HACS):

  • HACS > ⋮ > Custom repositories > add https://github.com/botts7/dreame-scheduler, category Integration > Download.

  • Restart Home Assistant, then Settings > Devices & Services > Add Integration > Dreame Scheduler and pick your vacuum.

It’s already submitted to the default HACS store (PR in review). Once that merges you’ll be able to skip the custom-repository step and just search Dreame Scheduler in HACS — I’ll update this post when it lands.

2. Add-on (optional GUI): Settings > Add-ons > Add-on Store > Repositories > add https://github.com/botts7/dreame-scheduler-addon, then install Dreame Scheduler.

Links

A note

It’s early in development (v0.1.x) - core scheduling/presence/reporting are working and verified live, and I’m hardening the run to completion edge cases.
If you give it a go and have issues let me know or create a github issue.

2 Likes

Trying it out now. Is it possible to have another schedule for mopping? My own made system that I have been using, I had it do a queue that had two sliders, one for sweeping and one for mopping. The mopping one was based on the sweeping setting. So if I had 1 on sweeping and 2 on mopping it would sweep once a day but do a mop after sweep each second day.

Is it possible to do something like this with your system?

Dreame Scheduler v0.2.0 is out :tada:


@DatRandomBoi — yes, and you inspired the feature

…sweep once a day but do a mop after sweep each second day. Is it possible to do something like this?

It is now. v0.2.0 adds a per-room “Mop every N sweeps” setting:

  • Set a room to a mopping mode and N = 2 → it sweeps every scheduled day and does a mop-after-sweep every 2nd day — exactly your two-slider setup.
  • N = 1 = mop every clean (off), N = 3 = every third day, etc.
  • It counts once per calendar day, so a resume or a manual “clean now” on the same day won’t double-mop or throw the cadence off.

Set it under Settings → Devices & Services → Dreame Scheduler → Configure → (pick a room) → “Mop every N sweeps.” You’re credited in the release notes — thanks for the idea!


Big feature + reliability release

What else is new in 0.2.0

:adhesive_bandage: Self-healing recovery — when the robot gets into trouble mid-clean it now tries to fix itself instead of stranding:

  • reverses out of a wedge and carries on, re-routing around the spot;
  • detects a genuine beaching (wheels off the floor) and asks for a hand instead of grinding through pointless retries;
  • treats an obstruction as a moment, not a wall — it just resumes and re-plans;
  • puts the robot’s own photo of the obstacle in the alert;
  • silent-stuck / stranded watchdogs catch a robot that quietly stopped or never made it back to the dock.

:brain: Recurring-trap learner — learns where it repeatedly gets stuck across separate runs, tells fixed hazards apart from path blocks, and suggests a permanent no-go zone for one-tap approval (never walls off floor on its own).

:spiral_calendar: Smarter scheduling

  • Rooms scheduled on several weekdays now clean on each of them (a fix — they were silently collapsing to once a week).
  • Mop every N sweeps (above).
  • Door-retry (opt-in): a room skipped for a shut door is retried the same day once its door’s been open long enough to be sure the room’s free — away-only, or while-home if you trust the timer.

:clipboard: Clean-by-hand list — rooms the robot genuinely can’t reach become a Home Assistant to-do list, and clear themselves when next cleaned.

Plus a batch of reliability fixes and add-on GUI updates — full details in the changelog.


Get it / upgrade

Thanks

Shaped by community suggestions — @DatRandomBoi for the mop cadence, and dreacon34 (Reddit) for the sensor-driven room-availability + retry-instead-of-skip ideas that led to door-retry and the adaptive-scheduling roadmap.

Feedback and bug reports very welcome!

v0.2.1 is out :broom: - mostly about staying out of the robot’s way and being clearer when it genuinely needs you.

  • Honors your native per-room settings now (default on). A room you’ve set to sweep only in the Dreame app stays sweep-only - no more force-mopping the whole house. (Fixes a real one I hit: wet pads dragged onto a sweep-only carpet, stalling the wheel motor.) Can be turned off if you liked the old behaviour.
  • Clearer stuck alerts - wheel/hardware faults say “check the wheels” instead of uselessly reversing; “beached” only when the drop sensor really fired; and a “:white_check_mark: all clear” if it frees itself and docks.
  • New “can’t get home” watchdog - catches a robot that’s moving but getting nowhere (circling, repositioning, blocked while returning) by tracking real progress, so a slow-but-genuine clean isn’t mistaken for a stall. Works for manual runs too.

Update through HACS as usual. Cheers