Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

Aspirateur Roborock S50 => définir les zones de la maison?

Avatar de l’utilisateur
neo64
Timide
Messages : 171
Inscription : 24 nov. 2017, 10:59
Localisation : Bayonne
Contact :

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par neo64 » 04 oct. 2018, 09:15

bizzare : j'étais passsé sur le serveur europe car à un moment xiaomi voulait plus que j'utilise roborock sur le serveur china...

Je vais faire des tests
mon modeste blog : http://neo-domotic.fr

jfr
Timide
Messages : 97
Inscription : 19 nov. 2017, 00:45

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par jfr » 04 oct. 2018, 10:23

ATTENTION RISQUE !! Je ne suis pas responsable en cas de mauvaise manipulation, ceci peut abîmer votre Jeedom en cas d'erreur !

Je vous conseille très très fortement de faire un backup de votre JEEDOM avant de commencer !


Pour ceux qui ont le firmware qui prend en charge le "zone clean" et qui voudraient ajouter la gestion de cette fonctionnalité au superbe plugin de lunarok et sarakha63 (en attendant qu'ils l'intègrent à leur plugin) :
img1.png
img1.png (14.52 Kio) Consulté 3448 fois



Il faut commencer par récupérer l'id de l'objet aspirateur dans Jeedom. Cet id sert dans le code ci-après :
img2.png
img2.png (15.77 Kio) Consulté 3448 fois

J'ai réussi en faisait un scénario avec un code php pour ajouter une nouvelle commande au plugin avec l'ordre "app_zoned_clean" et les coordonnées de la zone que j'ai au préalable identifiées chez moi pour la pièce en question. On peut créer une commande pour chacune des pièces de la maison. Ceci est à exécuter une seule fois pour créer la commande.

Code : Tout sélectionner

# Ajoute la commande "Cuisine" à l'aspirateur avec une clean zone défini sur les coordonnées de la cuisine
# aspirateur => id = 267
$xiaomihomeCmd = new xiaomihomeCmd();
$xiaomihomeCmd->setName('Cuisine');
$xiaomihomeCmd->setEqLogic_id(267);  # remplacer l'id par votre id trouvé précédemment dans VOTRE Jeedom !
$xiaomihomeCmd->setEqType('xiaomihome');
$xiaomihomeCmd->setLogicalId('cuisine');
$xiaomihomeCmd->setType('action');
$xiaomihomeCmd->setSubType('other');
$xiaomihomeCmd->setConfiguration('request', 'app_zoned_clean');
$xiaomihomeCmd->setConfiguration('params', '[[21500,25800,24500,29800,2]]');  # Coordonnées de votre pièce [[bas_gauche_x, bas_gauche_y, haut_droit_x, haut_droit_y, nombre_de_passage (1,2 ou 3)]]
$xiaomihomeCmd->setIsVisible('1');
$xiaomihomeCmd->save();
$scenario->setLog(print_r($xiaomihomeCmd, true));

Ensuite on peut définir une icône pour la commande comme n'importe quelle commande si besoin.

Et un petit clic sur le bouton, et l'aspirateur part nettoyer uniquement la zone que vous avez définie ;-)
img3.png
img3.png (19.01 Kio) Consulté 3448 fois

Le plus compliqué finalement c'est de trouver les coordonnées de chaque pièce de la maison, mais ça c'est pour un autre post...
Dernière édition par jfr le 04 oct. 2018, 13:30, édité 2 fois.

jfr
Timide
Messages : 97
Inscription : 19 nov. 2017, 00:45

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par jfr » 04 oct. 2018, 10:26

Voilà le résultat dans Mi Home après avoir cliqué sur la commande nouvellement créée, on voit la zone donnée à l'aspirateur sur le plan ! On peut donc checker facilement que les coordonnées définies sont correctes :

Image-1.jpg
Image-1.jpg (109.83 Kio) Consulté 3448 fois

Avatar de l’utilisateur
Theking31
Actif
Messages : 1182
Inscription : 21 sept. 2017, 11:13
Localisation : Toulouse - Le Vernet

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par Theking31 » 04 oct. 2018, 10:46

Intéressant...

Et c'est adaptable aux version 1 du robot si on a zone clean dans l'app ?
Jeedom 4.0.23 sur Intel NUC 6CAYH | Linux 4.9.0-11-amd64 | Debian 9.11
Rfxcom | Z-Wave Plus Z-Stick GEN5 | Conbee 2 | => sur hub alimenté
Blea| Brodlink | Xiaomi |ESPeasy | Wifilightv2

jfr
Timide
Messages : 97
Inscription : 19 nov. 2017, 00:45

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par jfr » 04 oct. 2018, 12:50

ATTENTION RISQUE !! Je ne suis pas responsable en cas de mauvaise manipulation, ceci peut abîmer votre Jeedom en cas d'erreur !

Je vous conseille très très fortement de faire un backup de votre JEEDOM avant de commencer !


Pour trouver les coordonnées, il faut y aller en tâtonnant.

Les coordonnées sont définies comme ceci :
[[zone1][zone2][zone_x]...] => on peut définir plusieurs zones, dans ce cas l'aspirateur les fera l'une après l'autre et dans l'ordre

Chaque zone est définie comme suit :
[bas_gauche_x, bas_gauche_y, haut_droit_x, haut_droit_y, nombre_de_passage]
Nombre de passage = 1, 2 ou 3 => nombre de passage que l'aspirateur doit faire dans la zone

Exemple :
[[21500,25800,24500,29800,2][11500,22800,24000,11800,1][26000,25800,28500,39800,3]] => définit 3 zones dont la première fera 2 passages, la seconde 1 passage et la dernière 3 passages

Les coordonnées peuvent faire jusqu'à [52000, 52000] ! Après avoir imprimé mon plan Mi Home, je remarque que sur une feuille A4, 1cm fait environ 650 points de coordonnées.
=> 1unité xiaomi = 1 mm donc 1000 => 1m !

La base de l'aspirateur est environ au milieu du plan [25300, 25400] pour moi, je pense que ça doit être le cas à chaque fois, ce qui laisse la possibilité au plan de pouvoir s'agrandir dans toutes les directions au fur et à mesure que l'aspi découvre l'espace autour de lui...
Donc au début chercher autour du milieu pas trop loin de la base, si on définit un point qui sort du plan on a une erreur de l'aspi disant qu'il ne peut pas atteindre la cible.

Maintenant, comment trouver ses coordonnées ? Personnellement j'ai utilisé la commande spot que j'ai modifiée temporairement pour faire un goto target avec des coordonnées au hasard. Et petit à petit on arrive à trouver les coordonnées de toute la maison.

Commencer par identifier l'id de la commande spot de votre aspirateur. Pour moi, il s'agit de l'id 2601 dans exemple, mais pour vous ce sera différent (!!) :
spot.png
spot.png (12.85 Kio) Consulté 3435 fois

Ensuite utiliser l'éditeur de base de données intégré à Jeedom dans Configuration => OS/DB => Base de données (attention danger, toute mauvaise manipulation ici peut être fatale à votre JEEDOM, je ne suis pas responsable !!) :
sql.png
sql.png (143 Kio) Consulté 3435 fois

Taper la commande SQL suivante dans le requêteur SQL (avec l'id de VOTRE commande spot) :

Code : Tout sélectionner

select configuration from cmd where id = 2601
Noter la configuration actuelle, pour pouvoir remettre la commande spot à la fin !!

Exemple :
select.png
select.png (103.02 Kio) Consulté 3435 fois

Ensuite il ne reste plus qu'à modifier la configuration de la commande spot pour lui faire faire un goto target avec les coordonnées qu'on veut plutôt qu'un nettoyage spot. Pour cela on utilise la commande suivante pour modifier la configuration de la commande spot et faire aller le robot aux coordonnées [21500,25800] :

Code : Tout sélectionner

UPDATE cmd SET configuration='{"request":"app_goto_target","params":"[21500,25800]","timeline::enable":"0","interact::auto::disable":"0","actionConfirm":"0","actionCodeAccess":"","actionCheckCmd":[],"jeedomPreExecCmd":[],"jeedomPostExecCmd":[],"minValue":"","maxValue":""}' where id = 2601
En fait il faut remplacer dans la configuration de VOTRE commande spot :

Code : Tout sélectionner

"request":"app_spot"
par :

Code : Tout sélectionner

"request":"app_goto_target","params":"[21500,25800]"
avec les coordonnées souhaitées. Puis cliquer sur le bouton spot pour faire aller le robot aux coordonnées demandées ! Bonus : l'application Mi Home vous montrera sur le plan la cible visée.

Et recommencer autant de fois que nécessaire pour identifier toutes les coordonnées de la maison ;-)


Et quand on a terminé, remettre la commande spot comme elle était avec un :

Code : Tout sélectionner

UPDATE cmd SET configuration='{"request":"app_spot","timeline::enable":"0","interact::auto::disable":"0","actionConfirm":"0","actionCodeAccess":"","actionCheckCmd":[],"jeedomPreExecCmd":[],"jeedomPostExecCmd":[],"minValue":"","maxValue":""}' where id = 2601
=> reprendre la configuration que vous avez noté au départ entre les {} !
Dernière édition par jfr le 04 oct. 2018, 13:38, édité 4 fois.

jfr
Timide
Messages : 97
Inscription : 19 nov. 2017, 00:45

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par jfr » 04 oct. 2018, 12:57

Theking31 a écrit :
04 oct. 2018, 10:46
Intéressant...

Et c'est adaptable aux version 1 du robot si on a zone clean dans l'app ?

C'est le même protocole pour V1 et V2 visiblement :-)
https://github.com/marcelrv/XiaomiRobotVacuumProtocol

doudouhightech
Timide
Messages : 13
Inscription : 29 mai 2017, 21:20

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par doudouhightech » 04 oct. 2018, 13:09

Bonjour,

J'ai l'impression que pour l'instant seule la V2 peut utiliser les zones et avoir le Français, y a t-il parmi vous des possesseur du V1 qui ont le français et/ou les zones ?

Avatar de l’utilisateur
Theking31
Actif
Messages : 1182
Inscription : 21 sept. 2017, 11:13
Localisation : Toulouse - Le Vernet

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par Theking31 » 04 oct. 2018, 16:13

J'ai les zones mais pas le français => V1
Jeedom 4.0.23 sur Intel NUC 6CAYH | Linux 4.9.0-11-amd64 | Debian 9.11
Rfxcom | Z-Wave Plus Z-Stick GEN5 | Conbee 2 | => sur hub alimenté
Blea| Brodlink | Xiaomi |ESPeasy | Wifilightv2

cyril5689
Timide
Messages : 42
Inscription : 22 nov. 2017, 17:23

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par cyril5689 » 04 oct. 2018, 16:47

J'ai le Français, mais pas la maj des zones ==> V2 (serveur europe)

mortyre
Actif
Messages : 1246
Inscription : 17 mai 2016, 16:51

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par mortyre » 04 oct. 2018, 20:15

@jfr Marche nickel pour ajouter la commande et lancer la zone de clean :-)

Ton mode serpillière c'est toi qui l'a ajouté ?
PROD: NAS1815+ VMM Buster 10.2 / Jeedom 4.0.31 / MariaDB 10.3.18 / PHP 7.3.9
DEV: DIY Odroid C2 16gb Strech 9.11 / Jeedom 4.x Alpha / MariaDB 10.1.41 / PHP 7.0.33

doudouhightech
Timide
Messages : 13
Inscription : 29 mai 2017, 21:20

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par doudouhightech » 04 oct. 2018, 21:02

Je confirme que la méthode proposée par Jfr fonctionne parfaitement sur un v1.

jfr
Timide
Messages : 97
Inscription : 19 nov. 2017, 00:45

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par jfr » 04 oct. 2018, 21:23

mortyre a écrit :
04 oct. 2018, 20:15
@jfr Marche nickel pour ajouter la commande et lancer la zone de clean :-)

Ton mode serpillière c'est toi qui l'a ajouté ?
Heureux que ça fonctionne en V1 et V2 ;-)
Le mode serpillière est arrivé tout seul à l'ajout de mon aspirateur (V2) dans le plugin, je n'ai rien fait de spécial.

Voici la configuration de ma commande si ça peut servir :
serpillière.png
serpillière.png (307.15 Kio) Consulté 3382 fois

Avatar de l’utilisateur
Theking31
Actif
Messages : 1182
Inscription : 21 sept. 2017, 11:13
Localisation : Toulouse - Le Vernet

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par Theking31 » 05 oct. 2018, 12:40

Merci pour ce tuto et pour ta trouvaille :roll: 8-)

Marche nikel sur V1 (zone cleanup)...

Bon pas évident de trouver les coordonnées mais une fois que c'est fait, c'est que du bonheur et encore plus avec ifttt et GH.


Chapeau bas :!:
Jeedom 4.0.23 sur Intel NUC 6CAYH | Linux 4.9.0-11-amd64 | Debian 9.11
Rfxcom | Z-Wave Plus Z-Stick GEN5 | Conbee 2 | => sur hub alimenté
Blea| Brodlink | Xiaomi |ESPeasy | Wifilightv2

doudouhightech
Timide
Messages : 13
Inscription : 29 mai 2017, 21:20

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par doudouhightech » 05 oct. 2018, 13:09

De mon coté, j'ai un petit soucis. J'avais définis différentes zones, et j'ai relancé un nettoyage "classique" ce qui a régénéré la carte et évidement elle n'avait pas la même orientation que lorsque j'ai définis mes zones. Donc évidement les zones ne correspondent plus.
Je ne sais pas si on peut résoudre ce problème et si je suis le seul à rencontrer ce problème.
Pour info j'ai la V1 donc je ne peux pas sauvegarder la carte.

jfr
Timide
Messages : 97
Inscription : 19 nov. 2017, 00:45

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par jfr » 05 oct. 2018, 13:38

doudouhightech a écrit :
05 oct. 2018, 13:09
De mon coté, j'ai un petit soucis. J'avais définis différentes zones, et j'ai relancé un nettoyage "classique" ce qui a régénéré la carte et évidement elle n'avait pas la même orientation que lorsque j'ai définis mes zones. Donc évidement les zones ne correspondent plus.
Je ne sais pas si on peut résoudre ce problème et si je suis le seul à rencontrer ce problème.
Pour info j'ai la V1 donc je ne peux pas sauvegarder la carte.
Visiblement c’est un problème rencontré par pas mal de monde quand on parcoure les forums :-( je n’ai pas encore rencontré le soucis. La solution proposée par certains c’est de ne faire que du zone clean qui utilise la map existante sans la recréer.

Avatar de l’utilisateur
Theking31
Actif
Messages : 1182
Inscription : 21 sept. 2017, 11:13
Localisation : Toulouse - Le Vernet

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par Theking31 » 05 oct. 2018, 14:13

Arrf... c'est ballot ça, j'viens d'y passer 2h :cry:

Qu'est ce qui fait que l’orientation de la carte change ?
Jeedom 4.0.23 sur Intel NUC 6CAYH | Linux 4.9.0-11-amd64 | Debian 9.11
Rfxcom | Z-Wave Plus Z-Stick GEN5 | Conbee 2 | => sur hub alimenté
Blea| Brodlink | Xiaomi |ESPeasy | Wifilightv2

GreenJu
Timide
Messages : 205
Inscription : 16 avr. 2015, 16:10

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par GreenJu » 09 oct. 2018, 23:21

Bonsoir à tous,

J'ai pour ma part un v1, qui fonctionnait très bien jusqu'à y'a pas si longtemps.
En fait, j'ai un amis qui a le même appareil que moi (on l'a commandé à qq jours d'intervalle) et qui lui avait la fonctionnalité des zones (moi pas).

En comparant ce qui était différents entre nos deux configs, il était sur Main China et moi sur Other. J'ai changé de serveur pour passer sur Europe.
Et là Oura j'ai bien les zone cleanup sur l'appli.
j'ai récupéré le token via la méthode Iphone/iOS, mais là pas moyen de faire fonctionner dans Jeedom.

Je suis du coup passé sur China, même soucis, puis retour sur Other, tjours la même (mais j'ai conservé les zones).

Est-ce qu'il y a un moyen de récupérer un token fonctionnel pour de nouveau lancer l'aspi depuis Jeedom?

Merci à vous pour les suggestions.

Edit: j'ai tenté de recréer toutes les commandes à chaque fois que j'ai changé de serveur mais ça ne change rien du tout

jfr
Timide
Messages : 97
Inscription : 19 nov. 2017, 00:45

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par jfr » 10 oct. 2018, 21:13

Greenju => quelle version de Mi Home ? tu as bien un token version crypté qu'il faut décrypter ?

GreenJu
Timide
Messages : 205
Inscription : 16 avr. 2015, 16:10

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par GreenJu » 10 oct. 2018, 21:41

jfr a écrit :
10 oct. 2018, 21:13
Greenju => quelle version de Mi Home ? tu as bien un token version crypté qu'il faut décrypter ?
version 4.8.7 pour MiHome

Comment je sais si mon Token est chiffré?
Je l'ai mis tel quel dans l'interface. En utilisant la méthode iOS, le principe c'est de récupérer la sauvegarde du téléphone pour aller recupérer l'id dedans.

Au passage, du coup j'ai restauré un backup d'avant mes bidouilles, j'ai récupéré le token qui fonctionnait auparavant, mais cela ne fonctionne toujours pas.

jfr
Timide
Messages : 97
Inscription : 19 nov. 2017, 00:45

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par jfr » 10 oct. 2018, 22:01

Dans les versions récentes de Mi Home le token est chiffré, il faut le déchiffrer avant de pouvoir l'utiliser.
S'il fait 96 caractères => il est chiffré !
La version en clair (déchiffrée) du token fait 32 caractères.

https://vdays.net/fr/2017/09/28/tuto-je ... ken_crypte

Sinon voici un petit script en python 2.7 pour déchiffrer son token (renseigner le token à l'endroit indiqué dans le script entre les '') :

Code : Tout sélectionner

from Crypto.Cipher import AES
import binascii
keystring = '00000000000000000000000000000000'
iostoken = 'METTRE SON TOKEN DE 96 CARACTERES ICI'
key = bytes(bytearray.fromhex(keystring))
cipher = AES.new(key, AES.MODE_ECB)
token = cipher.decrypt(bytes(bytearray.fromhex(iostoken[:64])))
print(token)
Puis exécuter le script qui affichera le token déchiffré :

Code : Tout sélectionner

# python nom_du_script.py

Répondre

Revenir vers « [Plugin Tiers] Xiaomi Home »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 28 invités