Saltar al contenido
Volver a Artículos Publicados
Home Assistant

Cómo Home Assistant me hizo amar los flujos de automatización en la vida real

Nunca pensé en la automatización como algo que pudiera integrarse en mi rutina diaria. Pero una cosa es automatizar software, y otra completamente diferente es pensar en flujos de la vida real.

Cómo Home Assistant me hizo amar los flujos de automatización en la vida real
Publicado originalmente en Dev.to. Lee reacciones y participa en la conversación en Dev.to →
Contenido 100% autoral: Todos los artículos, desafíos técnicos y código fueron escritos por Marcelo Costa sin el uso de IA en la redacción. La inteligencia artificial se utilizó exclusivamente para ayudar con la traducción a múltiples idiomas.

Nunca pensé en la automatización como algo que pudiera integrarse en mi rutina diaria. Como Lead QA Engineer, mi trabajo consiste en observar flujos de trabajo manuales en plataformas SaaS y aplicaciones móviles y convertirlos en algo que funcione por sí solo.

Pero una cosa es automatizar software, y otra completamente diferente es pensar en flujos de la vida real.

Suelo levantarme por la noche a beber agua; pasillos en total oscuridad y no quería hacer ruido buscando el interruptor. Ahora, un sensor de movimiento Zigbee le indica a una lámpara con enchufe inteligente que se encienda automáticamente al pasar. O la molestia de introducir el código de la alarma cada vez que llegaba a casa: la alarma ahora se activa o desactiva según mi presencia en casa o la de mi esposa. Esos escenarios comenzaron como una idea y terminaron formando parte de mi día a día, ahorrándome tiempo.

Esa es la historia de cómo empecé con Home Assistant.

Automatizo software para ganarme la vida. Pero nunca pensé en que hiciera mi vida más fácil.

Es curioso trabajar con algo y nunca implementarlo en el mundo real, en un dispositivo tangible o físico. Algo con una puerta, un motor y un retardo. Solo pensé «¿y si...?» pudiera automatizar mi entrada al edificio. ¿O tal vez tener un control de las puertas del garaje para abrirlas y cerrarlas en secuencia desde la pantalla de mi coche? Hecho y hecho.

Me estoy acercando a casi 100 escenarios de automatización que un único panel integra y controla: sensores de calidad del aire, temperatura, persianas y una multitud de dispositivos (TV y lavadora Samsung, lavavajillas Bosch, cámaras Ring, etc.). Pero lo he dividido en tres partes:

  1. Llegar a casa — portones, la alarma y el coche (esta entrega)
  2. Dentro de la casa — suelo radiante y refrigeración, aire y electrodomésticos
  3. Las aburridas — las automatizaciones que realmente protegen el lugar

Pestaña Inicio — de arriba a abajo hasta "Un toque"

Los portones: ingeniería inversa a Alfred Smart

Cada portón de mi edificio funciona con Alfred Smart, una plataforma de control de acceso con su propia aplicación y sin integración para Home Assistant. Así que analicé qué envía la aplicación web de Alfred. Resultó ser una API REST estándar: un inicio de sesión que devuelve un JWT, y un PATCH /devices/interact por puerta, con un gateway ID y un device ID.

Reconstruí ambos como rest_commands en Home Assistant, enviando los mismos encabezados que la aplicación web. Además, dado que el token de acceso es válido durante 60 días, automaticé una renovación de credenciales cada mes aproximadamente.

Probarlo fue donde se puso interesante. Cada portón pasa por un script que lee el código de estado HTTP. ¿Y cómo obtener los tiempos exactos de entrada? Haciéndolos, una y otra vez. Al fin y al cabo, voy a entrar a mi casa muchas veces; ¿por qué no tomar nota y ajustar los tiempos hasta dejarlos perfectos? Estamos hablando de una diferencia de unos pocos segundos, por supuesto.

Luego vino el chequeo de salud (health check). Una insignia en la parte superior del panel sondea la API, manteniendo el último valor real durante 15 minutos antes de admitir que el servicio está caído. Eso evita que yo use los scripts sin saber que están desconectados (me pasó más de dos veces).

Caminando: una máquina de estados ajustada con cronómetro

Hay cinco portones en el complejo, y llegar a pie por la Puerta 11 no es el mismo camino que por la Puerta 5. Así que cada entrada se convirtió en una secuencia: abre esto, espera, abre aquello. Las esperas — P11 → P3 en 30 s, P5 → P3 en 50 s — provienen de lo que mencioné antes: entrar una y otra vez hasta que el tiempo sea perfecto.

Pestaña de Acceso — desde "Portones" hasta "Ajustar tiempos"

Esos números solían estar fijos (hardcoded), incrustados en el archivo YAML, un poco más difíciles de actualizar. Ahora cada espera es un helper, editable desde una ventana emergente de «Ajustar tiempos», y tanto el retardo como la etiqueta del botón leen de él.

Ventana emergente "Caminando — tiempos"

El teléfono pregunta antes de que llegue

Cuando estoy a unos 200 m de casa, mi teléfono me pregunta «¿Llegando a casa? — ¿por dónde vas a entrar?», con un botón por cada portón. Un toque y la secuencia se ejecuta mientras camino.

Notificación "Llegando a casa" en mi reloj

Puedo cambiar el radio de mi zona de hogar y adaptar el archivo YAML para cuando se active en la calle. Además, la misma lógica se aplica para armar o desarmar mi alarma en función de cuándo me acerco a mi puerta, tras otro radio más pequeño que también se configuró para mi puerta.

La alarma: Verisure a través de la integración de Securitas

La alarma es una Verisure, conectada mediante la integración personalizada de Securitas desde HACS. El protocolo tiene un modo de «noche parcial», por lo que Home Assistant renderiza tres botones: Desarmada, Parcial, Total, igual que el dispositivo físico. También se comunica con las cámaras Ring, activando el detector de movimiento y avisándome si hay movimiento con la alarma activada.

Ahora ingresar el PIN es cosa del pasado: la alarma se desarma automáticamente cuando llegamos a casa. ¿Mi esposa y yo no somos detectados en casa tras cerrar la puerta, pero no se activó la alarma? Home Assistant se encarga de eso. Puedo activar —con un solo toque— el armado o desarmado de día o de noche, y también en determinadas franjas horarias durante la semana. Recuerdo la pesadilla que era configurar eso en la app oficial de la alarma. Menos mal que quedó atrás.

Pestaña Inicio — sección "Alarma"

El coche: la integración de Toyota y una cerradura que no existía

La integración de Toyota desde HACS me proporcionaba combustible, cuentakilómetros, puertas y ventanillas, pero no el bloqueo de puertas. La biblioteca subyacente puede enviar comandos remotos, así que escribí un lock.py para ella. Es una funcionalidad que espero que se fusione eventualmente.

Eso hizo posibles las automatizaciones del coche: desbloqueado durante 3 minutos → una notificación, aún desbloqueado a los 6 → bloquearlo. Esto ya nos ha salvado muchas veces, siempre que alguno de nosotros olvida bloquear bien el coche cuando llevamos las manos ocupadas.

Pestaña Coche — parte superior

También agregué dos scripts como botones en el panel de mi coche: «Llegando» y «Saliendo». Funcionan con la integración del edificio Alfred Smart que mencioné y abren cada una de las dos puertas de garaje en secuencia a través de un comando REST, con una espera cronometrada entre ellas. Compatible con Apple CarPlay y Android Auto, por supuesto.

Puertas de garaje controladas cómodamente en el panel de mi coche


Próximamente: dentro de la casa — donde los termostatos de pared y Home Assistant llevan meses en conflicto, y una gráfica de CO₂ terminó indicándome que debía cambiar un filtro.

Ejecutando Home Assistant Green, orientado a YAML, con una interfaz construida sobre Bubble Card y Mushroom. Con gusto profundizo en cualquiera de estos puntos en los comentarios de Dev.to.