Salut à tous, aujourd’hui on va parler aspirateur Xiaomi. En effet on va voir comment piloter votre aspirateur Xiaomi zone par zone. En effet quoi de plus génial de demander par exemple à Google ou Alexa : « Actives l’aspirateur du séjour vers la litière des chats » par exemple. Ou d’avoir un agenda qui pourra envoyer l’aspirateur les soirs uniquement autour de la table du salon.

C’est là qu’intervient Patrick. Patrick est un utilisateur de Jeedom, modérateur de la section Enocean du forum Jeedom et j’en passe. Ce besoin il l’avait et il m’en a parlé. Il a voulu tellement pousser loin la chose que l’idée d’un tuto a surgit tout naturellement. Et pour ceux qui ont une disposition de pièces qui peut engendrer des rotations de la carte, pas de soucis le tuto pense à tout. Si vous n’avez pas ce phénomène (moi je l’ai pas), vous pouvez ignorer tout ce qui concerne la rotation, sinon attardez vous dessus.

Piloter votre aspirateur Xiaomi zone par zone

Je vous préviens le tuto va très loin alors prenez un doliprane, mettez l’article en favori et revenez y aussi souvent que nécessaire. J’insiste sur un point sans prendre en compte l’éventuelle rotation de la carte, cela devient bien plus simple et c’est franchement grisant d’avoir cette notion de domotisée.

Piloter votre aspirateur Xiaomi zone par zone

L’objectif de ce tuto est de mettre en place une solution nous permettant d’envoyer (à partir de Jeedom) notre robot faire le nettoyage d’une zone particulière (ou de plusieurs) mais aussi d’aller se rendre à un point précis (comme par exemple devant la poubelle quand on veut le vider) !

Avant de pouvoir faire tout ça, il y a un certain nombre de difficultés à résoudre à cause de certaines limitations des V1 :

  1. Sur les V1, on ne peut pas mémoriser la carte qui va de temps en temps faire des rotations dont on a aucune maîtrise
  2. Lorsque la carte tourne, toutes nos coordonnées ne sont plus exploitables
  3. Il n’y a aucun outil permettant d’identifier les zones facilement
  4. Le plugin Xiaomi, ne dispose pas (je devrais maintenant dire ne disposait pas) de commandes GotoThere et CleanZone

Concernant les commandes utiles, c’est maintenant déjà réglé, grâce à la réactivité de Ludo qui a bien voulu intégrer ces deux nouvelles commandes (indispensables pour exploiter ce tuto sans devoir modifier directement le code du plugin Xiaomi Home) :

Piloter votre aspirateur Xiaomi zone par zone

Piloter votre aspirateur Xiaomi zone par zone1 : Définir les zones de nettoyage

La première des choses à faire maintenant, c’est de définir toutes les zones qui nous intéressent dans un scénario…

Après avoir créé un nouveau scénario, ajoutez un bloc code.

Nous allons créer dans notre bloc Code un petit tableau contenant toutes les zones dont nous pourrions avoir besoin…

Vous pourrez bien-sûr faire évoluer ce tableau par la suite, mais avec un seul impératif :

Toutes les valeurs doivent être définies avec le même angle de rotation, c’est-à-dire un angle égal à zéro lors de la création car nous n’avons pas encore fait de rotation.

Plus tard, quand vous serez confrontés à une rotation de la carte, il faudra juste mettre à jour cette information : le nouvel angle de rotation…

Commençons donc par créer notre tableau PHP avec cette commande :

Piloter votre aspirateur Xiaomi zone par zone

Puis on va pouvoir entrer les coordonnées de chaque zone identifiée selon le format suivant :

$coordonnees[‘NOM_UNIQUE DE MA ZONE’][] = « Bas_X,Bas_Y,Haut_X,Haut_Y,NbreDePassages »;

Exemples :

$coordonnees[‘R2D2_ENTREE’][] = « 27200,29300,29750,30500,1 »;

$coordonnees[‘R2D2_CUISINE’][] = « 27900,30700,29900,35700,1 »;

et $coordonnees[‘R2D2_SALON’][] = « 26300,24100,29750,29200,1 »;

$coordonnees[‘R2D2_SEJOUR’][] = « 23400,24100,26150,29200,1 »;

On peut aussi avoir une zone composée de plusieurs zones (par exemple une zone en L ou en U), dans ce cas, on ajoute la zone supplémentaire sous le même nom :

$coordonnees[‘R2D2_COULOIR’][] = « 26300,30500,27100,31500,1 »;

$coordonnees[‘R2D2_COULOIR’][] = « 22300,29300,27100,30500,1 »;

Voici donc une zone nommée ‘R2D2_COULOIR’ qui contient en fait 2 zones …

Pour info, en faisant cela, nous avons créé une zone [‘R2D2_COULOIR’][0] et une zone [‘R2D2_COULOIR’][1]

De la même manière, une fois mes zones initiales créées, je vais pouvoir faire de nouvelles zones comportant d’autres zone déjà définies :

Ici une zone contenant deux pièces définies plus haut (vous noterez qu’on indique ici le [0] pour bien avoir l’élément de la zone) :

$coordonnees[‘R2D2_PIECEDEVIE’][] = $coordonnees[‘R2D2_SEJOUR’][0];

$coordonnees[‘R2D2_PIECEDEVIE’][] = $coordonnees[‘R2D2_SALON’][0];

En plus des CleanZone, nous pouvons aussi définir des coordonnées pour envoyer notre robot à un endroit précis. Par exemple quand Jeedom me signale que son réservoir est plein (on verra éventuellement voir comment faire ça plus tard), je l’envoie automatiquement (par commande vocale) se garer devant la poubelle (ce qui m’évite de devoir traverser toutes les pièces avec le bac à poussières) ! 😊

Piloter votre aspirateur Xiaomi zone par zone : Créons nos zones !

Piloter votre aspirateur Xiaomi zone par zone

Pour identifier les coordonnées X,Y de la zone nous connaissons déjà quelques informations:
  1. Les points identifiant les zones sont toujours définis selon les coordonnées BAS_X, BAS_Y, HAUT_X, HAUT_Y d’un rectangle (ou carré).
  2. Le point central théorique de la carte est 25000,25000.
    On verra que ce centre peut légèrement être décalé, mais cela n’a pas d’impact tant que l’on n’a pas fait de rotation de carte (donc on s’en occupera plus tard) …
  3. Chaque point recherché se trouve à l’intersection de X et de Y sachant que plus j’augmente X plus je vais vers la droite de la carte, et plus j’augmente Y, plus je vais vers le haut de la carte.
  4. En termes d’échelle, 1 mètre équivaut environ à 926 points sur la carte
    (ou 1000 points représentent environ 108cm)

On va donc rechercher déjà le point (x,y) en bas à gauche du rectangle représentant notre première zone, puis on fera de même avec le point en haut droite…

Il faut faire cette recherche de manière empirique pour le moment car je n’ai pas trouvé de solution de récupération de la carte du robot sans devoir le rooter…

Mais pour cela on va pouvoir s’aider de l’application MiHome (ou de FloleVac) :

On va rechercher les coordonnées X,Y (inférieur/gauche de la zones) et les saisir dans notre commande GoThere, par exemple 27200, 29300 (les deux valeurs x,y simplement séparées par une virgule).

Puis on clique sur GoThere et simultanément, et on regarde aussitôt sur la carte de notre application mobile pour voir ou tombe notre drapeau (et on peut tout de suite faire pause sur l’appli car il n’est pas utile de faire aller le robot jusque-là, on veut juste identifier la position sur la carte).

Si le drapeau n’est pas bien situé, il suffit ajuster ces coordonnées jusqu’à ce que le point (x,y) corresponde bien au bord inférieur gauche de notre zone !

Et on fait de même pour le second point (x,y) en haut à droite…

Ensuite on va vérifier notre zone sur la carte en saisissant dans ZoneClean les 4 valeurs avec des accolades autour, ainsi que la valeur indiquant le nombre de passages que le robot devra faire sur cette zone, sur le modèle

[BAS X, BAS Y, HAUT X, HAUT Y, Nbre de Passage]

Ce qui pourrait donner par exemple une zone comme ceci :

[27200,29300,29750,30500,1]

Piloter votre aspirateur Xiaomi zone par zone

On valide ensuite pour lancer le ZoneClean et on voit apparaître notre zone sur la carte de l’application mobile afin de vérifier que notre zone est bien comme désirée…

Nous pouvons donc reporter cette zone dans notre tableau PHP :

$coordonnees[‘R2D2_ENTREE’][] = « 27200,29300,29750,30500,1 »;

… Et on recommence pour définir toutes nos zones !

Donc, à la fin, on se retrouve avec notre tableau qui contient toutes nos « CleanZone », mais aussi éventuellement des « GoThere » (si besoin) :

Piloter votre aspirateur Xiaomi zone par zone

Piloter votre aspirateur Xiaomi zone par zone : Créer un virtuel et définir les zones de nettoyage

Pour la suite, nous allons avoir besoin de pouvoir lire ou écrire (stoker) quelques informations supplémentaires, donc on va tout simplement se créer un équipement virtuel (avec le plugin Virtuel bien sûr !) afin de pouvoir facilement intervenir sur ces éléments.

Nous allons avoir besoin de créer les commandes INFO suivantes dans notre Virtuel :
  • Rotation_map contiendra la valeur de l’angle de rotation de la carte
  • L’angle de rotation relative de la carte (égal à 0 lors de la création initiale des zones)
  • Le centre X de la carte pour faire notre rotation (par défaut 25000)
  • Le centre Y de la carte pour faire notre rotation (par défaut 25000)
  • Les coordonnées de notre zone ou GoThere après avoir fait la rotation
  • Et optionnellement la surface aspirée depuis la dernière vidange du robot. (si on veut être avertit quand le robot est plein) …

Piloter votre aspirateur Xiaomi zone par zone

Pendant qu’on y est, et pour se faciliter la vie, on peut aussi en profiter pour créer les commandes ACTION suivantes :

  • Rotation Map qui nous permettra de modifier depuis le dashboard l’angle de rotation de la carte (en lien avec notre commande info rotation_map)
  • Et idem pour ajuster si besoin les centre X et Y (en lien avec leur commandes info respectives)

Piloter votre aspirateur Xiaomi zone par zone

Ce qui nous donnera sur le Dashboard quelque chose comme ça pour régler facilement le tout :

Piloter votre aspirateur Xiaomi zone par zone

Piloter votre aspirateur Xiaomi zone par zone : Le script (dans un scénario )

On va pouvoir ainsi récupérer les infos dont nous aurons besoin avec ce petit bout de code dont le rôle sera :

  1. De lire, dans le virtuel, le contenu de « Ordre »,
  2. et de lire, dans le virtuel, la valeur (X,Y) du centre de la carte,
  3. de lire, dans le virtuel, l’angle de rotation au moment où ce lance le scénario,

Piloter votre aspirateur Xiaomi zone par zone

Il ne nous manque plus qu’à ajouter les fonctions utiles dans notre bloc code. A commencer par la fonction de rotation (à la suite de notre tableau) :

Piloter votre aspirateur Xiaomi zone par zone

Cette fonction reçoit en argument les coordonnées X et Y d’une position, l’angle de rotation à appliquer, et la position du centre (x,y), et elle va juste nous retourner un tableau (x,y) de ce point après rotation.

Note : Vous pouvez commenter les lignes 51 et 52 (que j’ai rajouté car j’ai légèrement déplacé mon dock après création des zones)

On va ensuite ajouter une fonction qui va à partir du tableau des coordonnées :
  1. Lire les coordonnées de la zone « $quoi »,
  2. Lui appliquer l’angle de rotation (défini dans notre virtuel),
  3. En se basant sur les centres X et Y de notre carte,
  4. Pour générer les coordonnées après (l’éventuelle) rotation :

Piloter votre aspirateur Xiaomi zone par zone

On remarque à partir de la ligne 77, la réorganisation de nos coordonnées pour avoir toujours le bon ordre des valeurs (qui changent après rotation) selon la règle BAS X, BAS Y, HAUT X, HAUT Y

Nous avons maintenant toutes les fonctions et données nécessaires, pour créer le « Job » qui va utiliser tout ça.

Cette dernière partie est celle qui va faire tout le boulot à chaque appel de ce scénario :

  1. Avec les infos précédemment récupérées dans le virtuel, ce bout de code va maintenant appeler la fonction « générer() ». Elle se chargera d’appeler la fonction Rotate() ce qui va générer les coordonnées réajusté (après rotation éventuelle)
  2. Et, pour finir il va stocker ces nouvelles coordonnées dans la commande INFO « coordonnées » de notre virtuel :

Piloter votre aspirateur Xiaomi zone par zone

C’est fini pour notre bloc Code !!!

Piloter votre aspirateur Xiaomi zone par zone : Le scénario

Maintenant, ajoutons les derniers blocs à la suite de mon scénario :

Si le scénario est lancé avec ORDRE==SALON, (c’est une zone je lance un CleanZone avec mes coordonnées (qui intègrent les éventuelles rotations de la carte),

Et si le scénario est lancé avec ORDRE==POUBELLE, c’est un GoThere. Alors je lance un GoThere, toujours avec mes coordonnées calculées :

Piloter votre aspirateur Xiaomi zone par zone

Notez que j’ai simplifié au maximum la fin du scénario, car c’est à vous de vous l’approprier ! 😉

Pour finir, il ne me reste plus qu’à indiquer à mon scénario qu’il sera lancé à chaque fois que la commande info « Ordre » (de mon virtuel) sera modifiée :

Piloter votre aspirateur Xiaomi zone par zone

Et voilà, pour le lancer, je n’ai plus qu’à rajouter dans mon virtuel autant de commandes ACTION que j’ai zone (ou position) dans mon tableau :

Piloter votre aspirateur Xiaomi zone par zone

J’ai volontairement omis de décrire comment intégrer la gestion du bac de l’aspirateur qu’il faut vider…

D’abord pour ne pas surcharger ce tuto. Et aussi parce que c’est très facile à implémenter. Et enfin cela fera un bon sujet d’échanges sur le blog et sur le forum… 😉



PS : si vous ne voyez pas les nouvelles commandes dans Jeedom : il faut cliquer sur recréer les commandes (en cochant ne pas supprimer les commandes existantes)

Partager sur :

Infos de l'auteur

Je m’appelle Ludovic Sarakha j’ai 32 ans et je suis habitant de Clermont-Ferrand. Concernant les études il faut savoir que bien que j’ai travaillé dans l’informatique (SSII internationale) et maintenant dans la domotique, j’ai un doctorat de Chimie des matériaux. Je suis un autodidacte passioné d'informatique, de domotique et de tout ce qui tourne autour des objets connectés

48 commentaires

  1. Super tuto
    Bon j’ai pas encore tout lu car pas simple
    Je verrai pour lire cela au calme avec une boîte de doliprane
    Mais une mise en œuvre je dit oui
    De quoi passer dans la zone de la litière des chats facilement
    Et 2ème cas exclure la salle de jeux où avoir un sol sans jeux au sol est une utopie

    Merci

  2. Salut,
    C’est sympa, mais comment faire pour retrouver l’angle en cas de rotation de la carte ? Le miens (v2) a souvent ce genre de problème a cause des tapis, ou quelques fois il démarre tout seul avec une rotation de la carte alors qu’il part de sa base… Le top serait qu’on puisse avoir une map de référence (choisi par l’utilisateur), bloquée dans l’aspi (voir dans les parametres de l’appli, il y a un truc a cocher pour bloqué la carte mais c’est en mode beta sur android) et dans jeedom avec un point de base : la base de rechargement. En cas de plantage, rotation, ou autre, il suffirait de le replacer sur sa base.
    Le soucis que j’ai chez moi c’est quand bloquant la carte, l’aspi continu a enregistrer la carte, lorsqu’il fait une rotation ou se bloque, la carte bouge, le point de la base change, etc… Bref un mode beta… Peut-etre bientot une solution de Xiaomi. Ils auraient du penser a vendre des prises gigones pour trianguler la position de l’aspi et de la base de rechargement => pas de problemes de rotation, carte fixe, identification de zones, murs virtuels, zones interdites (non c’est pas de l’émission de M6 que je parle ;D ) , etc…

  3. Ouh! Merci pour ce tuto, ça donne grandement envie!
    Le Xiaomi semble permettre pas mal de chose. Du coup, je m’interroge… je remplacerai bien mon Neato Botvac Connected (D2) qui a tendance à perdre son wifi (et ne pas le réactiver!) un peu trop souvent à mon gout… et qui du coup, empêche son utilisation avec des scénarios…
    Est-ce que le wifi du Xiaomi est fiable? Pas de déco intempestives?
    Merci!

    • J’ai un botvac connected et j’ai le même soucis que toi. Je l’ai jamais eu le soucis sur mes deux xiaomis. Hésite pas à passer par un lien du blog si tu franchis le pas

  4. Super article que je vais m’empresser de mettre en oeuvre.
    Par contre, sauf erreur de ma part, les scripts et scénarios ne sont pas dispos dans l’article (bien entendu dispo en copie d’écran mais ne permettant pas la copie).
    Est-ce qu’il serait possible de les mettre à dispo ?
    Merci d’avance

  5. Bonjour,
    Le problème, c’est que tout le monde n’a pas la fibre du développeur !
    J’ai mis en place ce script, et je t’en remercie. Mais j’ai mis 3h30 ! Tout ca a cause d’un espace a la c.. et d’un  » mal placé.
    Je comprends que vous ne souhaitiez pas dire « vous faites un copier-coller et puis c’est tout ». Mais franchement, la partie « generer » et « rotate » ne m’a rien appris, car je n’y comprends rien !
    J’ai juste mis une plombe à tout recopier avec des erreurs … et m’énerver parce que ca ne marchait pas.
    Honnêtement, vous avez fait un travail de ouf, et vous êtes une aide pour les autres comme personne, mais là, je ne vous comprends vraiment pas.

    • Hallucinant….. Tu critiques car on est pas venu te le faire tout maché…. On réalises on partage on explique on donne un exemple… Mais non en prime faudrait venir linstaller chez les gens. Comme j’ai dit ya une raison a ce que soit pas bêtement copiable car d’expérience un truc comme ça ça se transforme en « copié colle bêtement suivi de 15 mails le jour ou ya des ajustements »

  6. il y a méprise : loin de moi l’idée de critiquer votre travail. Ce n’est absolument pas le but.
    Je donne mon ressenti sur le choix que vous faites de ne pas autoriser le copier/coller d’une partie du script. C’est tout.
    C’est un avis, et n’a pas la prétention de vous faire la leçon. 😉

  7. Je comprend que ce soit frustrant d’avoir galéré pendant 3h30 pour mettre en place cette gestion des zones mais c’est pas cool pour le dev de venir poster ce genre de commentaire.

    Dit toi que sans lui tu aurais rien fait du tout, tu le contrôlerais même pas avec ta domotique ton aspi. Tu as galéré 3h30 mais lui à mon avis il les compte plus ses heures de galère pour trouver des trucs cool comme ça. C’est pas parce qu’il s’y connait en programmation qu’il a pondu ça un dimanche matin en 5min parce qu’il avait rien d’autre à faire. Il a du galérer aussi pour certaines choses. Il pourrait garder tous ces trucs cool juste pour lui et rien partager.

    Je pense que tu n’es pas le seul à galérer à mettre en place ses solutions et MOI le premier mais je vais pas casser le moral du développeur parce que j’ai galéré. Si tout le monde fait comme toi, le développeur il nous dira bien gentiment: « Aller vous faire f… et d’emmerder vous!!! mais vous imaginez même pas comment ça peut être cool la domotique!!! »

    Bref, je pense que tu étais bien énervé sur le coup et t’aurais du t’abstenir de poster ici. La prochaine fois que tu galère tu vas prendre l’air, tu respire un bon coup et tu te dis j’ai galéré mais au final j’ai un truc cool, qui fonctionne et qui va me simplifier les corvées et surtout que j’aurais jamais pu faire par moi même donc MERCI Mr SARAKHA d’avoir partagé votre savoir faire avec nous. Un GRAND MERCI pour ce tuto. Continuez comme ça vous êtes au TOP. => Ça motive le développeur et on en profite tous.

  8. Je n’avais pas fait attention à la commande « GoThere » qui n’était pas disponible à l’époque ou j’ai installé le plugin et je n’avais jamais recréé les commandes depuis le temps… Du coup ça me fait penser que ça serait plutôt cool d’avoir une caméra ip intégré à l’aspirateur, on pourrait alors aller surveiller chaque endroit de la maison ou avec un scénario en cas de détection de présence, l’aspi va voir ce qu’il se passe et nous fait une photo de la zone puis transmet via telegram ou autre.
    Du coup, petite question pour ce qui on déjà bidouillé leur aspi, vous pensez qu’il y aurait la possibilité de se repiquer facilement sur la batterie de l’aspi pour venir alimenter une petite caméra?
    Et vous vous en pensez quoi? vous trouveriez çà plutôt cool ou complétement inutile?

  9. Ce que j’ai appris, c’est qu’à l’écrit, il manque une chose primordiale : le ton

    En effet, si je relis mon texte (en ayant à l’esprit que la personne qui écrit est énervée) => je peux en effet mal le prendre.
    Mais en réalité, je n’étais pas énervé. C’était une réponse au post de sarakha63 qui expliquait le bénéfice de ne pas donner le texte de son script. (D’ailleurs, je ne comprends pas pourquoi mon message ne se positionne pas sous son fil.) Du coup j’argumentais !
    Et si on me relis dans un autre état d’esprit, on peut aussi comprendre le sens de mon intervention.
    Et pour enlever toute ambiguïté : l’erreur évoquée est de ma faute, puisqu’il s’agit d’une mauvaise frappe. Et j’en suis le seul responsable. => mais ça va dans le sens de mes arguments.

    • Allez on oublie. Je comprends la frustration sur certains tutos je donne de quoi copier coller mais souvent je le fais pas. Je préfère détailler le cheminement pour que derrière vous puissiez éventuellement en tirer kkch que vous appliquerai vous même sur autre chose. Alors oui celui là était coton. Je le précise même au début et il était dur de le rendre plus intuitif. Dou je pense la frustration de certains. Sur d’autres tutos où il est plus facile de vraiment donner des exemples et faire un truc didactique et pédagogique le non copier coller a jamais été un soucis.quand je vois des tutos où c’est juste alors j’ai fait avec avec ça puis ça avec ça j’aime pas. Je suis beaucoup plus satisfait quand sur mon telegram je vois des gens me dire « Io ludo je me suis inspiré de ton tuto pour blablanlab complètement autre chose » et là je me dis  » mission accomplished ». Apres celui là était coton dur de faire très didactique et je comprend que certains se perdent. Mais il est la il peut être consulté reconsulté voir venir en parler sur telegram. Mais tkt sans rancune et au fin fond de moi je comprends et Patrick aussi

  10. Salut Saraka63
    nickel le tuto
    par contre je coince un peut j’ai ce msg d’erreur « [2019-03-26 13:39:29][SCENARIO] Call to undefined method virtualCmd::exeCmd() » l’aspi ce lance mais ne va pas au bon endroit sur la carte
    tu peux m’aiguiller?

    ————————————
    [2019-03-26 13:39:29][SCENARIO] Start : Scenario lance manuellement.
    [2019-03-26 13:39:29][SCENARIO] Exécution du sous-élément de type [action] : code
    [2019-03-26 13:39:29][SCENARIO] Exécution d’un bloc code
    [2019-03-26 13:39:29][SCENARIO] Call to undefined method virtualCmd::exeCmd()
    [2019-03-26 13:39:29][SCENARIO] Exécution du sous-élément de type [condition] : if
    [2019-03-26 13:39:29][SCENARIO] Evaluation de la condition : [« NONO_TABLE_CUISINE » == « NONO_TABLE_CUISINE » ] = Vrai
    [2019-03-26 13:39:29][SCENARIO] Exécution du sous-élément de type [action] : then
    [2019-03-26 13:39:29][SCENARIO] Exécution de la commande [Salon/Salle a Manger][Nono][CleanZone] avec comme option(s) : {« background »: »0″, »title »: » », »message »: » »}
    [2019-03-26 13:39:29][SCENARIO] Fin correcte du scénario
    ————————————

  11. Christophe Isnard le

    Moi je n’ai pas encore tout fait mais je suis d’accord avec Sarakha63: on comprend mieux quand on le fait soi même et en faisant des erreurs. Ça permet ensuite d’adapter la chose à ton besoin. Avec un simple copier coller tu ne comprendras pas pourquoi d’un coup ça ne fonctionne pas

  12. benoit gaillardet le

    bonjour

    juste encore un super tuto en plus génial pour qq qui commence a regarder les bases du php. merci !

    je regardais pour poursuivre et gérer les problèmes de bac plein.
    Je ne vois pas par quel bout prendre le soucis – et fait plus enervant c ‘est indiqué : c est facile !  »
    Pourriez vous me mettre sur la voie ?

    Cdt

    @ben

  13. benoit gaillardet le

    voila qui est fait simplement effectivement – j ai opté pour le temps de nettoyage mais même principe j’imagine pour la surface –

    en fait, une simple gestion de variable
    j’ai opté pour un scénario indépendant pour prendre en compte aussi les demandes faites physiquement sur l’aspirateur
    je mets pour le coup a jour les variables et la gestion du bac lors de la détection du retour a la base
    reste juste a régler le seuil au delà duquel il faut considérer le bac plein

    merci de l’aide
    bravo encore pour ces tutos et ce site génial

  14. Content que ce tuto ai pu te rendre service 🙂
    Personnellement, j’ai choisi de prendre la surface aspirée comme repère, parce que pendant le voyage vers la zone ou pour rentrer à la base, l’aspiration est réduite à son minimum (autrement dit, il n’aspire pratiquement rien…
    Mais ton choix peut être aussi intéressant, d’autant que l’on parle ici d’estimations.
    Pour info, quand mon script considère qu’il est plein, il refuse d’obéir à Alexa, et demande qu’on l’envoit vers la poubelle pour se soulager 🙂

  15. Pingback: Inspirations du week-end épisode 8 – Chez skipcool

  16. Bonjour,
    Merci pour ce tuto (même si je ne l’ai pas encore épluché en détail, je le garde dans mes favoris pour le décortiqué lorsque j’aurai du temps devant moi)
    Une question quand même: il manque dans Jeedom les remontées d’informations pour vider le bac à poussière, nettoyer les capteurs, et changer les consommables… comment pourrais-je faire pour récupérer ces informations? (sachant qu’il nettoie lorsque j’arme l’alarme pour passer tranquillement pendant qu’il n’y a personne à la maison, l’idée serait que lorsque je rentre chez moi et que je retrouve mon S50 devant la poubelle, c’est qu’il a besoin de se faire vider le ventre, devant le placard à chiffons quand je dois nettoyer les capteurs, devant l’armoire où je range les accessoires quand il faut changer un filtre ou une brosse)
    Merci encore
    Cordialement

  17. Bonjour, et merci avant tout.

    J’ai 2 soucis, si vous avez une idée :
    -1 : lorsque j’exécute la commande « cuisine » du virtuel, rien ne se passe, je suis obligé d’aller exécuter le scénario et la ça démarre.
    J’ai pourtant bien mis en « provoqué » avec arc le bon événement : #[Hardware][ACTIONS Chintawa][Ordre]#

    -2 : Mon aspirateur démarre fait 2cm et me dit finish cleanup.
    Si je remplace dans le scénario par l’adresse en question (présente dans le code) il fait bien la tache .

    $coordonnees[‘Chintawa_CUISINE’][] = « 23230,27400,27580,30400,1 »;
    > #[Hardware][ACTIONS Chintawa][coordonnees]#

    Des idées ? Vous voyez ou j’ai raté un truc ?

    Merci

  18. Pingback: Aspirateur zone par zone Jeedom

  19. Bonjour, je te remercie pour ce super tuto. Une question de mon coté avant l’implémentation, quand je lance un GoThere 25000,25000 le robot se décalle d’environ 1m de la base. Ce point n’est donc pas le central de toute installation ?
    Merci

  20. Il s’agit d’un point théorique situant le centre de la carte défini dans ton roborock, mais selon la config de tes pièces, cela peut varier un peu.
    Ceci dit, tu n’as pas à t’en préoccupé car tu pourras ajuster la position du centre je jour ou tu auras subi une rotation (ce qui peut-être ne t’arriveras jamais!)…
    😉

  21. Merci pour ton retour !J’ai peut etre mal compris le tuto car pour trouver les coord. de mes zones j’y vais à taton et donc je partais de la référence 25000, 25000 pour ensuite faire les décalages. Faut il s’y prendre autrement ? Merci

  22. Super tuto merci!!

    A priori de mon coté pas de rotation de map, donc voila ce que j ai mis en place:

    1- repérage des coordonnées sur chaque zone (cuisine, salon…) via ta technique avec le gothere et la map sous l appli mihome.
    2- création d une interaction pour chaque zone avec phrase type « passe l’aspirateur dans la cuisine » et action « clean zone » en renseignant les coordonnées repéré a l étape 1- exemple[« 26850″, »30500″, »29500″, »34000″, »1 »]

    Résultat = avec mon google home ou même mon téléphone je demande au roborock d aspirer la zone demandé via ce type de phrase « ok google, maison passe l’aspirateur dans la cuisine »

    et ça fonctionne parfaitement , a voir dans le future si j aurai des rotation de carte et la je me pencherai sur la partie plus difficile de ce tuto

    merci SARAKHA63

  23. Bonjour, je commence à me plonger là dessus mais je suis largué et ne comprend pas toutes ces manipulations. Avant de continuer, je voulais savoir si le robot devait partir de sa base pour pouvoir être piloté par zones ? Ou, après cette manip, en le posant n’importe où dans la maison, saura-t-il s’orienter ?

  24. il saura s’orienter à condition qu’il est fait le chemin par lui même, si tu le portes pour le déplacer, il n’a plus aucun moyen de savoir ou il se trouve (il ne dispose pas de GPS) 😉

    Donc si c’est pour le porter entre les étages de ta maison, par exemple, a marchera pas…

    Si par contre tu l’as déjà envoyé dans une autre pièce, il sera capable à partir de cet endroit, d’aller directement sur la nouvelle zone que tu lui donnes sans repasser par sa base…

  25. Salut et merci pour le tuto
    Je pense avoir un petit problème dans mon code et je pense que sa ce situe entre les ligne 65 a 105 quand tu met en commentaire toute les zone ses a partir de quel ligne et faut il modifier $lazone par les nom de la zone et autre petit doute faut bien remplir se que il y a d’écrit en vert ? je met quoi dans ‘,’
    Je ne comprend pas ce passage si quelqu’un peut m’aider 😉

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.