Smart lawnmower integration into Home Assistant

  • Integrating the lawnmower into Home Assistant breaks down the app's "silo" and allows for automated mowing based on weather, presence, and schedules.
  • Mammotion, Bosch Indego and Husqvarna Automower can be integrated with Home Assistant using APIs, MQTT and advanced templates.
  • The use of sensors, services, and specific actions enables real automations that improve safety, comfort, and energy efficiency.
  • Combining Home Assistant with Matter, Apple Home, and other services expands lawnmower control beyond its official app.

Smart lawnmower integration into Home Assistant

If you have a modern robotic lawnmower and already use Home Assistant, you're one step away from turning it into another piece of your home automation ecosystem Instead of leaving it locked in its official app, integrating it allows you to decide when and how to cut off the lights: based on the weather, whether there are people in the garden, excess solar production, or simply the family's schedule.

In this article we will see, in great detail and in a practical way, how they behave in Home Assistant the main smart lawnmowers and integrationsMammotion (Luba/Yuka), Bosch Indego via MQTT, Husqvarna Automower using its official API, the trick to exposing Mammotion to Apple Home as a vacuum cleaner via Matter, and what Home Assistant offers to someone just starting to research which robot to buy. All explained in Spanish (Spain) and with plenty of "real-world" automation ideas.

What are the benefits of integrating a smart lawnmower into Home Assistant?

When the lawnmower only lives in its app, it stays in a “silo” completely disconnected of the rest of your smart home. Integration with Home Assistant breaks down that silo and turns the robot into just another device, with entities, sensors, and services that you can use in automations.

In practice, this means you can use data such as the battery, the working status, the GPS location, the cutting zone, or the weather forecast to decide whether the robot goes out to cut, returns to the base, pauses the work, or remains stationary.

Some very typical ideas that make a lot of sense when you have the lawnmower in Home Assistant are:

  • Stop the cut if rain is approaching. using local sensors or time integrations.
  • Avoid the hottest hours of the day or risk to the lawn and schedule the work for early morning or late evening.
  • Initiate the shutdown when there is a photovoltaic surplus, if you monitor your solar production in Home Assistant.
  • Block the robot when there are people in the garden (children playing, visitors at the barbecue, garden gate open, etc.).
  • Align the cutting with the family calendars so that it doesn't disturb meetings, naps, or special events.

All of this is possible because, once integrated, the robot exposes sensors (battery, state, mode, zone, errors…) and actions (start, pause, dock, override, etc.) that can be combined with the rest of your smart home.

Integration of Mammotion lawnmowers (Luba and Yuka) into Home Assistant

The Mammotion models (Luba, Yuka and derivatives) feature very complete community integration that transforms the robot into a native “lawn_mower” device within Home Assistant. From there you can read dozens of sensors and execute advanced cutting commands.

The great advantage of this integration is that it extracts data from the lawnmower such as battery level, operating status, GPS position, number of satellites, active area, connection type (WiFi/BLE/4G) and other model-specific parameters, in addition to exposing services to start, pause, stop, or send the robot back to base.

As for requirements, it's important to have Home Assistant. updated to a recent version (minimum 2025.3.0) and include HACS (Home Assistant Community Store), since the integration is not part of the core and is installed as a custom repository.

The most delicate detail is not technical, but related to accounting: it is recommended to create a second Mammotion account exclusively for Home AssistantIf you use the main account you already use in the app, there is a risk of annoying disconnections on your mobile device every time HA renews the login.

The typical workflow for preparing that second account is:

  • Create a new account in the Mammotion app, using a different email address.
  • Return to your main account and share the robot with the secondary account.
  • Log in with the secondary account, accept the shared device, and reserve it only for Home Assistant.

Once the accounts section is ready, the integration is installed from HACS by adding the custom repository "https://github.com/mikey0000/Mammotion-HA" As an integration, Home Assistant is installed and restarted so that it appears available in the Integrations menu.

When configuring the integration in Settings → Devices and services → Add integration, you can choose whether to connect the robot via Bluetooth Low Energy (BLE) or via Wi-Fi/4GIf you use BLE and the Home Assistant server is far from the garden, you can rely on a Bluetooth Proxy with ESPHome (an ESP32 acting as a BLE bridge near the lawnmower).

With a WiFi connection, which is usually the most convenient if the garden is well covered, simply enter the email and password of the secondary account Mammotion and the integration will begin creating the device with its entities.

Once added, in the device panel you will see your Luba/Yuka with cutting controls and a whole range of sensors: battery, current status (mowing, charging, idle…), link type, location, number of satellites, active working area, cutting progression and much more, according to the model.

In addition to sensors, the integration exposes very powerful services, such as mammotion.start_mowwhich lets you run a parameterized cut. From Developer Tools → Actions, you can select that service, choose your lawnmower, and pass it parameters such as speed, path mode, obstacle detection, cutting height (on Luba models), or area list.

In many cases, there are combinations of parameters common to the entire range (e.g., speed, navigation modes, or obstacle sensitivity) and others specific to Yuka (collection, edges, etc.) or to Luba (cutting height, different mapping strategies), allowing you to adapt the cutscenes with a high level of detail.

Useful automations with Mammotion and Home Assistant

The real leap in quality comes when you start creating automations connecting the logic of the lawnmower with the rest of your smart home. By knowing its status, battery level, and location, you can make much more precise decisions than with the app's standard programming.

A classic example is weather reaction: if your local weather station, your outdoor Zigbee sensors, or a forecasting integration detect high probability of imminent rainHome Assistant can order the lawnmower to stop working and return to the base before the garden turns into mud.

Something similar can be done with extreme temperatures. If an outdoor sensor registers more than, for example, 30°C, you can delay the shutdown to Avoid working in direct sunlightboth to protect the lawn and to take care of the robot's battery and components.

If you have photovoltaics integrated into Home Assistant, another very useful automation feature is... cutting taking advantage of surplus solarWhen the system detects that you're exporting energy to the grid (or that production exceeds a certain threshold), it launches the lawnmower within an "acceptable" time frame. This way, a large part of the robot's subsequent recharging is powered by your own energy production.

It's also very common to establish safety and coexistence rules: if the garden gate is opened, if a camera detects human presence, or if you activate a "barbecue" or "children playing" mode, the system can pause mowing to avoid any surprises. In this way, the robot ceases to be a forgotten item in the middle of the lawn which can be annoying just when you least expect it.

Finally, integrating family calendars into Home Assistant allows you to avoid mowing during meetings, remote work hours, or specific times (for example, if a calendar event indicates "baby nap," the robot stays at its base). The lawnmower then behaves like a regular mower. a member more coordinated with the household schedule.

At the interface level, with all the sensors and commands at your disposal, you can build a specific dashboard for the robot, with animated cards, quick control buttons, and a very polished status display. It's common to use projects like HA-Animated-Cards for this purpose. create visually appealing cards that show in real time the progress of the cut or the current area.

If at any point the integration fails with timeout errors towards the API "api.link.aliyun.com", it is advisable to check the router or firewall in case it is blocking connections to services hosted in ChinaThis can happen with certain security policies. Also, if the account setup process rejects the email address, the repository itself suggests using the "account number" instead of the email, as this works better in some cases.

Advanced Mammoth control from Apple Home using Matter

The integration of Mammotion into Home Assistant exposes the lawnmower as an entity lawn_mowerThe problem is that Matter, as of today, does not include a specific type of device for lawnmowers, so there is no direct mapping between that entity and an Apple Home accessory.

The solution lies in observing that, from a home automation perspective, an autonomous lawnmower and a robotic vacuum cleaner are practically functional twinsBoth cover defined areas, have batteries, zones, working modes, start/pause/stop commands and "return to base".

Matter's specification does include the device type RoboticVacuumCleaner (0x0074), with clusters for operational status, cleaning mode, operating mode and, very importantly, a serviceArea cluster that fits perfectly with the lawn mowing areas.

The trick is to create it in Home Assistant a template vacuum entity that “wraps” the Mammotion lawn_mower entity: start/stop/pause/return to base commands become the vacuum equivalents, battery level comes from the lawnmower battery sensor, and zones are represented as vacuum “rooms”.

To set all this up, you need to have the Mammotion integration working in Home Assistant, the add-on. Home-Assistant-Matter-Hub (preferably the fork maintained by RiDDiX), a recent HomePod or Apple TV as the Apple Home hub, and the lawnmower zone buttons available in Home Assistant (the button.*_zone_* entities exposed by Mammotion).

The first step is to locate all the relevant robot entities in Developer Tools → States: the main lawn_mower.*, the mode and battery sensors, the zone buttons, the task cancel button, and the path mode selector. These exact IDs are then used to build the configuration.yaml file. a vacuum template which translates the internal state of "MODE_WORKING", "MODE_CHARGING", etc., to vacuum cleaner states such as cleaning, docked, paused or idle.

That template vacuum cleaner also defines:

  • El battery level taking the value from the lawnmower battery sensor.
  • The start, stop, pause and return_to_base commands supported by the corresponding lawn_mower.* and button.* services.
  • A list of “fan_speeds” that is actually used to select the cutting zone (Zone A, Zone B, Zone C…).
  • Attribute rooms, which contains in JSON an array of {id, name} objects with the different zones, in the format expected by the Matter Hub.

This "rooms" attribute is key because Matter Hub's logic includes a function that, upon detecting this field in the vacuum cleaner entity, automatically creates the cluster. serviceArea and fills the supported areas. This way, in Apple Home you end up seeing each cutting zone as if it were a selectable "room" in the vacuum cleaner's interface.

Optionally, you can create a template block within the same block. select entity template This translates the different cutting path modes (single_grid, double_grid, segment_grid, no_grid) into more user-friendly names like "Cut in lines," "Cut in zigzag," "Cut in grid," or "No grid." This selection is then used in Matter Hub as a cleaning mode entity, so that Apple Home displays these names in its robot vacuum interface.

After validating and restarting Home Assistant to load these templates, we verify that the new entity vacuum.* has the correct state, the battery level is populated, and the rooms attribute contains the zone JSON. With that in order, we move on to the Matter Hub part.

In the Matter Hub plugin interface, a new bridge is created in server mode, its entity filter is limited to the template vacuum, and a mapping is added indicating that this vacuum.* should be exposed as Matter device of the RoboticVacuumCleaner typeThe select entity for cutting mode can be linked there if it has been created.

After restarting the add-on and verifying that the endpoint displays the expected clusters (including the serviceArea with the supported areas), simply go to the Apple Home app, select "Add Accessory," scan the Matter Hub bridge's QR code, and complete the pairing. Once done, the lawnmower will appear in Apple Home as Robot vacuum cleaner with Play/Pause/Base buttons, battery percentage, zone selection and mode selection.

It's worth noting some limitations: for now, area selection in Apple Home is primarily visual, as Matter's SelectAreas command isn't yet connected to a generic HA service that triggers zone buttons; the mowing mode may display "unknown" if the lawnmower is turned off, and any cluster or zone definition changes usually require withdraw and recommission the accessory in Apple Home.

Integration of Bosch Indego via MQTT

Bosch Indego lawnmowers don't have as tight a native Home Assistant integration as Mammotion or Husqvarna, but there is a very solid project called “Controller application and API for Bosch Indego Connect” which provides access to its API and also includes an MQTT adapter perfect for integration into HA.

The idea is simple: a process called IndegoMqttAdapter It connects to the Bosch cloud using your credentials and simultaneously publishes and listens to information on your local MQTT broker. Home Assistant simply reads these MQTT topics as sensors and sends commands by publishing messages to other topics.

To make the adapter boot automatically in a Linux environment, it is very common to add a line to the system cron with the syntax @reboot, for example:

@reboot /home/pi/indego/bin/IndegoMqttAdapter -c /home/pi/indego/IndegoMqttAdapterConfig.properties

The IndegoMqttAdapterConfig.properties configuration file contains all the sensitive data: the Base URL of the Indego service, the username and password you use in the official app, the MQTT broker address (ip:port), the broker credentials, the root topic for messages, and the polling interval in milliseconds.

A typical example of such a file includes fields like indego.mqtt.device.username and password, the indego.mqtt.broker.connection parameter pointing to tcp://IP_BROKER:1883, the client-id to distinguish the adapter, a topic-root of the type test/device/indego, and a polling-interval-ms of about 30000 ms for Update status every 30 seconds.

With the adapter already publishing states in MQTT, in Home Assistant you only need to declare MQTT sensors in configuration.yaml, pointing to the appropriate topics. Entities are typically created for the power status (on/off), the operating status (Docked, Charging, Mowing, Returning to dock…), the percentage of grass mowed, the time of the last cut and the total working time.

Value templates (value_template) are used to translate the English states received via MQTT into Spanish text strings, so the user sees “Loading”, “Mowing”, “Returning home”, “Trimming the edges”, “Idle in the garden”, “Low battery”, etc. It is also possible to Convert working minutes to hours Dividing by 60 and rounding, to display more convenient metrics on the cards.

Once Home Assistant is restarted, these sensors can be placed on a panel card to have at a glance the power status, current status of the lawnmower, the percentage of the area already mowed, and the operating hours.

To control the Indego from the HA interface, cards of the type [type missing] are usually used. entity-button A horizontal stack with three buttons: one to start the cut (sending the MOW payload to the topic command), another to pause (PAUSE payload), and a third to send the robot back home (RETURN payload). All these buttons launch the mqtt.publish service with the appropriate topic and payload.

With this up and running, you can now also design automations similar to those of other robots: for example, starting mowing at 6 a.m. only if it hasn't rained and isn't going to rain, by combining the robot's MQTT status with data from an integration like AccuWeather. Or send notifications via Telegram or speakers when the lawnmower starts mowing, finishes a cycle, or gets stuck in the garden.

This MQTT-based approach has the advantage of being very flexible: since everything happens through topics, you can easily combine it with other systems, dashboards, or advanced automationsAnd you don't depend on there being a specific official integration for Indego in the Home Assistant core.

Official integration of Husqvarna Automower with Home Assistant

Husqvarna offers official integration for its automowers equipped with Automower Connect or Automower Connect moduleLeveraging the brand's own cloud API, this provides highly detailed entities for lawnmower status, statistics, and control.

To use this integration, you need to configure OAuth2 credentials in the Husqvarna Developer PortalYou log in with the same account you use in the Automower Connect app, create a new application and assign it a specific Home Assistant redirect URL (https://my.home-assistant.io/redirect/oauth), in addition to connecting the Authentication and Automower Connect APIs.

When creating the application, the portal generates an Application Key and an Application Secret that must be treated as sensitive credentials (equivalent to username and password)Then, from Home Assistant, the Husqvarna Automower integration is used, which will guide you through the login and authorization process using that data.

Once configured, Home Assistant creates a Husqvarna "hub" and, from there, a series of entities associated with the lawnmower. These include binary sensors to detect if it is being used. charging the battery (when the robot has returned due to low battery and is recharging) or if it is leaving the base on its way to the starting point.

Integration can also generate botones to confirm minor errors, reset the blade usage time, or synchronize the lawnmower's internal clock with the Home Assistant time, very useful actions for maintenance and diagnostics.

A calendar for each robot, which displays the configured cutting times, allowing you to see in HA both the current and future programmed time slots, integrating them with the rest of the house calendars.

If the model supports it, an entity appears device_tracker which displays the lawnmower's GPS position, and an event entity that reflects the last error, with attributes such as severity, the exact latitude and longitude of the incident, and the timestamp. This opens the door to automations such as "if a tilt_error occurs, send a notification with the location and display a marker on the map."

The central control entity is an entity lawn_mowerFrom here, you can resume the program, pause the mowing, or park the robot until the next scheduled time. In some models, number entities are also created to adjust the general cutting height (from 1 to 9) and the cutting height by work area (0% to 100% with respect to the base height), so that you can adapt the cutting to different parts of the garden.

There are also select entities to control, for example, the operating mode of the lawnmower's headlights, and very comprehensive sensors for battery life, blade usage time, errors, periods of inactivity, restriction reasons (frost, daily limit, weekly schedule…), remaining charge time, current mode, next start, charge cycle count, collisions, accumulated cutting times, search, driving, etc., as well as the name of the active work area.

For each work area with systematic cutting activated, additional sensors are created with the progress in percentage and the date/time of the last completion, facilitating automations such as "if the progress of area X reaches 100%, notify and send the robot to the base."

Integration also generates switches to control exclusion zones (stay-out zones)These switches allow you to activate or deactivate the robot's global mowing program and enable or disable each work area separately. With these switches, you can decide, for example, that the robot should avoid a specific area when you're having a party on the lawn.

Regarding specific actions, the integration includes calls for overwrite the program (override schedule) and make the robot mow or park for a specific period (from 1 minute to 42 days), with a duration specified in days, hours, and minutes. You can also command it to mow a specific work area for a certain time, using the area ID obtained from the corresponding sensor.

It's important to be aware of some design limitations: you can't start the lawnmower simply with `lawn_mower.start_mowing` outside of scheduled times; you need to use override actions for that. And, on models with EPOS technology, exclusion zone management is not yet supported in this official integration.

What does a user gain by starting with Home Assistant and searching for a lawnmower?

If you're in the early stages of researching which robotic lawnmower to buy (for example, considering a Mammotion Yuka Mini 700/800 or an Ecovacs Goat) and you've only installed Home Assistant "just to try it out," you might be wondering if it's worth getting into all this integration stuff.

The answer is usually yes, especially if you plan your garden and house as a coherent system: by integrating the lawnmower with Home Assistant you get much more control and visibility With the official app, this translates into fewer surprises and more real autonomy in everyday use.

In the specific case of Yuka/Luba, the Mammotion integration allows you to:

  • Check at a glance status, battery, position, and zone from the Home Assistant panel.
  • Launch cuts conditioned on rules such as weather, presence or solar production.
  • Synchronize schedules with family calendars or house modes (away, vacation, night…).
  • Explore advanced scenarios such as the exposure to Apple Home via Matter to control it as if it were a robot vacuum cleaner.

To really get the most out of it, you'll need, in addition to the lawnmower, some basic home automation elements: some reliable time integration (meteosat, AccuWeather, local station), presence sensors or cameras if you want to block the cut-off when there are people around, and, if you have solar panels, integrate them into HA to play with the logic of surpluses.

The effort involved in setting everything up might seem high at first, but once the initial automations are complete, the system runs quite smoothly and your robot becomes “that freelance colleague who works behind the scenes”But now obeying rules that take into account what really happens in your house and garden.

Ultimately, integrating a smart lawnmower into Home Assistant, whether it's Mammotion, Bosch Indego via MQTT, or Husqvarna Automower with its official API, transforms a seemingly simple function like mowing the lawn into a another piece of the home automation puzzlecoordinated with the climate, energy, presence and habits of the family, something that is noticeable both in comfort and tranquility when the garden takes care of itself almost and you hardly remember that there is a robot working out there.


Add as preferred source in Google