Nous avons découvert hier la carte RooWifi, une petite carte qui vient se brancher sur la prise PS2 du Roomba pour ensuite permettre d'en prendre le contrôle en Wifi.
Comme nous avons vu, il existe une API complète, qui permet ainsi d'intégrer facilement le Roomba à son système domotique.
Voyons voir un exemple aujourd'hui avec notre box eedomus.
I. Récupération des informations
Première chose, déjà, si on veut se faciliter la vie: désactiver le nom d'utilisateur et le mot de passe de la carte Roowifi, sinon on pourra avoir du mal à accéder aux informations à cause de la demande d'identification. Comme c'est pour une utilisation locale, ce n'est pas très grave.
Ensuite, pour accéder aux informations, nous avons deux choix possibles.
Le fichier http://IP_DU_ROOMBA/roomba.xml , qui va nous donner une liste complète des options et de leurs valeurs:
Et le fichier http://IP_DU_ROOMBA/rwr.xml , plus light, qui n'affiche que les valeurs:
C'est ce fichier que nous utiliserons, plus facile à interroger et plus léger. Sur l'eedomus, il suffira en effet de créer un nouveau périphérique capteur http
Que nous configurerons de cette facon:
On indique l'adresse du fichier rwr.xml, puis on indique le chemin Xpath de la donnée à récupérer. Ici je veux récupérer l'état de la charge, qui d'après le premier fichier roomba.xml est donc r18. Le chemin Xpatch est donc /response/r18 . Sur le tableau de bord, on obtient cela:
On peut ainsi récupérer les informations qu'on souhaite (température du Roomba, etc…) de la même facon, en indiquant simplement le chemin XPath de la donnée à récupérer, et faire des scénarios si on veut, comme par exemple faire retourner le Roomba à sa station si la batterie devient trop faible.
II. Pilotage
Le pilotage se fera via des requêtes HTTP, chose que maitrise très bien l'eedomus. Les ordres sont plus restreints, mais suffiront à notre utilisation. Les commandes sont au nombre de trois:
- http://IP_DU_ROOMBA/roomba.cgi?button=CLEAN : lancera le nettoyage automatique
- http://IP_DU_ROOMBA/roomba.cgi?button=SPOT : lancera un nettoyage sur une zone concentrée
- http://IP_DU_ROOMBA/roomba.cgi?button=DOCK : fera repartir le Roomba sur sa station de charge
Sur l'eedomus il faut donc créer cette fois un actionneur HTTP:
On lui donne un nom:
Et dans les valeurs on renseigne les commandes HTTP de cette façon:
On obtient alors ce périphérique sur l'eedomus, avec les différentes commandes qu'on peut lancer sur le Roomba:
Bien sûr, ces commandes sont utilisables dans des macros et des scénarios. La première utilisation qui me vient à l'idée est de lancer le mode nettoyage quand on active l'alarme en partant:
Comme ca le ménage est fait automatiquement quand on n'est pas là :p A contrario, si on veut être tranquille quand on arrive, s'il est en fonctionnement on peut lui envoyer la commande DOCK quand on désactive l'alarme en rentrant à la maison.
Petite chose à prendre en compte toutefois: si par exemple le Roomba est en cours de nettoyage et que j'envoie une commande DOCK pour qu'il retourne à sa station, cela va avoir pour effet de le stopper. Il faut lui renvoyer une seconde commande DOCK pour qu'il s'exécute (apparemment une commande s'exécute, une seconde stoppe).
III. Conclusion
Voici un exemple simple d'utilisation de la carte RooWifi avec la box eedomus. Pas besoin de script, cette box a tout ce qu'il faut pour parfaitement utiliser la carte RooWifi et piloter votre Roomba :D Bien sûr d'autres box pourront également le faire, je pense notamment à la Zibase qui peut lire des fichiers xml et envoyer des requêtes HTTP.
Nous verrons un autre exemple avec une autre box que vous appréciez beaucoup dans quelques jours ;-)
Super post Cédric!
Mais si tu actives ton alarme en même temps que le Roomba, tu ne risque pas d’embêter les voisins?
Par rapport aux détecteurs de mouvement, je suppose ? Faudrait tester, c’est comme si on avait un “animal de compagnie” à la maison :p Pour ma part je n’utilise les détecteurs de mouvements qu’à certains endroits critiques, où le Roomba ne passe pas.
Bonsoir Cédric
Super tuto
ce qui m’intéresse c’est de pouvoir déclencher mon alarme à retardement comme ta règle en première ligne d’actions.
Comment cela est faisable je n’y arrive pas.
Merci d’avance pour ton aide.