JeeNavimow plugin¶
The JeeNavimow plugin integrates Segway Navimow robotic mowers into Jeedom: status, battery and firmware monitoring, control (start / stop / pause / resume / return to base) and real-time tracking through MQTT (with REST fallback).
⚠️ Unofficial plugin, not affiliated with Segway-Ninebot. It uses the same cloud API as the community Home Assistant integration (Europe / Frankfurt region).
Compatibility¶
- Jeedom 4.4+
- Navimow mowers with a Segway Navimow account (the "Navimow" mobile app) — tested on i210 LiDAR Pro, compatible with i / H / X series linked to the Navimow cloud.
- Python dependencies are installed automatically in an isolated virtual environment (Python 3.11+ required — installed or compiled automatically if missing).
Installation¶
- Install the plugin from the Jeedom Market (Connected objects category).
- Enable the plugin.
- In the plugin configuration, run the dependency installation and wait for the "OK" status.
- Connect your Navimow account (see below).
⏱️ Dependency installation time — on Debian 11 (Bullseye),
python3is 3.9 and no Python 3.11 package exists in the repositories. Since 0.2.8 the plugin builds Python 3.11 itself: allow 20 min to 1 h depending on the machine (~20 min on a recent x86, up to 1 h on a Raspberry Pi), versus under a minute on Debian 12 (Bookworm). This wait is one-off: the compiled Python is kept in/usr/localand reused by later installations. Leave the page open until the "OK" status, do not relaunch the installation meanwhile, and make sure about 1.5 GB of free disk space is available.
Connecting your Navimow account¶
Authentication uses Segway's official OAuth2 flow (login page hosted by Segway). Your credentials never pass through Jeedom.
- Click "Connect my Navimow account".
- Step 1 — click Generate the login URL.
- Step 2 — open the URL in your browser and log in with your Segway Navimow account. After login, the browser is redirected to a URL containing
?code=.... - Copy that full redirect URL and paste it into the field, then Validate.
- Your mowers are imported automatically as devices.
🔑 The login code is single-use and expires within seconds: generate the URL then paste the redirect URL without delay. If it fails, generate a fresh URL.
Refresh / add mowers¶
The "Refresh mowers" button (visible once the account is connected) re-runs mower discovery without re-authenticating — handy after adding a new mower to the account.
The daemon¶
JeeNavimow uses a Python daemon that:
- keeps the connection to the Navimow cloud alive (automatic OAuth token refresh);
- listens for real-time updates over MQTT;
- polls the REST API every 30 s as a fallback when MQTT is unavailable;
- relays commands (start/stop/pause/resume/dock) to the mower.
The daemon port is configurable on the plugin configuration page (change it only in case of a conflict).
Device: commands¶
Each imported mower automatically exposes the following commands.
Information¶
| Command | Type | Description |
|---|---|---|
| Status | info/string | Readable state (Mowing, Docked, Paused, Returning, Lifted, Error, Offline…) |
| Status code | info/string | Raw state returned by the API (isRunning, isDocked…) |
| Battery | info/numeric | Battery level (%) |
| Charging | info/binary | Mower charging on the base |
| Online | info/binary | Mower reachable |
| Error | info/binary | Active error (e.g. lifted) |
| Error message | info/string | Error details if available |
| Progress | info/numeric | Mowing progress (%) — when available |
| Mowed area | info/numeric | Mowed area (m²) — when available |
| Position X / Y | info/numeric | Relative position in meters — when available |
| Firmware | info/string | Firmware version |
| Update available | info/binary | Firmware update in progress/available |
| Last sync | info/string | Timestamp of the last update |
Actions¶
| Command | Description |
|---|---|
| Start mowing | Starts mowing |
| Stop | Stops the mower |
| Pause | Pauses mowing |
| Resume | Resumes mowing |
| Return to base | Sends the mower back to its dock |
| Refresh | Forces an immediate status read |
Dashboard widget¶
A dedicated widget shows the animated mower state, the battery gauge, the mowing progress and the control buttons, with offline and error state handling.
FAQ / Troubleshooting¶
- No mower appears after connecting → click Refresh mowers. Check that the mower is visible in the Navimow app.
- Information does not update → make sure the daemon is running (Health page) and dependencies are "OK". Restart the daemon after a plugin update.
- "Token exchange failed: invalid_grant" → the OAuth code expired: generate a fresh login URL and paste a fresh redirect URL.
- Dependency installation looks stuck → on Debian 11 (Bullseye) the plugin builds Python 3.11: this takes 20 min to 1 h and the log shows "Compilation de Python 3.11.9 depuis les sources". This is expected — let it finish.
- Dependency installation fails → Python 3.11+ is required (enforced by
navimow-sdk). Check the installation log for missing disk space (~1.5 GB) or network access.
Changelog¶
0.2.9¶
- Diagnostics: new Raw MQTT capture option in the plugin configuration. It records every message received from the Navimow cloud verbatim, in a dedicated file, without switching the daemon to debug. The
resources/mqtt_report.pyscript inventories the fields — frequency, type, samples — flagging those the plugin does not use yet. Purpose: identify the real progress, area and position fields, whose names are undocumented. Outgoing commands (RESTsendCommands) and status responses are captured too; OAuth tokens and MQTT credentials are redacted. - Documentation: documentation and changelog URLs fixed (Cloudflare hosting), as GitHub Pages cannot publish a private repository.
0.2.8¶
- Dependencies: when no Python ≥ 3.11 is available, the plugin first tries
apt-get install python3.11, then builds Python 3.11 from source (make altinstallinto/usr/local, leaving the systempython3untouched) — Debian 11 (Bullseye) now installs with no manual step. - Python tarball integrity verified (MD5 published by python.org), build parallelism capped by available RAM, and a lock preventing two concurrent installs.
- ⏱️ On Debian 11 (Bullseye), the first dependency installation takes 20 min to 1 h (Python 3.11 build) versus under a minute on Debian 12; the compiled Python is reused afterwards.
0.2.7¶
- Widget: fixed the link on the mower name (added the
m=parameter) — it now correctly opens the equipment configuration page.
0.2.6¶
- Dependencies: automatic detection of a Python ≥ 3.11 installed alongside the system one (e.g.
python3.11on Debian 11 wherepython3= 3.9) instead of failing; clearer error message (Debian 11 / Debian 12).
0.2.5¶
- Plugin: category moved to Nature.
0.2.4¶
- Widget: Resume button in yellow-green (
#9ACD32), distinct from Start and Base.
0.2.3¶
- Widget: now follows the Jeedom theme (dark / light mode) instead of the browser/OS theme.
0.2.2¶
- Widget: plugin logo in the header (instead of the robot icon) and clickable mower name opening the equipment configuration.
- Widget: donation button (coffee) with an opaque front tooltip; removed the redundant "Sync" button.
- Widget: blue home icon for the Base button and fixed missing icons (Font Awesome 5 compatibility).
- Widget: "Base" available while paused, centered battery gauge.
0.2.1¶
- New mower icon in the widget (dedicated image), animated while mowing.
0.2.0¶
- Real-time MQTT through the dynamic
mqttHost/mqttUrlbroker returned by the API (instead of the unresolvablemqtt.navimow.comhostname) — WSS connection + realtime topic subscriptions confirmed. - Automatic OAuth token refresh (~1 h): proactive refresh + on code 4005 (
CODE_OAUTH_INFO_ILLEGAL), MQTT auth updated without dropping the connection. - Robust daemon startup: port bind with retry, PID written after successful bind, orphan instance cleanup (fixes "the daemon does not start").
- Auto-refreshing widget: the dashboard and mobile widgets now update themselves every 15 s without reloading the page.
- Default daemon port 55149 (avoids conflict with jeewhatsapp).
0.1.0 (beta)¶
- First public release (beta).
- Segway Navimow OAuth2 authentication (paste-the-redirect-URL flow, no embedded browser).
- Automatic discovery of the account's mowers (+ Refresh mowers button without re-authentication).
- Information: status, status code, battery, charging, online, error + message, firmware, last sync (and progress / area / position depending on the API).
- Actions: start, stop, pause, resume, return to base, refresh.
- Python daemon: real-time MQTT + 30 s REST fallback, automatic token refresh.
- Glassmorphism dashboard widget (animated state, battery, progress, controls).
- Multilingual documentation (FR, EN, DE, ES, RU, ID, IT).