Aller au contenu

Xiaomi Vaccum


ADN182

Messages recommandés

Bonjour tous le monde, 

 

Chose promise chose due, voici le tant attendu "module" permettant de piloter un Xiaomi Vaccum, pour ceux qui ne le savent pas cet aspirateur robot v1 (la v2 est en pré-commande, elle dispose en plus de l'option lavage et quelques évolutions supplémentaires) concurrence les grands du marché tel que Neato ou encore iRobot. Et oui pour 230€ vous pouvez disposer de "Conchita" et celle-ci rivalise face aux aspirateurs de l'ordre de 600€ - 800€ des marques précédemment citées.

 

Revenons à la domotique, tous démarra lorsque j'ai dis à madame que j'allais mettre 6€ (Plugin Jeedom) de plus au profit de "Conchita", et la scène de ménage :D, bon j'exagère mais j'ai quand même eu le droit à un : "Tu ne peux pas le faire avec ta Box Fibaro, 590€ et c'est pas capable de faire ça !" J'ai remballé mon porte monnaie et j'ai dis ok "challenge accepted" ! 

 

Et nous voici quelques semaines plus tard, après quelques claquage de tête sur les murs, avec quelque chose de fonctionnel, j'avoue c'est un peu l'usine à gaz mais j'ai pas trouvé plus simple avec les limitations que l'on a avec les Scènes et les VD...

 

Pour Expliquer un peu le principe :

Les produits Xiaomi dialogue via protocol UDP (port 54321 pour le Vaccum je ne sais pas ce qu'il en ai pour les autres objet de la marque), la construction de la trames UDP est expliquer ici ce dernier lien ma grandement servi et j'en remercie l'auteur sans lui je n'aurais jamais pu commencer.

 

Sans entrée trop dans les détails, si l'on veut dialogué avec le robot on doit lui dire bonjour pour récupérer une séquence, ensuite on construite le paquet à lui transmettre en l'encryptant avec un Token propre à chaque aspirateur (AES128, MD5...)  on lui transmet et on décrypte la réponse.

 

Dans notre box voici comment le dialogue opère : 

Hello (VD ) ==> Encryptions du paquet (Scène)  ==> Envoie de la trame au Robot (VD) ==> Description de la réponse (Scène) 

 

Fini le blabla, je vous invite à créer une nouvelle scène en lua en modifiant les propriétés User Params à savoir : 

Le token de votre robot. (Vous pouvez la récupérer à l'aide du Tuto de Cédric ici ou pour Iphone grâce a @ggpublic ici)

On reviendra remettre l'id du VD plutard ;) 

 

Scène

Xiaomi Vaccum Scene.lua

Xiaomi Vacuum Scene v1.1.lua

Xiaomi Vacuum Scene v1.3.lua

 

 

 

--------
----- USER PARAMS --------
--------
local token_user = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
local VD_Xiaomi = 65
local VD_Xiaomi_Send_button = local lang = "fr"; -- en or fr
--------
-------- END USER PARAMS ---------
--------

 

Gestion des Zones : 

Depuis la version 3.3.9_003194 pour les Vaccum Version 1 et depuis toujours pour la V2 (S50) pour pouvait demandé à votre aspi de faire un nettoyage sur une partie de la map (la cuisine, ou une partie de celle-ci....)

Les paramètres de zones ce trouve dans la partie Scène : 

-- Zone Config [x,y,x1,y1,count]
local user_zone = {
  cuisine = "[25500,24000,26500,25000,1]",
  salon = "[26117,26005,27767,27205,1]",
  salle = "[26117,26005,27767,27205,1]", 
  sdb = "[26117,26005,27767,27205,1]",
}

J'ai pour l'instant configuré 4 zones les plus communes que l'on retrouve chez soi, ces zones sont lié aux 4 boutons dans la section Zone du VD.

Si vous souhaiter rajouté une zone il suffit d'ajouter un bouton et un tableau avec les coordonnées de la nouvelle zone.

 

Les coordonnées représentent un rectangle sur la maps avec un axe X et un axe Y du coup avec deux points le robot lui va en faire un rectangle.

Par exemple pour la cuisine ou le premier point ce situe en coordonnées 25 500, 24 000 (S sur la capture ci-dessous) et le second point 26500, 25000 ( E sur la capture ci-dessous) le la zone à nettoyé est donc représenté par un rectangle en trait noir sur la capture 

image.png.c5b45291c2df3951d7a9b4650f4b0e91.png

 

Il faut savoir que la base (le démarrage du robot) sur la maps est toujours situé à peu près au centre de la maps de 52000 mm x 52000 mm, au coordonnée x : 25 500 y : 25 500. (Si vous vous déplacé de 25 500 à 24 500 en théorie vous avez fait 1 mètre)

 

Afin de pouvoir vous repérer sur la carte, j'ai produit un fichier excel qui représente les coordonnées. (C'est pas super User Frendly mais j'ai pas trouvé autre chose :s ).

L'idée est de déplacer votre robot à 4 endroit sur la maps à des coordonnées précises à l'aide de la fonction Go To du VD (faire un ou 2 mètres pas plus), ainsi vous allez avoir une maps avec un trajet de quatre point. Il faut ensuite prendre une capture d'écran de votre maps sur l'application Mi Home, puis avec un logiciel tel que Paint.Net supprimer le font de la maps (avec l'outil de selection magique, qui selectionnera la couleur de fond de la map) et venir le coller sur le fichier excel ci-dessous. Vous dimensionner ensuite votre image pour qu'elle corresponde aux trajets que vous avez effectué précédemment avec le robot. Ainsi vous pourrait avoir les coordonnées des pièces que vous souhaité et les renseignées dans la Scène.

Calcul Maps.xlsx

 

 

Virtual Device:

Le virtual device à importer et à configurer comme suis (je vous conseille d'éditer le vfib avec le numéro de votre icône une fois celle-ci importé)  : 

Entre l'adresse ip du Robot ainsi que le numéro de la Scène créer précédemment

5a15d5a519ce4_2017-11-2218_43_19-Clipboard.png.6c4fe4dc4a77f95f6d68fae3bd79a55e.png

Virtual Device : 

Xiaomi_Vacuum.vfib

Xiaomi_Vacuum en.vfib - V 1.1

Xiaomi_Vacuum fr.vfib - V1.1

 

Xiaomi_Vacuum v1.3_FR.vfib - V1.3

 

N'oubliez pas de revenir sur votre scène pour y ajouter l'ID du VD.

 

Attendez 30 secondes et en principe vous devriez avoir des informations dans le VD :) 

 

GEA : 

Voici dès exemple de gestion du Robot aspirateur dans GEA, (Notification de démarrage et d'arrêt, notification lors d'erreur. Démarrage du nettoyage quand personne n'est présent à la maison ) : 

--[[
%% autostart
%% properties
65 ui.status.value -- permet d'avoir le modification au changement d'état du label Satus du VD
%% globals
--]]


-- // Xiaomi Vacuum
	-- Notification
		GEA.add({"Label", id["XAIOMI_VACCUM"], "status", "Nettoyage"}, -1, "Je commence l'aspiration de la maison" )
		GEA.add({{"Label", id["XAIOMI_VACCUM"], "status", "Chargement"},{"Label!", id["XAIOMI_VACCUM"], "cleantime", ""},{"Label!", id["XAIOMI_VACCUM"], "cleanarea", ""}}, -1, "J'ai fini pour aujourd'hui, Surface traité : #value[3]#, Temps passé : #value[2]#, je retourne à la base" )
		GEA.add({"Label!", id["XAIOMI_VACCUM"], "error", ""}, 30, "J'ai besoin d'aide, #value[1]#" )
		
	-- Start
		GEA.add(true, 0, "",{{"VariableCache", "CleanningToday", "false"}})
		GEA.add({{"VariableCache", "CleanningToday", "true"},{"Time", "23:30", "23:31"}}, 30, "", {{"VariableCache", "CleanningToday", "false"}})
		GEA.add({{"Label", id["XAIOMI_VACCUM"], "status", "Chargement"}, {"VariableCache", "CleanningToday", "false"}, {"Time", "10:15", "19:00"}, Absence, AlarmeEnable}, 60*15, "", {{"VirtualDevice", id["XAIOMI_VACCUM"],12},{"VariableCache", "CleanningToday", "true"}})
  

 

 

Icône : 

5a15d6acca5b2_XiaomiVacuum.png.209b81011d08c2bd0f48d453d9bb18bb.png

 

Merci à @Fredric pour ces icônes : 

Le 10/06/2018 à 23:18, Fredric a dit :

S50_v2-1.png.253a7352fc59ec26af8fb97990b4cc19.pngS50_v2.png.9fa2d7b7e5a231fbcca2f7523912a5c4.png5b1d954fe9489_S50_v2Turbo.png.5d36812bb70e14008905abe8eb960f60.png5b1d954f671c0_S50_v2stop.png.c4a86ea74c9a354aec574a8564713710.png5b1d954e5cff5_S50_v2Pause.png.076f9f9f95176bc331821baa28f5ab2d.png5b1d954d57b39_S50_v2Max.png.2bdfd7ddaf8ea01698350fcb45c4594f.png5b1d954cc875e_S50_v2find.png.f39cd8bb7c8b08710b8bd5cdc7beb496.png5b1d954c474e2_S50_v2envoie.png.5885556d22f08f6cc76054234b77f633.png5b1d954bba96c_S50_v2DOCK.png.ca8267fd441046c106403d5d6399757e.png5b1d954a91e1e_S50_v2actu.png.229f0545cb2b961a1190bfd515625c32.png817885463_S50_v2Normale.png.66b998cbbba88769e5000118b0d3065a.png1028058662_S50_v2Start.png.77ac865573e44ea54fa2b64383790c5a.png138747335_S50_v2silence.png.1cc68b714f3f8b0f50c12368a32ed1ed.pngS50_v2 DOCK2.png111008391_Scne.png.ab7649a5cce69227fb560dd908c01198.png

 

 

NEW Version 1.3 :

- Optimisation du code 

- Ajout des fonctions Zone et Go To 

- Ajout du statu des consommables

- Ajout des commandes de contrôle du volume

 

Version 1.1 :  

 - Gestion des erreurs

 - Ajour du choix de la langue

 - Module virtuel en Français et anglais

 - Fermeture de la connexion après chaque envoie (disconnect et nil) 

Xiaomi Vacuum Scene v1.2b.lua

Modifié par ADN182
New Version + GEA
  • Like 9
Lien vers le commentaire
Partager sur d’autres sites

Bonjour bonjour,

 

Comment te dire : merci merci merci pour ce gros boulot.

Sympa l'UDP en lua à traiter non ?  ;-)

 

BRavo et félicitations ;-) et si en plus tous les produits Xiaomi fonctionnent de la même facon, t'as déjà tout fait.

 

Well done @ADN182

(heureusement que des personnes comme vous les experts existent...) merci de partager

 

PS : J'oubliais, tu as économisé 6 euros ;-)

Modifié par pepite
  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Merci, merci Messieurs ! ;)

 

Il y a 13 heures, Moicphil a dit :

Et ben, 1600 lignes dans la scène... félicitation pour ton travail et merci pour le partage !  ;)

Pour les 1600 lignes de Lua, je peux remercier pas mal de personne qui on codé les fonctions AES, MD5 en lua pur, c'est grace à eux que le module fonctionne. J'ai allégé le code pour ne garder que le bon cypher..., les fonctions utiles au protocol MI.

 

J'ai mis pour l'instant une actualisation du VD à 30 secondes lors de la charge de l'aspi et 15 secondes lors du nettoyage, je ne sais pas ce que ça consomme en ressources sur la box mais il y a pas mal de calcul pour l'de/encryption AES.

 

Il y a 3 heures, pepite a dit :

Sympa l'UDP en lua à traiter non ?  ;-)

Pour l'UDP ça va, c'est plus pour l'encryption/dé encryption des paquets MI ou il ne fait pas avoir un bit de travers sinon ça retourne rien d'exploitable :) 

 

Il y a 3 heures, pepite a dit :

BRavo et félicitations ;-) et si en plus tous les produits Xiaomi fonctionnent de la même facon, t'as déjà tout fait.

Et oui je pense que la scène peut être commune à plusieurs VD Xiaomi (voir dupliquer la scène) comme c'est le même protocol si je ne me trompe pas, la scène va faire l'encryption/désencryption de paquet et le VD la communication avec l'objet connecté Xiaomi. Je n'ai que l'aspi, mais je pense que ça doit fonctionner avec le purificateur d'air et d'autres objets, il suffit de changer la method dans le bouton du VD (get_status...) et d'adapter la réponse.

 

Il y a 14 heures, lamparo a dit :

Il ne me reste qu'à commander le robot !!

J'ai fais exprès de le mettre en ligne avant le Black Friday Week :), j'ai vu la v1 ce matin à 213€ ici

 

Il y a 3 heures, pepite a dit :

PS : J'oubliais, tu as économisé 6 euros ;-)

Oui faible économie, mais j'ai appris beaucoup :) (comme disais Mamie, il n'y a pas de faible économie :D )

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Tu as dû y passer un temps fou à développer ça seul devant ton PC, si ta femme savait ça, elle aurait peut être préféré que tu dépenses 6€ :D

 

Bon moi je me tate à le prendre ce robot, avec la promo chez gearbest ça semble intéressant.

Pour la mise en service, ça se passe comment, c'est toujours une application mobile en chinois ou y'a un truc un peu plus WAF maintenant ?

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Les bornes virtuelles :P

Tu peux sur l'app, définir tes zones où il ne doit pas aller par exemple alors que sur le premier c'est un détection magnétique à placer sur le sol (ou sous le parquet par exemple). Et de ce que j'ai compris c'est dû à une cartographie améliorée.

Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, Lazer a dit :

Tu as dû y passer un temps fou à développer ça seul devant ton PC, si ta femme savait ça, elle aurait peut être préféré que tu dépenses 6€ :D

 

Oui clair j'ai passé pas mal de temps, Je lui demanderais ce soir :D (mais je pense que la réponse sera, dans tous les cas tu y serais quand même allé sur le PC...)

 

Mi home, c'est l'application @Lazer, en anglais. La jonction avec le cloud se fait via l'appli et faut configurer ensuite le robot pour parler Anglais. Une fois la clé récupérer la communication avec le Robot et la Fibaro se fait en direct sans passé par le cloud.

 

La V2 à aussi l'option "lavage" en plus (https://www.maison-et-domotique.com/77167-xiaomi-smart-robot-vacuum-cleaner-new-generation/)  

Lien vers le commentaire
Partager sur d’autres sites

je ne peux pas télécharger le VD @ADN182

ca me dit : 

Désolé, il y a un problème
La page que vous tentez d’atteindre n’est pas disponible pour votre compte.
Code d’erreur  2C171/1

Peux-tu l'uploader sur weTransfer ou simili ?

Modifié par Eliah
Lien vers le commentaire
Partager sur d’autres sites

Hello @Eliah,

 

Peux tu réessayer, selon la façon dont tu upload la PJ sur le forum il y a un problème de droit. Je viens de modifier mon post et re-uploader la pj. En principe ça passe désormais.

 

J'ai également changé l'agencement du post en mettant la scène sous forme de fichier, c'est plus lisible

 

 

 

Modifié par ADN182
  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

effectivement ca marche mieux :) 

 

J'ai fait l'install et ca marche impec ! encore un grand bravo pour le boulot !

 

( PS : si tu t'ennui j'ai un gros challenge pour toi @ADN182 avec la serrure TheKeys.. ^_^ à priori compatible requette HTTP via une API mais j'y comprends rien de rien !

https://www.domotique-fibaro.fr/topic/10196-the-keys/?tab=comments#comment-176406 )

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Dis donc @ADN182, je vois que tu utilises Net.FUdpSocket(), et notamment la fonction read()

Tu n'as pas tu de problème, le read() fonctionne sans souci ?

 

Parce que l'année dernière, quand j'avais développé mon code pour faire du SNMP, le read() ne fonctionnait pas.... il semble donc que Fibaro a corrigé le bug ?

C'est très intéressant, ça me permettrait de simplifier mon code car il avait fallu que je contourne le problème.

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Dis donc [mention=28]ADN182[/mention], je vois que tu utilises Net.FUdpSocket(), et notamment la fonction read()
Tu n'as pas tu de problème, le read() fonctionne sans souci ?
 
Parce que l'année dernière, quand j'avais développé mon code pour faire du SNMP, le read() ne fonctionnait pas.... il semble donc que Fibaro a corrigé le bug ?
C'est très intéressant, ça me permettrait de simplifier mon code car il avait fallu que je contourne le problème.
Hello@Lazer oui j'utilise la fonction Net.FUdpSocket() dans mon VD, celle-ci fonctionne , j'ai rajouté un timeout et j'ai quand même rajouter une boucle dans le cas où la trame udp n'est pas reçu. Mon robot ne doit pas bien capté le wifi et je perd quelque fois quelques paquets . Je pense que oui tu peux l'utiliser moi il envoi pas mal de paquet par jour ;)

Envoyé de mon Nexus 5X en utilisant Tapatalk

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Hello ADN182.

 

Merci beaucoup pour ce post. Ça fonctionne du tonnerre !

Merci beaucoup pour le partage! 

 

Juste un détail, je ne vois pas ou je peux mettre l'ID de mon icone dans le VD.

Du coup j'ai un carré bleu au lieu du robot.

 

Par contre sur cette vidéo (Je ne sais pas qui l'a mise en ligne)

Mais l'icone change selon le status.

 

Je ne sais pas si y a possibilité de faire également la même chose.

 

 

Lien vers le commentaire
Partager sur d’autres sites

Hello Antho,

Alors si tu veux la changer pour mettre la même icône il faut éditer le vfib et remplacer le numéro de mon id d'icône par ton numéro . Après tu peux simplement changer chaque icône de chaque bouton.

Alors je ne suis pas l'auteur de la vidéos, il utilise bien mon VD et à renommer le bouton ainsi qu'ajouter ces propres icônes , je n'ai pas eu le temps de faire des icônes pour chaque événement. Mais tu peux demander à cette personne qu'elle te partage ces icône

Envoyé de mon Nexus 5X en utilisant Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Reçu l'aspirateur Xiaomi au bout de 2 mois !!! Record battu ! Un périple fou collé tout contre ses nombreux congénères à travers la Russie enneigée. Je pense qu'il est arrivé en roulant, tout simplement :rolleyes:

Commandé au Black Friday ! La bonne nouvelle c'est qu'il n'y a plus que 10 mois à attendre pour le prochain Black Friday :2:

Celui de 1ère génération.

Il fonctionne, est plus silencieux que le Roomba. Ils se sont fait leur premier bisou :wub: puis se sont tournés le dos :huh:

  • Like 3
  • Haha 2
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...