Présentation Plugin JeeNavimow

Bonjour à tous :wave:

Après JeeNinSwi, ProJote, JeeWhatsApp et BambuJab, voici un nouveau plugin : JeeNavimow, pour intégrer les tondeuses robotiques Segway Navimow à Jeedom.

L’idée est simple : suivre l’état de la tondeuse et la piloter depuis le dashboard, sans avoir à sortir le téléphone et ouvrir l’application Segway.


Nom et id

  • Nom : JeeNavimow
  • Id : jeenavimow
  • Catégorie : Nature
  • Licence : AGPL v3
  • Statut : bêta (0.2.9)

Fonctionnalités

  • Connexion au compte Segway Navimow en OAuth2, par collage de l’URL de redirection — aucun mot de passe n’est stocké
  • Découverte automatique des tondeuses du compte : un équipement Jeedom par tondeuse, plus un bouton Rafraîchir les tondeuses pour relancer le scan sans se reconnecter
  • Supervision : statut, code statut brut, batterie, en charge, en ligne, en erreur + message, firmware, mise à jour disponible, dernière synchro
  • Contrôle : démarrer, arrêter, pause, reprendre, retour à la base, rafraîchir
  • Remontée temps réel via MQTT (broker cloud dynamique), avec repli REST automatique toutes les 30 s si le flux se coupe
  • Rafraîchissement transparent du jeton OAuth (il expire environ toutes les heures) — rien à refaire à la main
  • Widget dashboard en glassmorphism : tondeuse animée pendant la tonte, jauge de batterie, boutons de contrôle, états hors-ligne et erreur gérés, rafraîchissement sans recharger la page, et suivi du thème Jeedom (sombre / clair)

[Déposez ici la capture du widget — docs/images/screenshot1.png]


Langues

FR, EN, DE, ES, RU, ID, IT — interface et documentation.


Prérequis

Composant Version minimale
Jeedom 4.4.0
PHP 7.4+
Python 3.11+

Il vous faut aussi une tondeuse déjà appairée dans l’application officielle Segway, et les identifiants du compte Navimow. Le plugin ne remplace pas l’appairage initial, il se branche sur le compte existant.

:warning: Le Python 3.11 minimum n’est pas un choix de ma part : c’est le SDK officiel Segway (navimow-sdk) qui l’impose via son Requires-Python. pip refuse purement et simplement de l’installer en dessous, il n’y a pas de contournement.

Depuis la 0.2.8, vous n’avez rien à faire manuellement. Le script de dépendances cherche un interpréteur ≥ 3.11 déjà présent, tente sinon un apt-get install python3.11, et en dernier recours compile Python 3.11 depuis les sources en make altinstall dans /usr/local — sans jamais toucher au python3 du système ni au lien /usr/bin/python3.

:stopwatch: Si vous êtes en Debian 11 (Bullseye), prévoyez 20 min à 1 h. Là-bas python3 vaut 3.9 et aucun paquet 3.11 n’existe dans les dépôts : la compilation se déclenche donc forcément. Comptez ≈ 20 min sur un x86 récent, jusqu’à 1 h sur Raspberry Pi, et environ 1,5 Go d’espace disque libre. C’est ponctuel — le Python compilé est conservé et réutilisé ensuite. Laissez la page ouverte jusqu’à l’état « OK » et ne relancez pas l’installation entre-temps.

Sur Debian 12 (Bookworm), Python 3.11 est natif : moins d’une minute.


Installation

Par le Market Jeedom :

  1. Plugins → Gestion des plugins → Market
  2. Chercher JeeNavimow
  3. Installer bêta
  4. Retour dans Gestion des plugins → Activer → Sauvegarder

Puis, sur la page du plugin :

  1. Icône :gear: → Gestion des dépendances → Installer, et attendre l’état « OK » (voir le point Debian 11 ci-dessus)
  2. Bouton Connecter mon compte Navimow → Générer l’URL de connexion
  3. Ouvrir l’URL dans votre navigateur, se connecter au compte Segway, puis copier l’URL de redirection finale (celle qui contient ?code=…) et la coller dans le champ prévu

Les tondeuses sont importées automatiquement, le démon démarre seul, et le widget s’affiche.


Commandes exposées

Actions : start, stop, pause, resume, dock, rafraichir

Informations : statut, statut_code, batterie, en_charge, en_ligne, en_erreur, message_erreur, firmware, maj_dispo, derniere_synchro

Tout est utilisable en scénario, évidemment. Le statut_code remonte la valeur brute du cloud (isRunning, isDocked, isDocking…) pour ceux qui veulent faire des tests fins sans dépendre du libellé traduit.


Ce que le plugin ne fait pas (et pourquoi)

Autant être clair tout de suite, ça évitera des attentes déçues :

  • Pas de progression de tonte, pas de surface tondue, pas de position. J’ai capturé un cycle complet — repos, tonte, retour base, recharge — et analysé chaque message publié par le cloud. Le canal temps réel ne transporte que quatre champs : batterie, identifiant, état, horodatage. Ni pendant la tonte, ni en fin de session. L’API REST n’est pas plus riche. Ce n’est pas une limite du plugin, c’est ce que Segway expose.
  • Pas de réglage de la hauteur de coupe. Le SDK officiel expose bien une fonction pour ça, mais elle publie sur un topic MQTT qui n’apparaît nulle part ailleurs dans son code, sans accusé de réception. Quatre changements de hauteur depuis l’application n’ont produit aucun trafic observable. À ce stade, ça ressemble à du code non raccordé côté amont.
  • Pas de gestion des zones ni de la planification. Ça reste dans l’application Segway.

J’ai ouvert une issue chez l’éditeur du SDK sur ces points. Si ça bouge, le plugin suivra — les commandes correspondantes sont déjà prévues côté code.

Autre chose à savoir : le « temps réel » MQTT bat en pratique toutes les 50 à 180 secondes selon les moments. Le repli REST, lui, interroge toutes les 30 s. Ne vous attendez donc pas à une position rafraîchie à la seconde — on est sur de la supervision d’état, pas du suivi GPS.


Documentation


Retours bienvenus

Le plugin est en bêta et n’a été testé que sur une i210 LiDAR Pro (firmware 002D) — c’est la seule tondeuse à laquelle j’ai accès. Les modèles i105N, i108N, H800N et compagnie devraient fonctionner puisque l’API est commune, mais je n’ai aucune confirmation.

Si vous avez une Navimow, vos retours m’intéressent, en particulier :

  • le modèle et le firmware de votre tondeuse
  • si la découverte du compte trouve bien vos machines
  • les états qui s’affichent « Hors ligne » alors que la tondeuse est visiblement active — ça veut dire que le cloud renvoie un code que je ne connais pas encore, et le statut_code me dira lequel
  • votre distribution (Debian 11 ou 12) et le temps qu’a pris l’installation des dépendances

En cas de souci, le plus utile est de passer le log du plugin en debug, de reproduire, puis de coller l’extrait ici.

Bon jardinage :seedling: