AJAX para controlar tu iRobot Roomba

Como habréis visto en los artículos anteriores sobre el uso de Roomba Wi-fi Remote y lectura de ficheros JSON y XML:

Se puede saber el estado de los sensores del robot mediante JSON y XML con una frecuencia de refresco de los valores de los sensores de 500ms.

De esta manera y conociendo las librerías o APIs AJAX del lenguaje o entorno de trabajo con el que trabajes podemos realizar una lectura asíncrona de los sensores del robot mediante la típica petición AJAXRequest a las URLs que contienen la información en formato JSON o XML roomba.json y roomba.xml.

Llegados a este punto, lo natural es plantearse: ¿Podría actuar sobre el robot siguiendo este mismo método? Pues Si, Roomba Wi-fi Remote tiene accesible una URL a la que por GET se le pueden pasar como parámetros los diferentes botones del robot y devuelve una respuesta en formato plain-text en función del resultado de la operación. A continuación una explicación más en profundidad y esperamos os sea útil:

URLs para emular los botones

En el modo de funcionamiento IDLE o sin ninguna conexión TCP externa conectada al TCP Socket Server del Roomba Wi-fi Remote, este permite realizar acciones mediante URLs que aceptan algún parámetro por GET que emulan la pulsación de los botones superiores de tu iRobot Roomba.

Esta propiedad se ha añadido a la nueva versión Roomba Wi-fi Remote v2 dado que algunos desarrolladores nos habían pedido el uso de Web Services o parecidos. Junto con los archivos de lectura JSON o XML ya puedes realizar tu App rápida sin tener que abrir ningún socket, aunque para una telemetría y un control del robot a tiempo real seguimos recomendando el uso del Modo Transparente a la hora de desarrollar aplicaciones propias.

Pues bien, al grano. La URL que acepta parámetros GET es la siguiente:

  • http://IP_de_tu_Roomba_Wifi_Remote/roomba.cgi

Dado que por motivos de seguridad y rendimiento sólo se permite la emulación de los botones superiores del robot, el único parámetro aceptado en la actualidad es button que puede aceptar los siguientes valores:

  • CLEAN: Se emulará la pulsación del botón Clean del robot que ejecuta una limpieza convencional.
  • SPOT: Se emulará la pulsación del botón Spot del robot que ejecuta una limpieza a fondo de la zona donde se encuentra el robot.
  • DOCK: Pulsación del botón Dock, que manda al robot a la base de carga

El valor devuelto por la URL según los parámetros es tipo texto (plain-text) correspondiendo a “1″ la respuesta en el caso de que la pulsación virtual de botón se ha realizado correctamente. Por el contrario si el valor del parámetro no es ninguno de los anteriores, existe algún error o bien no se ha ejecutado por estar en modo transparente/Gateway el valor devuelto será “0″.

Para dejarlo todo un poco más claro las posibles llamadas a la URL serían las siguientes:

  • http://IP_de_tu_Roomba_Wifi_Remote/roomba.cgi?button=CLEAN
  • http://IP_de_tu_Roomba_Wifi_Remote/roomba.cgi?button=SPOT
  • http://IP_de_tu_Roomba_Wifi_Remote/roomba.cgi?button=DOCK

Devolviendo ’1′ en caso de ejecución y envío al robot correcto o bien ’0′ en caso contrario.

Os recordamos, cualquier duda mandar un mail a info@roowifi.com y os ayudaremos tan rápido y bien como nos sea posible.

Tagged with: , , , , , ,
Posted in Desarrolladores, RooWifi: Roomba Wi-Fi Remote