Eeve Toadi/Willow

For those who own a Willow (formerly called Toadi) robot mower, I’ve created an integration in Home Assistant.
I’ve used Node Red to read the sensor data from the robot and push it to MQTT. In Home Assistant a device + entities are created automatically via MQTT Discovery.

Here is my node red flow: Node Red flow to monitor Eeve / Toadi to Home Assistant via MQTT (including auto discovery) · GitHub
And my dashboard looks like this:

Enjoy.

5 Likes

I’ve updated the flow with more sensors and the ability to manage the emergency stop in HA. Zones can also be added to the dashboard.

2 Likes

Hello, this looks very good and I took inspiration from what you did to get something similar (less fancy though) in OpenHab…
Thanks a lot for sharing it.
I was wondering how you got the trace displayed this way? Do you generate a GPX file and then load it in openstreet map? How real time were you able to make this?

And also, at which frequency do you collect the json files from Toadi?

Thanks, glad you could use it.
I use this for the map (default HA functionality):

The camera is updated 3x per second and the sensor data (json) is retrieved every 3 seconds.

Nice integration! I just recieved my Willow and tried the integration in my Home Assistant. Followed the instructions for Node Red and MQTT broker. In Node Red MQTT shows as connected, but no new device is being added nor any entities (MQTT discovery is enabled). Any advice on how to further debug?

do you see the data when you connect to your MQTT broker manually (e.g. with MQTT Explorer)?

I have re-installed Mosquitto and now it works, so something with the config should have been wrong. Thanks!

@rmeekers wondering if you would have a more recent version (as there are quite some new features)?

I don’t own it anymore, so I can’t help you with it.

Isn’t there anyone else with skills to update this integration from now on? It’s a pity this doesn’t follow the new features.

Quite a few errors in this Node Red integration can be found in my logs:

Logger: homeassistant.helpers.template
Source: helpers/template.py:2209
First occurred: October 25, 2023, 21:14:08 (48889 occurrences)
Last logged: 19:51:41

  • Template variable warning: ‘dict object’ has no attribute ‘currentZoneId’ when rendering ‘{{ value_json.currentZoneId }}’
  • Template variable error: list object has no element 1 when rendering ‘{“area”: “{{ value_json.zonesInfo[1].area | round(0) }}”, “elapsedMowingTime”: “{{ (value_json.zonesInfo[1].elapsedMowingTime / 60) | round(0) }}”, “elapsedMowingTimeToday”: “{{ (value_json.zonesInfo[1].elapsedMowingTimeToday / 60) | round(0) }}”, “requiredMowingTime”: “{{ (value_json.zonesInfo[1].requiredMowingTime / 60) | round(0) }}”, “percentageComplete”: “{% if 0 in [ value_json.zonesInfo[1].requiredMowingTime, value_json.zonesInfo[1].elapsedMowingTime ] %}0{% else %}{{ ((value_json.zonesInfo[1].requiredMowingTime / value_json.zonesInfo[1].elapsedMowingTime) * 10) | round(0) }}{% endif %}”}’
  • Template variable error: list object has no element 1 when rendering ‘{% if value_json.currentZoneId == value_json.zonesInfo[1].id %}Mowing{% else %}Idle{% endif %}’
  • Template variable error: list object has no element 2 when rendering ‘{“area”: “{{ value_json.zonesInfo[2].area | round(0) }}”, “elapsedMowingTime”: “{{ (value_json.zonesInfo[2].elapsedMowingTime / 60) | round(0) }}”, “elapsedMowingTimeToday”: “{{ (value_json.zonesInfo[2].elapsedMowingTimeToday / 60) | round(0) }}”, “requiredMowingTime”: “{{ (value_json.zonesInfo[2].requiredMowingTime / 60) | round(0) }}”, “percentageComplete”: “{% if 0 in [ value_json.zonesInfo[2].requiredMowingTime, value_json.zonesInfo[2].elapsedMowingTime ] %}0{% else %}{{ ((value_json.zonesInfo[2].requiredMowingTime / value_json.zonesInfo[2].elapsedMowingTime) * 10) | round(0) }}{% endif %}”}’
  • Template variable error: list object has no element 2 when rendering ‘{% if value_json.currentZoneId == value_json.zonesInfo[2].id %}Mowing{% else %}Idle{% endif %}’

I’ve not fixed the zone issue you mentioned but I’ve added the sensors I could find and also the settings.
Bare with me as I’m not an expert in adding this to MQTT.
But everything seems to work.
This is NOT a drop in replacement as I have changed a lot of the structure in MQTT (more grouped)
Let me know if I missed something.

Node Red flow to monitor Eeve / Toadi to Home Assistant via MQTT (including auto discovery)

@smeersma @liviooo
Feel free to follow this thread for my flow: Eeve Willow