I run a Mammotion Luba 3 through the excellent community integration (mikey0000/Mammotion-HA), and over a few months I built a layer of Home Assistant config around it to make it reliable enough to run unattended. I’ve cleaned it up, genericized it, and put it out under MIT in case it helps anyone else.
The two things it solves:
- The zone/area switch entity-ids re-enumerate on every map sync (the numeric suffix churn that orphans the old ones to
unavailable). Any automation that hardcodes a zone switch breaks silently — the mower “accepts” the command and never moves. The fix is a set of small template sensors that resolve the live switch by substring + available-filter, so everything downstream follows the new id automatically. - The integration sometimes drops its controls (sensors up, switches gone). There’s a reload-first recovery script (hard-capped so it never hammers the cloud) plus debounced health/status sensors, so it notices and heals itself.
On top of that: multi-zone “mow the whole yard” orchestration that survives HA restarts, an optional “Smart Mow” mode that mows on its own but only when the grass is actually dry (it goes by the real weather, not a fixed timer), a rain hold, and an optional voice layer.
The Smart Mow piece is worth calling out: most robot-mower scheduling is just a weekly calendar, whereas here the mower judges for itself when the grass is actually ready, from live weather and each lawn’s condition. I haven’t seen that particular application elsewhere.
My own layer is imperfect — it’s a workaround, not a true fix — but it’s been reliable in daily use. It all builds on the integration maintainers’ work; the rough edges it smooths over come from having to talk to a closed, changing mower protocol, not from anything they did. Thanks to them for the hard part. Repo, with a lessons-learned log of everything I saw go wrong:
Happy to answer questions.