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
select ZTOKEN from ZDEVICE where ZLOCALIP is 'lipdevotrerobotaspi'
 
  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 :
sudo apt-get install python3 python3-dev
On vérifie également que la version de setuptools (un outil de python) est la plus récente possible :
pip3 install -U setuptools
Il faut également que vous ayez installé les bonnes dépendances Linux par cette commande :
sudo apt-get install libffi-dev libssl-dev
Une fois que tout est OK, on va dans le répertoire des plugins de Domoticz
cd domoticz/plugins
Et on « clone » le plugin dans votre serveur :
git clone https://github.com/mrin/domoticz-mirobot-plugin.git xiaomi-mirobot
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…)
cd xiaomi-mirobot
pip3 install python-mirobo -t .vendors
Enfin on redémarre Domoticz
sudo service domoticz.sh restart
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 :
commandArray = {}

if devicechanged['Alarme']=='On' then
commandArray['Xiaomi Robot - Control']='Set Level: 10' --clean

elseif devicechanged['Alarme']=='Off' then
commandArray['Xiaomi Robot - Control']='Set Level: 20' --home

end

return commandArray

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.            

Laisser un commentaire