Un des succès de Xiaomi de l’année est compatible avec Domoticz et son system de plugin : Le Robot aspirateur Xiaomi

Dans cet article je ne vais faire d’unboxing, de présentation du robot aspi, cela a déjà été fait par mes confrères, nous allons plutôt voir comment l’ajouter a Domoticz et son System de plugin Python.

Officiellement Xiaomi ne propose pas de méthode pour inclure cet appareil dans une domotique autre de la sienne : MiHome.

C’est sans compter le gros boulot de plusieurs développeurs qui ont passé beaucoup de temps à travailler dessus, grâce à leurs travaux il est maintenant possible de contrôler ce robot aspirateur sans passer par l’application MiHome, ainsi en découle la possibilité de nombreux scénarios.

Récuperer le Token

Pour que le plugin fonctionne il nous faut un élément : Le Token, c’est comme un mot de passe qui permet de parler au robot, il est impératif de l’avoir, depuis le FW 3.3.9_003077 il faut aller chercher ce Token  directement dans l’application MiHome de votre appareil mobile :

Android :

Pour Android : il existe un super outil MiToolkit  qui se présente sous la forme d’un programme Windows téléchargeable ici : https://github.com/ultrara1n/MiToolkit/releases

Il vous faut choisir la version 1.5 et télécharger MiToolkit.1.5.zip 

A l’intérieur tout le nécessaire pour qu’il fonctionne

MiToolKit nécessite que vous ayez Java Installé sur votre Pc : https://www.java.com/fr/

Vous branchez votre Téléphone/tablette en USB a votre PC en mode débogage USB, vous double cliquez sur MiToolKit.exe, vous aurez sûrement une alerte de sécurité Windows vous indiquant que le programme n’est pas sur, etc…etc…, on valide et apparaît cette fenêtre :

Super c’est en allemand ! Pas de soucis le Dev propose une traduction en anglais, il suffit de cliquer sur le petit drapeau allemand et de choisir le drapeau US pour mettre le programme en anglais. Ensuite on clic sur « Extract Token »

La démarche du programme est assez simple :

  • Il lance l’application MiHome sur votre appareil
  • Fait une sauvegarde de l’application sur votre PC
  • Va recherche le Token pour vous dans la base de données de l’application

Au moment où vous cliquez sur Extract Token : Votre appreil Android va vous ouvrir une fenêtre : Sauvegarde complète, ici vous cliquez simplement sur Sauvegarder les données sans mettre de mot de passe

 

 

Cela va prendre un peu de temps, une fois la sauvegarde terminée, le programme vous propose d’extraire le Token et apparaît la liste de tous vos appareils Xiaomi, ce qui nous intéresse c’est la suite de 32 caractères a la ligne : rockrobo vaccum….

Et voilà c’est fini !

Finger in the noze

 

Ios

Tuto réalisé par @ebretteville  qui suit le blog sur tweeter et m’a bien aidé sur la partie Ios :

  1. Créer une sauvegarde avec iTunes  de votre iphone/ipad sur lequel vous avez installé l’application Mi-Home et configuré votre robot aspirateur Xiaomi.
  2. Vous pouvez vérifier la présence de votre sauvegarde dans iTunes Préférences Appareils.
  3. Ouvrir la sauvegarde réalisée avec iBackup une fois le logiciel installé.
  4. Cliquez sur open Raw Data
  5. Localiser sur le volet de gauche la ligne « App/Domain-com.xiaomi.mihome
  6. Localiser sur le volet de droite la ligne « Documents/xxxxxxxxxx_mihome.sqlite » (xxxxxxxxxx sont des chiffres).
  7. Cliquer sur export et exporté ce fichier vers un emplacement que vous retrouverez.
  8. Ouvrir le fichier sauvegardé avec DB Browser sqlite.
  9. Cliquer sur l’onglet « Exécuter le SQL » et entrer la requêtre suivante

 

  1. Rendez-vous sur le site Cryptomathic et prendre son token crypté en 96 caractères, le copier dans « Input Data » avec 00000000000000000000000000000000 dans la case « key » (laisser IV rempli comme tel »). Choisir ECB et décrypt. Puis copier la clé obtenue dans Output.
  2. Aller sur le site Darkbyte et coller la clé dans la case HEX et cliquer sur decode. Votre token en 32 character apparait dans la case « TEXT ».

 

 

Il y a des fois ou c’est pas si mal d’être avec Android…

 

Installation du plugin

Il faut connecter en SSH a votre serveur ensuite suivre les instructions du développeur du plugin : https://github.com/mrin/domoticz-mirobot-plugin ici traduit en français

Avant l’installation du plugin, on vérifie que vous ayez tout ce qu’il faut : python3 et  python3-dev par la commande :

On vérifie également que la version de setuptools (un outil de python) est la plus récente possible :

Il faut également que vous ayez installé les bonnes dépendances Linux par cette commande :

Une fois que tout est OK, on va dans le répertoire des plugins de Domoticz

Et on « clone » le plugin dans votre serveur :

Enfin on installe python-mirobo localement, c’est le programme qui permet de faire l’interface avec le Robot Aspi, mais également avec beaucoup d’autres « Gadjets » Wifi de Xiaomi (Ampoules Philips, Purificateur d’air, Ventilateur, Friteuse, Abattant de WC lavant…)

Enfin on redémarre Domoticz

Voila c’est fini pour le « gros bidouillage », maintenant retour au point and click sur l’interface de Domoticz.

 

Le Plugin

Vous avez votre token ? vous avez installé le plugin ? Vous avez bu une boisson fraîche ? enjoy !

Maintenant allez dans Réglages -> Materiel depuis l’interface Domoticz et ajouter le matériel qui porte le nom : Xiaomi Mi Robot Vacuum.

 

Ici c’est assez simple :

IP : l’adresse IP de votre Robot Aspi

Token : le token a 32 chiffres récupéré précédemment

Update interval : le temps en secondes ou Domoticz va aller vérifier l’état du Robot (en charge ou au travail, le niveau de la batterie, le niveau d’aspiration)

Fan Level Type : les différents pré-réglages d’aspiration : soit sous forme de Selector (standard) soit sous forme de slider en % (j’ai gardé le Selector)

Python Path : le répertoire où est installé Python3 si vous n’avez pas une installation « standard »

Debug : si vous voulez voir ce qu’il ce passe dans les logs.

Une fois ajouter, le plugin vous créé 4 widgets :

– Dans l’onglet interrupteurs :  2 qui vous permettent de piloter l’aspi et 1 qui nous donne « l’état de l’aspirateur »

Le widget de control, accepte les planifications horaires, ainsi vous régler les jours et heures de fonctionnement de l’aspirateur (par exemples tous les jours de semaine, 4h après le lever du soleil)

Trop facile avec Domoticz !

– Dans l’onglet Mesure : un widget qui vous donne le niveau de charge du Robot Aspi

 

Bien Sûr je ne vous abandonne pas ici, j’ai mis en place un petit événement sympa : mettre l’aspirateur en route lorsque nous sommes absent de la maison et que l’alarme se met en route avec le language LUA :

Alors ? Il est de quel type ce script ? All ? Device ? Time ?

Retour d’utilisation

[Mode RTL = ON #cestduvecu]

Bien-sur avec l’inclusion du Robot aspi dans Domoticz et un petit bidouillage, je peux le commander vocalement avec ma Google Home : « Ok Google, met l’aspi en route » ou « dis Google arrete l’aspi » = WAF a 200% et l’épate des copains a l’apéro entre deux petits fours !

Le robot en lui même,  venant d’un IRobot Roomba 500, je ne peux qui apprécier les avantages de l’appareil :

  • Puissance d’aspiration,
  • Vitesse de travail : 100m² de carrelage et tapis en 1 heure c’est nickel pour un entretien régulier,
  • La cartographie qui lui permet de toujours revenir a sa base ou le Roomba ce perdait dans la maison 1 fois sur 5.

Mais il n’a pas que des avantages, il est peureux…je m’explique :

Madame est couturière d’ameublement, a ses heures perdus elle nous fait des rideaux + des sur rideaux + des habillages de sommiers, le tout sur mesure comme elle le ferait pour ses clients, hors de question d’avoir du tissus qui touche le sol, ou avec le feu au plancher, tout est a pile poil a 2 cm du sol. L’aspi Xiaomi c’est un super ingénieur, il est bardé de capteur, il réfléchit, il ne veut rien cassé, il détecte tout les obstacles, les évite soigneusement…même les voilages…du coup il ne passe pas bien le long de des fenêtres, il ne passe pas du tout sous les lits, alors que le Roomba, bête comme ses pieds, casse cou jouant au billard faisan des bandes a gogo, même pas peur des rideaux, les habillages de sommier ? M’en fou je fonce a la chasse aux moutons et au poils de chats.

[Mode RTL = OFF #onsenficheunpeu]

Reste le prix, a sa sorti il frôlait les 400€…maintenant on le trouve a 230€ sur Gearbest avec le coupon : OctAllezmiro04 et une livraison gratuite, ce qui est nettement plus abordable.

 

Oui mais et le nouveau ? celui fait serpillaire ? 

  • Je ne sais pas il n’est pas encore livré, et honnêtement, je ne le prendrait pas, ne trouvant aucun intérêt a la fonction serpillière qui n’est qu’en faite un simple « mouillage de sol » reprenant une devise de la Marine :  Mouillé c’est lavé, c’est que c’est propre.
  • Il sera sûrement compatible avec le plugin une fois qu’il sera dans la librairie python-mirobo

Allez je vous laisse j’ai du ménage à faire.

 

 

 

 

 

 

4 Replies to “Domoticz : Guide d’utilisation du Robot Aspirateur Xiaomi”

  1. Bonjour

    Merci pour ce tuto tres didactique et tres détaillé.
    Alors pour moi c’est Ok pour la récupération du Token et l’installation du plugin python ; les différents devices liés au robot aspi apparaissent bien dans Domoticz (version béta pour moi avec python 3.5.4, sur un Pi3b de test).
    Mon domoticz de production étant sur un synology.
    Par contre le plugin à du évoluer par rapport à ton tuto ; le token et l’Ip n’est plus à saisir dans la page matériel, mais dans un fichier MIIO Server et la c’est « le drame » ;-).
    Je suis largué, j’ai tenté de suivre le github (mis à jour ce fameux fichier miioserver.sh), mais je bloque sur l’adresse IP et le port de son serveur (host 127.0.0.1 port 22222).
    Ce tuto tres bien fait mérite une mise à jour, moi je dis.

    Dans les logs j’ai cela :

    2017-11-26 06:44:35.283 (Mi Robot) Trying connect to MIIOServer 127.0.0.1:22222
    2017-11-26 06:44:35.283 (Mi Robot) Transport set to: ‘TCP/IP’, 127.0.0.1:22222.
    2017-11-26 06:44:35.283 PluginSystem: Starting I/O service thread.
    2017-11-26 06:44:35.283 (Mi Robot) Connect directive received, action initiated successfully.
    2017-11-26 06:44:50.313 (Mi Robot) Calling message handler ‘onHeartbeat’.
    2017-11-26 06:44:50.313 (Mi Robot) Trying connect to MIIOServer 127.0.0.1:22222
    2017-11-26 06:44:50.313 (Mi Robot) Transport set to: ‘TCP/IP’, 127.0.0.1:22222.
    2017-11-26 06:44:50.314 PluginSystem: Starting I/O service thread.
    2017-11-26 06:44:50.314 (Mi Robot) Connect directive received, action initiated successfully.
    2017-11-26 06:44:50.365 (Mi Robot) Calling message handler ‘onConnect’.
    2017-11-26 06:44:50.365 (Mi Robot) MIIOServer connection status is [111] [Connection refused]
    2017-11-26 06:45:05.343 (Mi Robot) Calling message handler ‘onHeartbeat’.

    Sinon ce robot est très efficace ; même avec les voilage à 2 cm du sol ; il y va calmement et posément, teste la résistance de cette obstacle mouvant, et puis ce lance. Il est également bluffant sous les tables avec les pieds de chaises. Et pour retrouver sa base que j’ai caché sous un canapé.

    Merci

     
  2. Whao merci pour cette réponse rapide
    Bon je progresse
    Il fallait lancer les services et les ajouter au démarrage (erreur de débutant)
    sudo chmod +x miio_server.py
    sudo chmod +x miio_server.sh

    sudo update-rc.d miio_server defaults
    sudo systemctl daemon-reload

    ça c’est OK 😉
    Bon par contre pas de réaction du robot et pourtant les logs ont l’air corrects ; Bizzard
    Je teste

    2017-11-26 08:17:33.535 (Mi Robot) Calling message handler ‘onHeartbeat’.
    2017-11-26 08:17:33.535 (Mi Robot) Trying connect to MIIOServer 127.0.0.1:22222
    2017-11-26 08:17:33.535 (Mi Robot) Transport set to: ‘TCP/IP’, 127.0.0.1:22222.
    2017-11-26 08:17:33.574 PluginSystem: Starting I/O service thread.
    2017-11-26 08:17:33.574 (Mi Robot) Connect directive received, action initiated successfully.
    2017-11-26 08:17:33.624 (Mi Robot) Calling message handler ‘onConnect’.
    2017-11-26 08:17:33.624 (Mi Robot) MIIOServer connection status is [0] [Success]
    2017-11-26 08:17:33.864 (METEO) Temp + Humidity + Baro (Temp_Hygro Ext)
    2017-11-26 08:17:33.868 (METEO) Wind (Vent)
    2017-11-26 08:17:33.874 (METEO) Rain (Pluie)
    2017-11-26 08:18:33.576 (Mi Robot) Calling message handler ‘onHeartbeat’.
    2017-11-26 08:18:33.577 (Mi Robot) Sending 19 bytes of data:
    2017-11-26 08:18:33.577 (Mi Robot) 91 b1 63 6f 6e 73 75 6d 61 62 6c 65 5f 73 74 61 74 75 73 .. ��consumable_status
    2017-11-26 08:18:33.577 (Mi Robot) Sending 8 bytes of data:
    2017-11-26 08:18:33.577 (Mi Robot) 91 a6 73 74 61 74 75 73 .. .. .. .. .. .. .. .. .. .. .. .. ��status
    2017-11-26 08:19:33.568 (Mi Robot) Calling message handler ‘onHeartbeat’.
    2017-11-26 08:19:33.568 (Mi Robot) Sending 8 bytes of data:
    2017-11-26 08:19:33.569 (Mi Robot) 91 a6 73 74 61 74 75 73 .. .. .. .. .. .. .. .. .. .. .. .. ��status

    Encore merci

     
  3. Bonjour deennoo
    Et bien tout fonctionne avec la dernière beta v3.8747 et en suivant en détail la mise à jour du tuto sur le github de mrinner.
    Et maintenant j’attaque ton prochain tuto : google home passe l’aspirateur 😉
    Merci encore pour ton site.

     

Laisser un commentaire