Alexa is a good start, I just hope they create an actual API for it that we can use to integrate into HA.
FWIW, how I have mine set up is using HA’s schedule utility to match the scheduled jobs in Navimow, while it’s not perfect it does let me have automation run at the times when I know the mower will be running - and since I also have a good idea of how long each zone takes to complete, I can almost nail the stop time on the head.
What I’m missing and really want is the ability to start and stop the mower using automation - like knowing if it rained in the past X hours so it doesn’t mow. I know I can toggle the power to the dock to prevent it from launching but it’s not ideal.
action: media_player.play_media
target:
entity_id: media_player.bureau
data:
media_content_type: custom
media_content_id: Alexa, demande à robot segway de retourner à la station de charge.
To get status information from Navimow, you need to install the “Google Assistant SDK Custom” add-on instead of the standard “Google Assistant SDK”. I guess this is because the responses come as HTML, and the core add-on is not allowed to parse HTML.
NOTE: Google Assistant API’s rate limit is 500 calls per 24 hours.
Here’s what seems to work so far (thanks Szumol):
COMMANDS:
start Navimow i108
park Navimow i108
QUERIES:
what is Navimow i108 battery level
=> Navimow i 108 has 87 percent battery.
is Navimow i108 docked (not fully explored yet)
=> Navimow i 108 isn’t docked.
=> Navimow i 108 is docked.
is Navimow i108 running (not fully explored yet)
=> Navimow i 108 isn’t running.
=> Navimow i 108 is paused.
If you find other working commands/queries, let us know!
Thank you!
So if I understand correctly this is a rate limited cloud pull solution?
For example if I would want to update the status of my navimow every 5 minutes during the day hours (let’s say 8-20 so 12 hours) it would require to make 12 requests per hour (60 minutes / 5) times 12 hours = 144 requests.
And since it’s then 1 request for the battery, 1 request for docked and 1 request for running I have to make 3 requests every 5 minutes which gives a total of 432 per day, which means I’d be near the limit.
Nicely done!
I understand there’s no way to instruct the Navimow which zone it should start to mow right?
One use-case I would have for integrating the Navimow into Home Assistant would be that it only mows my front garden when we’re home (to reduce the risk of theft).
No this is not implemented (or not yet), as far as I know.
This is aligned with what I see in the “Mower” device in Google Home app.
What I know though, is that they’re ironing out some bugs. A couple days ago the docking status was not consistent, and the latest firmware upgrade fixed it.
Maybe a feature request for zones and progress indicator would help?
Yes I’ll be happy to share my scripts and everything
The Google Assistant SDK Integration (the one that can successfully receive text responses from Google Assistant) is there:
The integration between Navimow and Google Assistant is very straightforward, IIRC you can trigger the linkage from the Navimow app itself. That part is easy really. Once it’s done, you’ll see the device in the Google Home app (which I had never used before that day)
You don’t need to use (not even launch) the Google Assistant app.
Definition of Navimow sensors triggered by a custom event (in configuration.yaml):
Automation to periodically poll Navimow data through Google Assistant API, and push them to the sensors through the custom event:
alias: "Navimow i105: Get state"
description: >-
Notes:
* Google Assistant API rate limit: 500 requests per 24 hours (seems to reset
at 7:00am UTC).
* Quota status:
https://console.cloud.google.com/apis/api/embeddedassistant.googleapis.com/quotas?...
triggers:
- trigger: time_pattern
minutes: /5
- trigger: homeassistant
event: start
conditions:
- condition: numeric_state
entity_id: sun.sun
attribute: elevation
above: -15
actions:
- action: google_assistant_sdk_custom.send_text_command
metadata: {}
data:
command:
- what is Navimow i105 battery level
- what is Navimow i105 doing
response_variable: result
- event: set_navimow_i105_state
event_data:
battery_level: >-
{{ result.responses[0].text | regex_replace(find='.* ([0-9]+)
percent.*', replace='\\1', ignorecase=True) }}
status: >-
{{ result.responses[1].text | regex_replace(find='.*Navimow i 105
(.*)\.', replace='\\1', ignorecase=True) }}
mode: restart
IMHO the only (slightly) annoying part is the step to enable Google Assistant SDK in Google Cloud Console - but it only needs to be done once, and the steps are rather well documented in Home Assistant’s documentation:
And the script (navimow_i105_send_command) simply sends the command and forces a state refresh shortly after (to mitigate the fact that we normally only refresh the state every 5 minutes):
Edit 2025-04-24: and here’s the definition for the “constant_true” / “constant_false” template binary sensors. They act as simple placeholders that help make a button’s icon appear constantly “on” (yellow) or “off” (blue):
This is really promising progress on integration with HA! When you start a job, have you figured out how to tell it which map to use or which parts of the map to use? That would be my last real obstacle to overcome since I often only want to do one zone on a map or a mix-and-match.