Hi, thanks for the encouragement!
To my knowledge this capability may not be exposed to Google Assistant yet. I think your best option is probably to ask Segway
Hi, thanks for the encouragement!
To my knowledge this capability may not be exposed to Google Assistant yet. I think your best option is probably to ask Segway
Now I will try to configure a card
and maybe try get a lawn mower
but this doesn’t support templates for the moment
Ah yes, it would be neat if it supported templates
Hi, just a note regarding battery drain during winter: after simply powering off and storing the mower away, my experience was good: just a slight discharge (maybe 5 percent or so) during the whole winter.
Good job!
I’m waiting for my new i108e and I have a question: the wifi is located into the mower or into the base stand?
Thanks,
tode
Can you please explain where in home assistant you placed the part of the code you called “Definition of Navimow sensors triggered by a custom event:”? Thank you!
Hi, sure! I’ve edited that part of my post.
It’s in “configuration.yaml”.
Actually the recommended approach is to add this to “configuration.yaml”:
template: !include template.yaml
…and then add my code (without the first “template:” line) into a new file named “template.yaml”
Hello @MatrixRewriter
I handled to add Google Assistant and connnect it with authentication. Where the mover should now appear in HA (new device)? I don’t see it. Must it be „online“ in google assistant? Actually my robot is still in winter sleep mode.
Hi, no: in Home Assistant you will only see the “Google Assistant SDK Custom” add-on. The underlying devices are not enumerated/listed in Home Assistant.
If your mower is in winter sleep mode, you can probably still try, for example:
“is Navimow i105 running”
from their latest release of Navimow X3 Series mower:
they have there this PROMISING note at the end:
- API access will be available in the summer of 2025.
so hopefully it will also include older mowers and it will be easily compatible with HA … for now only Google Assistant hacked integration
It’s always nice to spend thousands of dollars on tech only for a new version to release the following year! Let’s hope they don’t play the game of “X3 or newer only”!
In related news, Segway reached out to me to offer me a 30% discount on my purchase from when I bought the mower, a literal check back to me. Interesting. It’s because I complained about something.
Hey @MatrixRewriter really nice work, thanks a brunch!
One last question, how your script „launch_mobile_app“ looks like and how can I start the Navimow app from HA?
Hi @davesen, thanks!
Oh the script itself is a creative hack that makes HA send a notification to the appropriate mobile device’s app, which in turn will launch the designated Android package name. But it works
Here’s the script:
sequence:
- variables:
cmd_data:
message: command_launch_app
data:
package_name: "{{ app_package_name }}"
person_id: >-
{{ (states.person | selectattr('attributes.user_id', '==',
context.user_id) | list | first).attributes.id }}
- choose:
- conditions:
- condition: template
value_template: "{{ person_id == 'john_smith' }}"
sequence:
- action: notify.mobile_app_samsung_john_smith
data: "{{ cmd_data }}"
- conditions:
- condition: template
value_template: "{{ person_id == 'jane_doe' }}"
sequence:
- action: notify.mobile_app_oneplus_jane_doe
data: "{{ cmd_data }}"
fields:
app_package_name:
selector:
text: null
name: App package name
required: true
alias: Launch mobile app
description: ""
mode: parallel
max: 10
Hi all,
Not clear the exactly procedure to have Navimow inside HA
any helps?
Regards
Where did you stuck?
Hello,
Does anyone have a complete list of questions to extract all possible information from the Google Home SDK, apart from the usual play, pause, and resume commands?
Currently, I’m using these three:
I’m working with Node-Red instead of templates and events because I find it easier to handle.
In my case, I have 8 zones, and I’m thinking about how to mark each zone as mowed in HA. Has anyone implemented something similar? Maybe using an actionable notification or another approach?
Could you export and paste the code you have in node red? I haven’t integrated the Navimow yet, but am planning on doing so using node red so your code would be helpful.
Thanks
I think there is not much more. This intergration is very basic and in my eyes only a childs play.
How did you intergrate it into NodeRed?
I’ll explain what I’ve done so far in case it helps. For now, I’ve kept it as simple as possible but functional, and I’m sure I’ll change it over time.
I don’t have the play, pause, and resume options integrated because I’m not interested in them at the moment.
Therefore, I only have three states:
With that, I defined three helpers:
And I update their status from node-red with this flow:
[{"id":"b5cebc926b943bad","type":"inject","z":"3d1955a0a6ec1bb9","name":"Lanzar comando a Google","props":[],"repeat":"300","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":220,"y":360,"wires":[["f012a12356868c0b"]]},{"id":"f1b0686130e325bc","type":"function","z":"3d1955a0a6ec1bb9","name":"Regex bateria","func":"// Obtiene el texto de la respuesta\nconst responseText = msg.response.responses[0].text;\n\n// Extrae el número antes del %\nconst batteryLevelMatch = responseText.match(/(\\d+)\\s?%/);\n\n// Si se encuentra el número, lo almacena\nmsg.battery = batteryLevelMatch ? parseInt(batteryLevelMatch[1]) : null;\n\n// Devuelve el mensaje procesado\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":880,"y":360,"wires":[["ed9b6a76240663b6"]]},{"id":"ed9b6a76240663b6","type":"api-call-service","z":"3d1955a0a6ec1bb9","name":"Guarda valor","server":"9c1987f1.36bbe8","version":7,"debugenabled":false,"action":"input_number.set_value","floorId":[],"areaId":[],"deviceId":[],"entityId":["input_number.navimow_h3000_battery"],"labelId":[],"data":"{ \"value\": msg.battery }","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","blockInputOverrides":true,"domain":"input_number","service":"set_value","x":1090,"y":360,"wires":[[]]},{"id":"77cba7d0b03992ba","type":"switch","z":"3d1955a0a6ec1bb9","name":"","property":"response.responses[2].text","propertyType":"msg","rules":[{"t":"eq","v":"El dispositivo Navimow H 3000 no está en funcionamiento.","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":870,"y":240,"wires":[["267c95a615cc973d"],["eb0c4fb9b1490ca2"]]},{"id":"eb0c4fb9b1490ca2","type":"api-call-service","z":"3d1955a0a6ec1bb9","name":"Running","server":"9c1987f1.36bbe8","version":7,"debugenabled":false,"action":"input_boolean.turn_on","floorId":[],"areaId":[],"deviceId":[],"entityId":["input_boolean.navimow_h3000_cortando"],"labelId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","blockInputOverrides":true,"domain":"input_boolean","service":"turn_on","x":1120,"y":280,"wires":[[]]},{"id":"267c95a615cc973d","type":"api-call-service","z":"3d1955a0a6ec1bb9","name":"Paused","server":"9c1987f1.36bbe8","version":7,"debugenabled":false,"action":"input_boolean.turn_off","floorId":[],"areaId":[],"deviceId":[],"entityId":["input_boolean.navimow_h3000_cortando"],"labelId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","blockInputOverrides":true,"domain":"input_boolean","service":"turn_off","x":1120,"y":220,"wires":[[]]},{"id":"a9a92cdbe84e3847","type":"switch","z":"3d1955a0a6ec1bb9","name":"","property":"response.responses[1].text","propertyType":"msg","rules":[{"t":"eq","v":"El dispositivo Navimow H 3000 está conectado a la base.","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":870,"y":520,"wires":[["deeffd8a5ed8f836"],["c80e53464cab6611"]]},{"id":"deeffd8a5ed8f836","type":"api-call-service","z":"3d1955a0a6ec1bb9","name":"Docked","server":"9c1987f1.36bbe8","version":7,"debugenabled":false,"action":"input_boolean.turn_on","floorId":[],"areaId":[],"deviceId":[],"entityId":["input_boolean.navimow_h3000_docked"],"labelId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","blockInputOverrides":true,"domain":"input_boolean","service":"turn_on","x":1060,"y":500,"wires":[[]]},{"id":"c80e53464cab6611","type":"api-call-service","z":"3d1955a0a6ec1bb9","name":"UN-Docked","server":"9c1987f1.36bbe8","version":7,"debugenabled":false,"action":"input_boolean.turn_off","floorId":[],"areaId":[],"deviceId":[],"entityId":["input_boolean.navimow_h3000_docked"],"labelId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","blockInputOverrides":true,"domain":"input_boolean","service":"turn_off","x":1070,"y":560,"wires":[[]]},{"id":"f012a12356868c0b","type":"api-call-service","z":"3d1955a0a6ec1bb9","name":"Navimow status","server":"9c1987f1.36bbe8","version":7,"debugenabled":false,"action":"google_assistant_sdk_custom.send_text_command","floorId":[],"areaId":[],"deviceId":[],"entityId":[],"labelId":[],"data":"{\"command\":[\"Navimow h3000 battery level?\",\"Is Navimow h3000 docked?\",\"Is Navimow h3000 paused?\"]}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[{"property":"response","propertyType":"msg","value":"","valueType":"results"}],"queue":"none","blockInputOverrides":false,"domain":"google_assistant_sdk_custom","service":"send_text_command","x":460,"y":360,"wires":[["77cba7d0b03992ba","f1b0686130e325bc","a9a92cdbe84e3847","0be8ee7ff717f676"]]},{"id":"0be8ee7ff717f676","type":"api-call-service","z":"3d1955a0a6ec1bb9","name":"Number API calls","server":"9c1987f1.36bbe8","version":7,"debugenabled":false,"action":"counter.increment","floorId":[],"areaId":[],"deviceId":[],"entityId":["counter.number_google_api_calls"],"labelId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","blockInputOverrides":true,"domain":"counter","service":"increment","x":670,"y":580,"wires":[[]]},{"id":"9c1987f1.36bbe8","type":"server","name":"Home Assistant","addon":true}]
If you want to reuse the code probably you must adjust the names and specially the responses form the Google SDK, because in my case the language is set to Spanish.
Thank you for the insights!