Je n’arrive pas à trouver l’info : je viens d’acheter un Roborock S50 V2 et Mi Home propose de sauvegarder la carte, chose qui n’était pas possible au tout début. De ce fait, le Roborock devait à chaque fois générer une nouvelle carte, pouvant ainsi créer des problèmes sur les clean zone à cause des coordonnées obsolètes de par une rotation de la carte.
La sauvegarde de la carte permet elle d’éviter sa rotation et donc de simplifier la création des clean zone dans Jeedom ?
C’est surtout qu’avec le dernier firmware en plus de sauvegarder les cartes, tu peux créer directement des zone/pièces donc ça serait top de les utiliser directement via les « ID » dans via Jeedom
exemple d’un retour sur HFR d’un utilisateur de Home Assistant
Pour jeedom je ne sais pas pour l’ID des pièces mais pour Home Assistant il y a bien le service vaccum_cleaner.send_command qui prends en charge les pièces avec un ID numérique. Exemple :
Via Mi Home on peut créer des zones mais je n’ai pas trouver de solution pour les récupérer via Jeedom, du coup je tâtonne avec la commande gothere pour trouver les coordonnées qui détermineront ma zone à nettoyer mais je ne veux pas que la rotation de carte vienne tout casser. J’aimerai surtout savoir si ce problème de rotation de carte était encore d’actualité avec le dernier firmware.
Perso avec le Mi 1S (qui est identique au S50 sans la serpillière et fonctionne avec le plugin en simulant un S50) je n’ai plus de rotations de carte une fois qu’elle est enregistrée.
Toutefois compte tenu que c’est possible de récupérer les ID des pièces dans le STYJ02YM cela aurait été sympa de l’avoir également sur les Roborock.
Bonjour à Tous, j’ai récemment effectué une mise à jour de mon Roborock S5 v2 en v3.5.7_002008 avec le logiciel FloleVac afin de bénéficier des Zones dans Xiaomi Home sur mon Téléphone portable. L’Idéal serait maintenant de pouvoir l’intégrer dans le plugin Xiaomi Home en y intégrant la nouvelle commande.
Voici les informations que j’ai pu récupérer sur internet :
" So, originally my scripts were set up using the « app_zoned_clean » command like so:
I discovered an alternative command for xiaomi vaccums, « app_segment_clean » which essentially tells it vacuum a room that is set up within the map via the Mi Home app itself.
Each room is assigned a number (I believe 1 through 30 is the range, but mine didn’t start until 16 and ended at 26). My scripts now look like this:
vacuum_dining:
alias: « Vacuum Dining Room »
sequence:
- service: vacuum.send_command
data:
entity_id: vacuum.xiaomi_vacuum_cleaner
command: app_segment_clean
params: [23]
"
Si cela peut aider Lunarok à l’intégrer dans son excellent plugin, j’en lui serai extrêmement reconnaissant.
J’ai modifié le .json du vaccum2 en remplacant la commande Go there que je n’utilisais pas :
En remplacant la request : « app_goto_target » par « app_segment_clean » je peux lancer les nettoyages par segments qui correspondent aux nettoyages de pièces en mettant l’ID de la pièce désirée sans parenthèses dans la zone texte.
Après faut retrouver les id des pièces à la main. Comme dans l’exemple pour moi ça commence à 16.
A priori les pièces générés automatiquement sont à partir de 1 et les pièces qui ont été générées par l’user en splittant est à partir de 16.
On peut également enchaîner le pièces en mettant par « 16,17 » pour enchaîner la pièce 16 et la 17.
Par contre j’ai pas trouvé dans le forum HA de commandes pour la gestion des cartes sauvegardées donc pas sur qu’on puisse les gérer comme pour le STYJ02YM.
Donc pour en profiter il faudrait juste rajouter une fonction nettoyage par pièces avec les paramètres ci-dessus et ça fonctionne nickel. @Lunarok est-ce envisageable ? Et si non faudra-t-il remplacer le *.json modifié à chaque mise à jour du plugin ?
En fouillant sur les forums j’ai trouvé 2 liens avec lesquelles on peut trouver les différentes commandes disponibles ainsi que le code des commandes de l’addon de HA les reprenant :
Pour ceux qui ont donc mis à jour le Roborock S50 en firmware 3.5.7_002008 ou qui ont le Vaccum Mi 1S il y a donc des fonctions manquantes dans le plugin Xiaomi Home :
Le nettoyage par zones definies dans l’appli Mi Home sans passer par les coordonnées (voir ci-dessus) en utilisant la request : « app_segment_clean ».
Mais également le nouveau firmware permet d’enregistrer 3 cartes. Et il existe la possibilité d’utiliser une commande pour changer de cartes en utilisant la request : « recover_map ». Son fonctionnement est le même que pour le nettoyage de zone dans une zone texte. Les id sont 1,2,3 pour chaque cartes.
J’ai testé en modifiant la commande « trouver » que je n’utilisais pas et cela fonctionne parfaitement.
Je pense que ce serait quand même une amélioration majeure car ces fonctions étant implémentées dans le Viomi (ce qui prouve leur intérêt) je pense que pas mal de monde pourrait les trouver utiles sur le S50 qui est je pense un des robots le plus utilisé via le plugin.
De plus cela pourrait permettre à ceux ayant des étages de gérer des cartes de différents étages via Jeedom.
Je pense d’ailleurs que cela doit fonctionner pour les possesseurs du S6/T6 ou S5 Max qui partage à priori beaucoup de fonctionnalités avec le nouveau firmware du S50.
En espérant que ces fonctions présentes dans le Viomi soit ajoutées pour le S50 sachant qu’elle sont présentent dans HA depuis plus de 6 mois.
@lunarok, si tu souhaites pas les ajouter pourrais-tu indiquer comment rajouter des commandes dans un device de ton plugin car j’ai l’impression que l’édition du vaccum2.json ne soit suffisante pour en créer ex-nihilo et un peu long de chercher comment tu crées des commandes car rien n’est indiqué dans la documentation si on veut aller plus loin qu’une simple utilisation du plugin ?
Compte tenu que l’on a pas de retours du développeur sur ces évolutions dans le plugin nativement voici les étapes pour créer la commande « Nettoyage par pièces » permettant de commander les nettoyages par pièces telles que définis dans l’app Mi Home :
1/ Créer un scénario qui va nous permettre de créer la nouvelle commande dans le plugin
2/ Insérer le code ci-dessous :
# aspirateur => id = 230
$xiaomihomeCmd = new xiaomihomeCmd();
$xiaomihomeCmd->setName('Nettoyage par pièces');
$xiaomihomeCmd->setEqLogic_id(230); # remplacer l'id par votre id trouvé précédemment dans VOTRE Jeedom !
$xiaomihomeCmd->setEqType('xiaomihome');
$xiaomihomeCmd->setLogicalId('room_cleaning');
$xiaomihomeCmd->setType('action');
$xiaomihomeCmd->setSubType('message');
$xiaomihomeCmd->setConfiguration('request', 'app_segment_clean');
$xiaomihomeCmd->setConfiguration('params', '[#message#]');
$xiaomihomeCmd->setIsVisible('1');
$xiaomihomeCmd->save();
$scenario->setLog(print_r($xiaomihomeCmd, true));
3/ Exécuter le scénario.
4/ Une fois le scénario exécuté si la commande n’apparaît pas automatiquement on va aller « recréer les commandes » dans l’objet robot du plugin « Sans supprimer les commandes » pour ne pas effacer celles existantes qui servent dans vos scenarii.
5/ Normalement une nouvelle commande apparaît et elle est maintenant dispo pour exécution dans un scénario. Les règles d’utilisation sont déjà expliquées plus haut.
Si vous souhaitez créer celle qui permet de changer la carte par une de celle enregistrée c’est la même méthode en remplaçant la request dans le code.
Je suis tout nouveau sur Jeedom j’ai achete le plugin xiaomi, recupere le token de mon aspi, mais j’aimerai bien ne pas avoir a creer toutes mes zones.
A t on des nouvelles de l’integration pour les pieces ? @lunarok dispo en Beta ou pas prevu ? Sinon je vais regarder la solution de @Luckies10 mais pour l’instant j’ai pas tout compris
Merci ca marche
Si je veux pas avoir a mapper dans ma tete les id pour les pieces je peux faire un scenario par piece avec en dur le no. Ou faire un mappage d’un petit nom vers le no dans le code du scenario ? Pas possible de metre un combo box ?
Dommage que ça soit pas intégré direct
Bon il me reste pas mal de taf pour intégrer les cameras EZVIZ, les sonos, le fire stick, l’echo show 5, et un jour le netatmo (qui est encore dans le placard)
Tant mieux si ça fonctionne au moins ça aura servi à quelqu’un.
Oui le plus simple est de faire un scénario par pièces pour les enregistrer car les N° c’est pas hyper intuitif. Je ne vois pas trop comment interfacer les N° par des mots directement dans les commandes.
Perso je passe par des interactions et IFTTT pour commander les nettoyages par Google Assistant.
Après tu peux utiliser les lignes de codes pour créer directement des commandes dans le robot spécifiques à tes pièces comme par exemple :
# aspirateur => id = 230
$xiaomihomeCmd = new xiaomihomeCmd();
$xiaomihomeCmd->setName('Nettoyage Cuisine');
$xiaomihomeCmd->setEqLogic_id(230); # remplacer l'id par votre id trouvé précédemment dans VOTRE Jeedom !
$xiaomihomeCmd->setEqType('xiaomihome');
$xiaomihomeCmd->setLogicalId('room_cleaning');
$xiaomihomeCmd->setType('action');
$xiaomihomeCmd->setSubType('message');
$xiaomihomeCmd->setConfiguration('request', 'app_segment_clean');
$xiaomihomeCmd->setConfiguration('params', '[16]');
$xiaomihomeCmd->setIsVisible('1');
$xiaomihomeCmd->save();
$scenario->setLog(print_r($xiaomihomeCmd, true));
Comme ça tu créé la commande pour nettoyer direct la pièce 16 par exemple.
Et oui c’est vraiment dommage que cela ne soit pas nativement dans le plugin quand on voit la facilité à le mettre en place.
Après @Lunarok considère toujours mes demandes inutiles quand il daigne me répondre.
Merci, comme j’ai pas encore passe trop de temps sur Jeedom je vais faire un petit essai avec Home assistant. J’ai pas de materiel tres exotique,et je code en C++ et python et pas php, donc le fait d’etre completement ouvert c’est peut etre mieux afin d’eviter ce genre de pb .
Mais qui sait je reviendrais peut etre, j’ai quand meme achete des plugins Sinon j’ai vu qqn qui a migre de Jeedom vers HA et qui utilisait encore son Jeedom pour certains composants.
En tout cas merci mon install avance.
Merci à @Luckies10 pour ces explications détaillées, c’est super intéressant.
Hâte de tester ça !
J’imagine que pour récupérer l’ID des pièces utilisées dans l’application Xiaomi il faut tester les numéros 1 par 1 jusqu’à trouver la pièce souhaitée c’est bien ça ?
Je rejoins tout le monde sur le fait que ça serait vraiment génial d’intégrer ça nativement au plugin. Ça éviterait d’avoir à gérer les rotations de carte.
Oui pour retrouver les ID et surtout à quoi ils correspondent pas le choix de le faire par tâtonnement.
La règle c’est si ce sont des pièces non modifiées par l’user (split ou merge) ça démarre à 1.
Par contre si ce sont des pièces issues de modifs de l’user c’est à partir de 16.
Donc si en testant la 1 tu n’as rien testes directement à partir de la 16.
Pour l’intégration en natif no comment en espérant surtout que lors de MAJ du plugin il ne faille pas tout refaire car là ce serait plus embêtant pour les scénarios déjà créés. Mais toujours aucunes réponses de Lunarok non plus à ce sujet et pas de MAJ depuis donc je ne peux pas encore faire un retour d’expérience.
J’ai implémenté ta solution pour créer une nouvelle commande permettant de nettoyer les pièces et ça fonctionne impec ! Grand merci !
Pour ceux qui galèrent à gérer les IDs de pièces de l’appli Xiaomi: perso j’ai fait ça:
un scénario qui prend en paramètre le tag de la pièce à nettoyer (#piece#)
une condition pour chaque pièce, qui vérifie la valeur de #piece# et appelle la commande Nettoyage par pièces du plugin Xiaomi home en lui passant en paramètre l’ID de la pièce correspondant
(ex: condition if #piece# == « cuisine » → commande « Nettoyage par pièces » avec paramètre « 16 »; ainsi de suite)
Si ça peut inspirer
Pour éviter l’écrasement de cette commande custom suite à jour du plugin Xiaomi home, j’ai bloqué les MAJ de ce plugin.
Espérons que @lunarok passera par là pour jeter un oeil à ce dont on parle ici (en espérant sincèrement que son absence ne soit pas dûe à tout ce qui traine dans l’air en ce moment …)