MoeBot Home Assistant Integration

June 23, 2026 ยท View on GitHub

Provides the following:

  • A Lawn Mower component for control of your MoeBot.
  • Further controls to manage whether the MoeBot continues to mow during rain and how long to mow for.
  • Ability to alter the multi-zone configuration of the mower (these entities are disabled by default).
  • Sensors to monitor the working state, errors and battery level of the MoeBot

Installation

Easiest install is via HACS

Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

  1. Add the repository to your HACS install by clicking the button below:
  2. Restart HA

For manual installation for advanced users, copy custom_components/moebot to your custom_components folder in Home Assistant then continue from step 2 above.

Adding the Integration

Once you have installed the integration (per above)...

  1. Open the Home Assistant web interface.
  2. Navigate to "Configuration" > "Integrations".
  3. Click on the "+" button in the bottom right corner to add a new integration.
  4. Search for the "MoeBot" integration and select it from the list.
  5. Enter the required details; Device ID, IP address and Local Key
  6. Click on "Submit" to complete the integration setup.

Configuration Options

flowchart TD
    START(Start) --> USER{Menu}
    USER -->|Cloud| CLOUD[Cloud Credentials]
    USER -->|Local| LOCAL_LOOKUP[Scan Network]
    USER -->|Manual| DEVICE_DETAILS
    CLOUD -->|"{region, api_secret, api_key}"| CLOUD_LOOKUP[Pull Cloud Devices]
    CLOUD_LOOKUP --> DEVICE_SELECT[Select Found Devices]
    LOCAL_LOOKUP --> DEVICE_SELECT
    DEVICE_SELECT --> DEVICE_DETAILS[Confirm Details]
    DEVICE_DETAILS -->|"{device_id, ip_address, local_key, tuya_version}"| END(End)

Documentation

Lawn Mower States

The Lawn Mower component as provided by Home Assistant only provides 3 states:

  1. ERROR - Device is in error state, needs assistance.
  2. PAUSED - Paused during activity.
  3. MOWING - Device is mowing.
  4. DOCKED - Device is docked.

The MoeBot however provides many more states:

  1. STANDBY - the MoeBot is not mowing; it is either sitting idle in the mowing area or sitting in the dock fully charged.
  2. MOWING - the MoeBot is mowing.
  3. FIXED_MOWING - the MoeBot is mowing in a spiral pattern.
  4. CHARGING - the MoeBot is in the dock charging.
  5. EMERGENCY - the MoeBot is in some non-normal state, perhaps lifted off the ground.
  6. LOCKED - the MoeBot UI is asking for the PIN to be entered.
  7. PAUSED - the MoeBot is currently mowing but the job has been paused.
  8. PARK - the MoeBot is following the boundary wire to return to the dock.
  9. CHARGING_WITH_TASK_SUSPEND - the MoeBot is in the dock charging but will return to mow.
  10. ERROR - the MoeBot is in some error state, perhaps it is outside of the boundary.

The MoeBot integration maps these states per the following table:

Lawn Mower StateMoeBot States
ERROREMERGENCY, ERROR, LOCKED
PAUSEDPAUSED
MOWINGMOWING, FIXED_MOWING, PARK
DOCKEDSTANDBY, CHARGING, CHARGING_WITH_TASK_SUSPEND

Additional documentation is provided in the pymoebot repository.

Future

Whilst my main mower is now a Luba 2 5000 and my MoeBot has been all but decommissioned, I am still interested in continuing to develop this integration.

Feel free to continue to log any issues you have, and if possible, I will try and address them.

The following is a list of features I would like to add to the MoeBot:

  • Improve the current ConfigFlow for adding a MoeBot device; maybe attempt discovery or at least use the abilities of tinytuya to identify the Local Key.
  • Provide additional sensors to show Tx/Rx message counts to the mower, including error counters (this would require an accompanying update to the pymoebot library).
  • Investigate the benefit of moving to a single coordinator for this integration, per the newer integration development guides.
  • Add statistic sensors that show the amount of time spent mowing in 24-hour and 1-week period.