A feature-rich Home Assistant custom integration for Segway Navimow robotic lawn mowers. This is a community fork of the official integration with significantly extended functionality.
Using the official Navimow integration?
This fork uses the integration domainnavimow_ha(folder:custom_components/navimow_ha/).
It is fully independent of the officialnavimowintegration and can be installed alongside it without conflict.
If you are migrating from the official integration, remove the old integration entry from
Settings → Devices & Services first, then add this one.
Neu hier? Folge dieser Anleitung — von der Installation bis zur ersten Karte.
- Öffne HACS → Integrationen → Menü oben rechts → Benutzerdefinierte Repositories
- URL eingeben:
https://github.com/daMustermann/NavimowHA· Kategorie: Integration · Hinzufügen - Suche nach Navimow in HACS und klicke Herunterladen
- Home Assistant neu starten
- Einstellungen → Geräte & Dienste → Integration hinzufügen
- Nach Navimow suchen und auswählen
- Auf Bestätigen klicken → Navimow-Login-Seite öffnet sich
- Mit deinem Navimow- / Segway-Konto anmelden
- HA erkennt deinen Mäher automatisch — fertig!
Kein API-Schlüssel nötig. Die Authentifizierung läuft über OAuth2.
Die Navimow-Karte wird durch die Integration automatisch registriert — du brauchst keine zusätzliche HACS-Frontend-Installation.
-
Öffne dein Dashboard → Stift-Symbol (Bearbeiten) → Karte hinzufügen
-
Suche nach Navimow → Navimow Mäher-Karte auswählen
-
Im Editor erscheint ein Formular:
Entitätspräfix — das ist der mittlere Teil deiner Sensor-IDs:
- Gehe zu Entwicklerwerkzeuge → Zustände
- Suche nach
navimow - Beispiel:
sensor.navimow_m550_battery→ Präfix istnavimow_m550 - Diesen Wert in das Feld eingeben
-
Speichern — die Karte erscheint sofort mit Live-Karte und Steuerung
Das war's! 🎉
| Feature | Official | This Fork |
|---|---|---|
lawn_mower entity (start/pause/dock/resume) |
✅ | ✅ |
| Battery sensor | ✅ | ✅ |
| Status sensor | – | ✅ |
| Signal strength sensor | – | ✅ |
| Position tracking (X/Y/heading) | – | ✅ |
| Device tracker on HA map | – | ✅ |
| Error sensors (code + message) | – | ✅ |
| Work statistics (time + area) | – | ✅ |
| Binary sensors (error/charging/mowing/docked/returning) | – | ✅ |
| Cutting height — number slider | – | ✅ |
| Cutting height — select dropdown | – | ✅ |
| Edge mowing switch | – | ✅ |
| Rain mode switch | – | ✅ |
| Anti-theft switch | – | ✅ |
| Locate button (make mower beep) | – | ✅ |
| Restart button | – | ✅ |
| Real-time MQTT updates | – | ✅ |
| Automatic token + MQTT credential refresh | – | ✅ |
| HTTP fallback when MQTT is stale | – | ✅ |
| Custom Lovelace card (auto-registered, GUI config) | – | ✅ |
| Live SVG map with animated mower icon | – | ✅ |
- Home Assistant 2026.1.0 or newer
- A Segway Navimow robotic mower with an active cloud account
- HACS for installation
- Open HACS → Integrations → top-right menu → Custom repositories
- Add:
https://github.com/daMustermann/NavimowHA— Category: Integration - Search for Navimow in HACS and install it
- Restart Home Assistant
- Go to Settings → Devices & Services → Add Integration → search for Navimow
- Download the latest release from the Releases page
- Copy the
custom_components/navimow_ha/directory into your HAcustom_components/folder - Restart Home Assistant
- Add the integration via Settings → Devices & Services
Authentication is handled via OAuth2 — no API keys need to be entered manually:
- Click Add Integration and search for Navimow
- Click Confirm to open the Navimow login page
- Log in with your Navimow / Segway account
- You are redirected back to Home Assistant automatically
The integration discovers all mowers linked to your account and creates entities for each one.
The primary control entity. Supports:
| Action | Description |
|---|---|
| Start | Send the mower out to mow |
| Pause | Pause at current location |
| Resume | Continue from paused position |
| Dock | Return to charging station |
States: mowing, paused, docked, returning, error
| Sensor | Unit | Description |
|---|---|---|
| Battery | % | Current battery charge level |
| Signal Strength | % | GNSS satellite signal quality |
| Status | – | Raw mower status string |
| Position X | m | Local map X coordinate (from charging station) |
| Position Y | m | Local map Y coordinate (from charging station) |
| Heading | rad | Mower orientation in radians |
| Error Code | – | Active error code, if any |
| Error Message | – | Human-readable error description |
| Work Time | s | Total cumulative mowing time |
| Work Area | m² | Total cumulative mowed area |
| Last Update | – | Timestamp of the last state message |
Note: Position X/Y are local coordinates (metres from the charging station), not GPS coordinates. They can still be used with the HA map card for relative positioning.
| Sensor | Device Class | Description |
|---|---|---|
| Error | Problem | on when an error is active |
| Charging | Battery Charging | on when at the station and charging |
| Mowing | – | on when actively mowing |
| Docked | – | on when docked at the station |
| Returning | – | on when driving back to the station |
| Entity | Range | Step | Description |
|---|---|---|---|
| Cutting Height | 25–80 mm | 5 mm | Set the blade height via a slider |
| Entity | Options | Description |
|---|---|---|
| Cutting Height (Select) | 25–80 mm | Set the blade height via a dropdown |
The number entity (slider) is the recommended way to adjust the cutting height. The select entity is kept for dashboard card compatibility.
| Switch | Description |
|---|---|
| Edge Mowing | Toggle perimeter / edge mowing pass |
| Rain Mode | Allow or block mowing in rain |
| Anti-Theft | Enable or disable the theft alarm |
| Button | Description |
|---|---|
| Locate | Make the mower beep/buzz so you can find it |
| Restart | Restart the mower firmware |
The mower appears as a GPS tracker entity on the HA Map card.
Because the coordinates are local (metres relative to the charging station), the absolute
position on a world map will not be geographically accurate — but the relative movement
and mowing path are fully visible.
Extra attributes exposed:
posture_x/posture_y— raw coordinates in metresposture_theta— heading in radiansmap_id— internal map identifier, if available
Home Assistant
└── Navimow Integration (custom_components/navimow_ha/)
├── sensor.py — 11 sensor entities
├── binary_sensor.py — 5 binary sensors
├── number.py — cutting height slider
├── select.py — cutting height dropdown
├── switch.py — 3 feature switches
├── button.py — locate + restart buttons
├── device_tracker.py — position on HA map
├── lawn_mower.py — main control entity
├── coordinator.py — shared data + token refresh
│ ├── MQTT (primary) — real-time push via WebSocket
│ └── REST API (fallback) — polled after 5 min silence
└── www/
└── navimow-card.js — custom Lovelace card (auto-registered)
-
MQTT (primary): Real-time state pushes via WebSocket.
- Position, status, battery, signal — updated every few seconds.
- Automatic reconnection with exponential back-off (1–60 s).
- 40-minute MQTT keepalive to survive hourly broker disconnects.
-
HTTP fallback: Polled when no MQTT message has been received for 5+ minutes.
- Rate-limited to once per hour to avoid API abuse.
-
Token refresh: The OAuth2 token is proactively refreshed on every coordinator update cycle (every 30 s). After a reconnect, MQTT credentials (username/password) are re-fetched from the server because they are tied to the access token.
automation:
- alias: "Navimow – Start at sunrise"
trigger:
- platform: sun
event: sunrise
offset: "+00:30:00"
condition:
- condition: state
entity_id: binary_sensor.navimow_charging
state: "on"
action:
- service: lawn_mower.start_mowing
target:
entity_id: lawn_mower.navimowautomation:
- alias: "Navimow – Dock on rain"
trigger:
- platform: state
entity_id: sensor.weather_condition
to: "rainy"
condition:
- condition: state
entity_id: binary_sensor.navimow_mowing
state: "on"
action:
- service: lawn_mower.dock
target:
entity_id: lawn_mower.navimowautomation:
- alias: "Navimow – Error notification"
trigger:
- platform: state
entity_id: binary_sensor.navimow_error
to: "on"
action:
- service: notify.mobile_app
data:
title: "⚠️ Navimow Error"
message: "Error: {{ states('sensor.navimow_error_message') }}"This integration includes a custom Lovelace card (custom:navimow-card) that is
automatically registered when the integration starts — no manual resource setup needed.
- Edit your dashboard → Add Card → search Navimow
- The Navimow Mäher-Karte appears in the card picker
- A GUI editor opens: enter the entity prefix and configure which sections to show
Minimal YAML (if added manually):
type: custom:navimow-card
entity_prefix: navimow_m550 # prefix from sensor.navimow_m550_battery| Section | Content |
|---|---|
| Live map | Animated SVG — mower pulsates while mowing, blade rotates, direction arrow, battery bar |
| Controls | Start / Pause / Return to base / Locate — highlight when active |
| Statistics | Battery %, mowing time, mowed area |
| Settings | Cutting height (±5 mm buttons), edge mowing, rain mode, anti-theft |
| Error bar | Shows error code + message when a fault is active |
| Option | Default | Description |
|---|---|---|
entity_prefix |
(required) | e.g. navimow_m550 |
range |
12 |
Map radius in metres — adjust to your lawn size |
show_map |
true |
Show the live SVG map |
show_controls |
true |
Show control buttons |
show_stats |
true |
Show statistics row |
show_settings |
false |
Show settings panel |
Go to Developer Tools → States and search for navimow.
Take any sensor ID, e.g. sensor.navimow_m550_battery → prefix is navimow_m550.
A complete multi-section Lovelace view (title + chips, map, gauge + mini graph, control buttons, settings, error card) is also available in dashboard-cards.yaml. This version uses Mushroom Cards, Button Card and Mini Graph Card from HACS.
Make sure you restart Home Assistant after copying the files.
Navimow access tokens are valid for ~24-48 hours. If the token expires and a refresh fails, HA will prompt you to re-authenticate. Open Settings → Devices & Services → Navimow and click Re-authenticate.
Entities are kept available as long as any cached state data exists. If all entities go unavailable:
- Check the HA logs for
navimowrelated messages - Verify your Navimow account is accessible in the official app
- Try reloading the integration via Settings → Devices & Services → Navimow → Reload
# configuration.yaml
logger:
logs:
custom_components.navimow_ha: debug- Position coordinates are local, not GPS: The X/Y values are in metres relative to the charging station. They cannot be used for accurate world-map positioning.
- No offline / LAN operation: All communication goes through the Navimow cloud.
- Single account instance: Only one Navimow account can be linked at a time.
Pull requests and issue reports are welcome!
Please open an issue first if you plan a larger change.
MIT — see LICENSE for details.
- segwaynavimow/NavimowHA — the official integration this fork is based on
- The navimow-sdk Python package
- The Home Assistant community
