Saltar al contenido principal

Integración domótica iRobot Roomba, gratuita y de código abierto

Integración iRobot Roomba para Gladys Assistant

Robots iRobot Roomba y Braava en red local: estado, batería, depósito, inicio y vuelta a base.

Presentación​

Esta integración controla los robots iRobot Roomba y Braava en su red local, sin pasar por la nube iRobot: habla directamente con cada robot, mediante la conexión MQTT cifrada que la app iRobot usa en casa (puerto 8883). Obtiene un dispositivo de Gladys por robot, con su estado, su batería, su depósito, la duración y la superficie de la limpieza, y los comandos Iniciar, Pausa, Detener, Volver a la base y Localizar. Tres disparadores de escena (limpieza terminada, robot atascado o con error, depósito lleno) y un widget del panel lo completan.

La nube iRobot solo se usa una vez, si usted lo elige, para leer la contraseña de sus robots.

Desarrollada sin el hardware: sus comentarios son bienvenidos. El autor no tiene ningún robot iRobot. La integración sigue el protocolo local tal como lo documentan los proyectos de código abierto dorita980 y roombapy (la biblioteca de Home Assistant), y se prueba contra un robot simulado. Comparta su experiencia, y el resultado de la acción Diagnóstico, en el foro de Gladys.

Esta integración no está afiliada a iRobot.

Robots compatibles​

Los robots con wifi que la app iRobot controla en local (protocolo local «v2» y «v3»):

  • Roomba serie 600 con wifi (675, 690, 694…), series 800 y 900 (960, 980…);
  • Roomba series e (e5, e6), i (i3, i4, i7, i7+, i8…), s (s9, s9+), j (j7, j7+, j9…) y los modelos Combo de esas generaciones;
  • Braava jet m6.

Los modelos más recientes, «Matter primero» (por ejemplo el Combo Max 705), usan un protocolo nuevo que ni dorita980 ni roombapy admiten todavía: tampoco son compatibles aquí. Los robots sin wifi no son compatibles.

Requisitos​

  • Gladys 5.2.0 o posterior.
  • El robot configurado con la app iRobot y conectado a su wifi.
  • Gladys y el robot en la misma red local, y la dirección IP del robot (en su router, o en la app iRobot: ajustes del robot, wifi). Asigne al robot una dirección fija en su router (reserva DHCP): la integración busca un robot que haya cambiado de dirección, pero una dirección fija es más fiable.
  • La contraseña del robot, que la integración obtiene de una de estas dos maneras (vea Configuración):
    • el correo electrónico y la contraseña de su cuenta iRobot, usados una vez;
    • o una pulsación del botón HOME del robot (DOCK + SPOT en algunos 600).

Instalación​

En Gladys, abra Integraciones → Instalar desde GitHub e introduzca https://github.com/guim31/gladys-roomba. Gladys muestra antes de instalar lo que pide la integración: el descubrimiento de red en el puerto UDP 5678 (el puerto de descubrimiento de iRobot), a través de Gladys.

Configuración​

Abra la página Configuración de la integración. Añada sus robots con una de las dos acciones de abajo, luego abra la pestaña Descubrimiento y añada los robots a Gladys. Solo se conectan los robots añadidos a Gladys.

Idioma de los nombres​

Idioma de los nombres de las funciones, de los textos de error y de los textos de los eventos de escena (francés por defecto). Los nombres de las funciones se fijan al crear un dispositivo: para cambiarlos tras una modificación, elimine el dispositivo y vuelva a añadirlo.

Obtener las contraseñas de la nube iRobot​

Introduzca el correo electrónico y la contraseña de su cuenta de la app iRobot, y el país de la cuenta con dos letras (ES, MX, AR…). La integración inicia sesión una vez, lee el identificador (BLID) y la contraseña local de cada robot de la cuenta, y luego busca los robots en su red. La contraseña de la cuenta nunca se guarda; las contraseñas de los robots se conservan en el almacenamiento privado de la integración.

Si un robot no aparece en la red, lance Añadir un robot con su dirección IP: su contraseña ya se conoce, no hay que pulsar ningún botón.

Añadir un robot​

Introduzca la dirección IP del robot. Tres casos:

  • la contraseña se obtuvo de la nube: no hay nada más que hacer;
  • usted conoce la contraseña: introdúzcala en el campo opcional;
  • si no, el método del botón HOME: cierre la app iRobot, coloque el robot en su base, mantenga pulsado HOME (DOCK + SPOT en algunos 600) unos dos segundos hasta que suene una melodía y lance la acción en los segundos siguientes. La integración pregunta al robot durante 45 segundos como máximo. Los firmwares más recientes ya no responden: use entonces el método de la nube.

La integración pregunta al robot quién es (su BLID) en el puerto UDP 5678; si el robot no responde, introduzca su BLID en el campo opcional. Después, la contraseña se comprueba con una conexión al robot.

Olvidar un robot​

Elimina la contraseña del robot elegido y cierra su conexión. Elimine también el dispositivo en Gladys si ya no lo quiere.

Diagnóstico​

Un resumen para pegar en el foro cuando algo falla: modelo, firmware, estado de la conexión, limpieza, capacidades. No contiene ningún identificador, dirección ni contraseña.

El dispositivo robot​

FunciónTipo de GladysContenido
EstadoAspiradora, estadoDetenido, en marcha, en pausa, error, volviendo, cargando, en la base
LimpiezaAspiradora, modoLimpiar: inicia, o reanuda una limpieza en pausa. Inactivo: detiene
Volver a la baseAspiradora, volver a la baseEnvía el robot a su base (primero en pausa si está limpiando)
PausaPulsadorPone la limpieza en pausa
LocalizarPulsadorEl robot emite un sonido
BateríaBatería (%)Nivel de carga
CargandoBatería cargando1 durante la carga en la base
Depósito llenoEntrada (sí/no)1 cuando el depósito está lleno (robots con sensor de depósito)
Duración de la limpiezaDuración (minutos)De la limpieza en curso, o de la última
Superficie limpiadaSuperficie (m²)De la limpieza en curso, o de la última (cuando el robot la da)
ErrorTexto«Ningún error», o el texto del error y su código

Un robot detenido por el usuario en mitad de una limpieza muestra En pausa; un robot en su base muestra Cargando hasta que su batería está llena, luego En la base.

Widget​

El widget Roomba muestra un robot: una ficha de batería en directo, y luego su estado, su depósito, la limpieza en curso o la última, el error si lo hay y la conexión cuando se pierde. Sus botones siguen la situación: Iniciar (y A la base cuando el robot no está en su base) en reposo, Pausa y A la base durante la limpieza, Reanudar, Detener y A la base en pausa. Ningún botón mientras el robot no está conectado.

Disparadores de escena​

  • Roomba: limpieza terminada — una limpieza ha terminado, no por un error. Filtros: robot, final («terminada, de vuelta» cuando el robot ha vuelto por sí mismo, «detenida o enviada a la base» si no). Variables: robot, final, duración en minutos, superficie en m².
  • Roomba: atascado o con error — el robot está atascado o indica un error (una vez por error). Filtro: robot. Variables: robot, texto del error, código de error.
  • Roomba: depósito lleno — el depósito está lleno. Se dispara una vez, y de nuevo solo después de ver el depósito no lleno en la base (el sensor puede dudar durante la limpieza). Filtro: robot. Variable: robot.

El estado, la batería y el depósito del robot también son funciones del dispositivo: una escena puede usarlas con el disparador y las condiciones habituales sobre el estado de un dispositivo, e iniciar o enviar el robot a la base con la acción «controlar un dispositivo».

Ejemplos de escenas​

  • Limpiar cuando todos han salido: disparador «la casa está vacía», acción: poner Limpieza del robot en Limpiar. Una segunda escena lo envía a su base (Volver a la base) cuando alguien vuelve.
  • Avisarme cuando el robot se atasca: disparador Roomba: atascado o con error, acción: enviar un mensaje «{{triggerEvent.data.robot}}: {{triggerEvent.data.error}}».
  • Informe de limpieza: disparador Roomba: limpieza terminada, final «terminada, de vuelta», acción: enviar «Limpieza hecha en {{triggerEvent.data.duration_minutes}} min». Con Roomba: depósito lleno, un recordatorio para vaciar el depósito.

Actualización y uso de la red​

  • El robot envía él mismo cada cambio, en cuanto ocurre; la integración solo transmite a Gladys los valores que han cambiado.
  • Un temporizador interno comprueba cada minuto y vuelve a enviar cada 6 horas los valores sin cambios para que Gladys siempre tenga un valor reciente. No depende de que Gladys consulte el dispositivo.
  • Todo se queda en su red local. La nube iRobot solo la llama la acción «Obtener las contraseñas de la nube iRobot», tres peticiones, cuando usted la lanza.
  • Un robot que no responde se reintenta cada 10 segundos a 2 minutos; un robot ocupado por otro cliente cada 30 segundos a 2 minutos; una contraseña rechazada cada 15 minutos.

Solución de problemas​

  • «Ocupado (¿app iRobot?)»: un robot solo acepta una conexión local. Mientras la app iRobot (o Home Assistant, u otra herramienta) la mantiene, el robot rechaza a Gladys. Cierre la app, o espere: la integración sigue intentándolo y se conecta en cuanto el robot queda libre. A la inversa, mientras Gladys mantiene la conexión, la app iRobot sigue funcionando, a través de la nube.
  • «No responde»: compruebe que el robot está encendido, en el wifi, y que su dirección IP no ha cambiado (vuelva a lanzar Añadir un robot con la nueva dirección).
  • «Contraseña rechazada»: vuelva a lanzar Añadir un robot, o la acción de la nube.
  • El método del botón HOME no da nada: cierre la app iRobot, coloque el robot en su base, mantenga HOME hasta la melodía y lance la acción enseguida; a veces hacen falta varios intentos. Los firmwares recientes solo dan la contraseña a través de la nube.
  • La nube rechaza el inicio de sesión: compruebe el correo y la contraseña en la app iRobot; una cuenta creada con Google o Apple puede no tener contraseña.
  • Firmwares antiguos y TLS: los robots usan ajustes TLS antiguos (TLS 1.2, AES128-SHA256, renegociación antigua). La integración los activa solo para la conexión con el robot.

Ante cualquier problema, lance Diagnóstico y pegue el resultado en el foro, con los registros de la integración (Integraciones → iRobot Roomba → Supervisión). Más detalles con la variable de entorno LOG_LEVEL=debug.

Limitaciones​

  • Habitaciones: no se admite la limpieza de habitaciones elegidas. Los nombres de las habitaciones y los mapas están en la nube iRobot; el protocolo local solo conoce identificadores de mapa y de zona, que cambian cuando se edita el mapa en la app. La limpieza de toda la vivienda siempre está disponible.
  • Sin mapa, sin posición, sin programación, sin ajustes de aspiración o de fregado en esta versión.
  • La duración y la superficie de la limpieza son las que da el robot: algunos modelos recientes no dan superficie.
  • El sensor de depósito existe en la mayoría de los Roomba, no en los Braava (entonces no hay valor «Depósito lleno»).
  • Una conexión por robot: mientras Gladys está conectada, la app iRobot pasa por la nube.
  • Desarrollada sin el hardware: la reacción de cada modelo a un segundo cliente local, y algunos estados, proceden de los proyectos de código abierto y no se han observado.

Datos y privacidad​

La integración guarda, en su volumen privado (/data/robots.json, legible solo por la integración): el nombre, el modelo, el firmware, la dirección IP y MAC, el BLID y la contraseña local de cada robot. La contraseña de la cuenta iRobot nunca se guarda. No se escribe ninguna contraseña, identificador ni dirección en los registros.

Parámetros de configuración​

Estos son los parámetros que iRobot Roomba te pide en su pantalla de configuración en Gladys.

ParámetroTipoObligatorioDescripción
Añadir un robotsectionNoLa integración habla con cada robot en su red local y necesita su contraseña. Dos maneras, en el cuadro Acciones de abajo: «Obtener las contraseñas de la nube iRobot» (correo electrónico y contraseña de la app iRobot, usados una vez y nunca guardados), o «Añadir un robot» con su dirección IP mientras mantiene pulsado el botón HOME del robot colocado en su base. Después, añada el robot a Gladys desde la pestaña Descubrimiento. Un robot solo acepta una conexión local: mientras Gladys la mantiene, la app iRobot pasa por la nube.
Idioma de los nombresselectNoIdioma de los nombres de las funciones, de los textos de error y de los textos de los eventos de escena. Los nombres se fijan al crear un dispositivo: para cambiarlos, elimine el dispositivo y vuelva a añadirlo.

Cómo instalar iRobot Roomba en Gladys​

  1. En Gladys, abre Integraciones: iRobot Roomba aparece en el catálogo junto a las integraciones nativas, con una insignia de comunidad.
  2. Haz clic en Instalar. Gladys descarga la imagen Docker (ghcr.io/guim31/gladys-roomba:1.0.1), la ejecuta en un entorno aislado del núcleo y genera la interfaz de la integración (dispositivos, descubrimiento y configuración).
  3. Abre la pantalla de Configuración de la integración, rellena los parámetros y guarda.
  4. También puedes instalarla directamente desde la URL de su repositorio: https://github.com/guim31/gladys-roomba.

iRobot Roomba requiere Gladys >=5.2.0. El catálogo de Gladys se actualiza cada hora, así que una nueva versión está disponible como máximo una hora después de publicarse.

¿Todavía no usas Gladys? Es gratuito y de código abierto: sigue la guía de instalación para empezar.

Sobre las integraciones externas​

iRobot Roomba es una integración externa: una integración comunitaria empaquetada como contenedor Docker y publicada en GitHub. Gladys la instala con un clic y la ejecuta en un entorno aislado del núcleo. La publica y mantiene guim31, no el equipo principal de Gladys.

Suscríbete a la newsletter de Gladys Assistant

Unos pocos correos al mes sobre nuevas versiones y novedades del proyecto. Enviados por Pierre-Gilles Leymarie, fundador del proyecto. Puedes darte de baja cuando quieras 🙂