Skip to content

Releases: botts7/dreame-scheduler

v0.3.4 — Maintenance panel + can't-get-home fix

Choose a tag to compare

@botts7 botts7 released this 15 Aug 03:08

Two changes: a maintenance panel for the add-on, and a fix for false "can't get home" alerts.

What's new

Maintenance panel (0.3.3). The report/robot data now carries each wear part's remaining-life % and its reset-button entity, powering a new Maintenance card in the add-on (filter, brushes, mop pad, sensors, detergent, silver-ion) with a one-tap Reset per part.

"Can't get home" watchdog now only watches the return trip (0.3.4). It was firing mid-clean on long runs — an auto-reclean pass re-covers already-counted floor, so cleaned-m² and task-% sit flat even though the robot is cleaning fine, and the watchdog mistook that for "stuck." It now arms only once the robot is heading for the dock (sticky through a mid-return reposition, cleared when it docks). Normal cleans no longer trip it; the real case (sent home, can't get back) still fires.

Full notes: https://github.com/botts7/dreame-scheduler/blob/main/CHANGELOG.md

v0.3.2 — Station fault no longer re-blocks cleaning

Choose a tag to compare

@botts7 botts7 released this 13 Aug 10:52

Stops a station fault from re-blocking cleaning the next day.

What's fixed

When a dock fault ends a run — most commonly "mop install failed" (the robot can't mount its mop pads) — the scheduler now:

  • Stops the robot's task, so its firmware can't auto-resume the doomed mop job. (Dreame firmware re-runs a paused task on its own; that task then fails again and "blocks" cleaning the next day.)
  • No longer queues an auto-retry — the un-done rooms simply stay pending for the weekly catch-up, which picks them up once the station's fixed, instead of hammering a broken mop every time the house empties.

Fixes a real case where a jammed mop-pad mount left the same three rooms failing across multiple days.

Full notes: https://github.com/botts7/dreame-scheduler/blob/main/CHANGELOG.md

v0.3.1 — Station / mop-install fault handling

Choose a tag to compare

@botts7 botts7 released this 12 Aug 10:37

Handles a dock/station fault (can't mount the mop pads) cleanly.

What's fixed

  • Station / mop-install alert. A dock setup fault — most commonly "mop install failed" (the robot can't mount its mop pads) — now gets its own clear alert: "🧩 can't set up at the dock — check the mop pads are seated and the tray's clear," with the real error code. The robot can't fix this itself, so the run is ended (un-done rooms defer to the weekly catch-up) instead of retrying.
  • No more wedged runs. A run that errored but whose robot has since returned to the dock (no active error, parked, not mid-recovery) is now finalised promptly instead of sitting open — previously an errored suspended run could block the next day's dispatch for up to 24 h. Healthy suspended runs (paused for presence, waiting to resume when empty) are unaffected.

Prompted by a live case: pebbles knocked off a plant were vacuumed up, jammed the mop-pad mount, and left the daily run stuck for hours.

Full notes: https://github.com/botts7/dreame-scheduler/blob/main/CHANGELOG.md

v0.3.0 — Maintenance/consumable alerts + real error codes

Choose a tag to compare

@botts7 botts7 released this 11 Aug 10:33

Maintenance / consumable alerts — plus real error codes in fault alerts.

Highlights

  • Wear-part low alerts. The scheduler now watches the robot's own remaining-life counters for the filter, main & side brushes, mop pad, dirt sensors, detergent and silver-ion module, and sends a notification the first time any drops to/below a threshold (default 10%). Each alert has two buttons: Reset counter — once you've replaced the part, this presses the robot's own reset so the count starts fresh — and Dismiss. It alerts once per part and won't nag again until the part is replaced. New options: Alert when a wear-part runs low (on by default) and the threshold %.
  • Real error codes in alerts. Fault alerts (needs-a-hand, recovering, overreach) now include the robot's actual reported error (e.g. right_wheel_speed), not just a friendly summary — so a recurring hardware fault is visible instead of hidden behind "a firmware hiccup". The overreach alert also names the room(s) the robot strayed into.
  • Wheel-speed faults treated as hardware. A wheel_speed error (drive wheel not turning at the commanded speed — slipping / jammed / something wound round the axle) now asks you to check the wheel instead of a futile reverse-out, matching how wheel_motor is already handled.

Current wear-part life is also surfaced on the robot-status attributes for dashboards.

Full notes: https://github.com/botts7/dreame-scheduler/blob/main/CHANGELOG.md

v0.2.3 — Tangle-aware recovery

Choose a tag to compare

@botts7 botts7 released this 10 Aug 09:13

Bug-fix release — smarter handling when the robot gets tangled in a cable or cord.

What's fixed

A cable / cord / cloth tangle (the robot reports it as a suffocate) used to run the full reverse-out recovery — up to three reverses. But you can't reverse out of a wrap: backing up just drags the tangle around, and because dragging registers as "movement" the reverse-moved-nothing safety check never caught it — so the robot kept reversing until it gave up, and often had to be rescued by hand.

Now a tangle gets one gentle reverse (in case it's a loose cord it can back off), a short grace period for the robot's own recovery, and then a clear "🪢 Vacuum is tangled — please free it by hand" alert instead of grinding. It sends the "✅ all clear" once you've freed it and it's back on the dock.

Also fixed a stale recovery notification that claimed it had "walled off the spot" (recovery no longer does that).

Full notes: https://github.com/botts7/dreame-scheduler/blob/main/CHANGELOG.md

v0.2.2 — Fix return-to-dock loop during mop-pad wash

Choose a tag to compare

@botts7 botts7 released this 08 Aug 06:01

Bug-fix release — stops a return-to-dock loop during mop-pad washing.

What's fixed

When a run had been paused because someone was home, the scheduler kept the robot on the dock by treating any cleaning state as it having escaped. But a mop-pad wash / dry cycle also reports cleaning while the robot is sitting on the dock — so the scheduler fired return_to_base on every wash-cycle blip and looped for the whole wash (state flipping cleaning ↔ docked every few seconds).

It now tells a genuine escape apart from the robot being home / washing / drying at the station, so a wash cycle is left alone. The return-on-arrival step is likewise skipped when the robot is already home.

Pre-existing (affected 0.2.0 and 0.2.1). Recommended update for anyone using presence-paused runs.

Full notes: https://github.com/botts7/dreame-scheduler/blob/main/CHANGELOG.md

v0.2.1 — Honor native per-room settings + clearer stuck alerts

Choose a tag to compare

@botts7 botts7 released this 08 Aug 04:17

Honors the robot's own per-room settings, with clearer and self-resolving stuck alerts.

Highlights

  • Honor native per-room settings (new default). The scheduler now respects the mode / mop / suction you set per room in the Dreame app — a room you set to sweep-only stays sweep-only. Vacuum before mop (which force-mopped the whole house) is skipped while this is on. Fixes wet mop pads being dragged onto a carpet the robot was natively set to sweep, which stalled the wheel motor.
  • Wheel-motor / hardware faults now ask you to check the wheels (something tangled / a jam) instead of a futile reverse-out that then mis-reads as "beached".
  • Honest stuck wording — "beached, lift it onto flat floor" only when the drop sensor actually fired; otherwise "stuck, needs a check".
  • "All clear" follow-up — after a "needs help" alert, once the robot sorts itself out and docks you get a "✅ all clear, no action needed".
  • New "can't get home" watchdog (detect & adapt). Catches a robot that's moving but getting nowhere — circling, repositioning, or blocked while returning. It tracks real progress (task-progress %, cleaned m², or netting closer to the dock), so a slow-but-real clean is never mistaken for a stall, and flags "🛟 can't get home" if nothing improves for 8 minutes. Works for manual/native runs too, and clears itself with the "✅ all clear" once docked.

Full notes: https://github.com/botts7/dreame-scheduler/blob/main/CHANGELOG.md

v0.2.0 — Self-healing recovery, trap learner, scheduling controls

Choose a tag to compare

@botts7 botts7 released this 30 Jul 09:15

A big feature + reliability release: the scheduler now heals itself when the
robot gets stuck, keeps an honest list of rooms it can't reach, and gives you
finer control over how and when each room is cleaned.

Integration (custom_components/dreame_scheduler)

Self-healing recovery. When the robot gets into trouble mid-clean the
scheduler tries to fix it and carry on instead of leaving it stranded:

  • Reverses out of a wedge and resumes, re-routing around the spot; route/path
    errors are now treated as recoverable.
  • Detects a beaching / high-centre (drive wheels off the floor) — where no
    command can help — and asks for a hand instead of grinding through futile
    retries.
  • Treats an obstruction as a moment, not a wall: it resumes and lets the robot
    re-plan rather than fencing off good floor.
  • Puts the robot's own photo of the obstacle in the alert so you can see what
    stopped it.
  • Silent-stuck and stranded watchdogs catch a robot that stopped moving with no
    error, or was left away from the dock after a run, and notify you.
  • Wakes a deep-'sleeping' robot that would otherwise ignore a dispatch.

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

Clean-by-hand list. Rooms the robot genuinely can't reach for weeks become a
Home Assistant to-do list, and clear themselves when the room is next cleaned.

Scheduling.

  • Rooms scheduled on several weekdays now clean on each of those days — fixes
    multi-day rooms that were silently collapsing to a single weekly clean.
  • Mop every N sweeps (per room): sweep every scheduled day and mop-after-
    sweep every 2nd/3rd/… day, so damp-mopping needn't happen every time.
  • Door-retry (opt-in): a room skipped for a shut door is retried the same day
    once its door has been open long enough to be sure the room is free — away-only,
    or while-home if you trust the open-timer.

Reliability. Recovery resumes only the run's own rooms (never a stray whole-
house clean); the robot is reined in if it wanders into rooms it wasn't sent to;
a run that swept implausibly little area isn't credited as done; a manual "clean
now" that merely parks isn't hijacked; the stale-house nudge is gated to daytime;
and mojibake in notification text is fixed.

Labs (opt-in). "Show me where I'm stuck" — the robot drives to an unreachable
room and signals there so you can find the blockage.

Add-on (Dreame Scheduler panel)

  • Clean-by-hand list and one-tap trap-learner Apply in the GUI.
  • Send test notification button, and a warning for rooms scheduled on no days.
  • Branding: wordmark banner as the store logo; Roboto bundled locally so the UI
    font loads correctly through ingress.

Project

  • CI: actions/checkout v4 → v7 (clears the Node 20 deprecation).
  • Added GitHub issue templates (bug report + feature request).

Thanks

  • dreacon34 (Reddit) — for the idea of
    driving the schedule off HA sensors to detect room availability, and
    re-attempting a room later instead of skipping it (shaped the door-sensor skip,
    the opt-in door-retry, and the adaptive-scheduling direction).
  • DatRandomBoi ("Anton") (HA Community) — for the per-room "mop every N
    sweeps" cadence.

v0.1.1 - Branding & packaging

Choose a tag to compare

@botts7 botts7 released this 10 Jul 13:08

Branding and packaging release — no behaviour changes.

  • Bundled brand artwork in custom_components/dreame_scheduler/brand/, so Home Assistant and HACS display the Dreame Scheduler icon and logo directly (HA Brands Proxy API, 2026.3.0+; local images take priority over the CDN).
  • README refresh — wordmark banner, a Highlights row (presence-aware cleaning / weekly reporting / self-healing from a stuck robot), privacy-blurred screenshots, and dynamic version + license badges that track releases.
  • CI — HACS validation now runs with no ignored checks (brands satisfied by the bundled brand/ folder).

Upgrading from 0.1.0 requires no configuration changes.

v0.1.0

Choose a tag to compare

@botts7 botts7 released this 10 Jul 11:19

First public release. Presence-aware, per-room Dreame vacuum scheduler for Home Assistant. See CHANGELOG.md.