IoT - Solución de Smarthome : Home Assistant (2/4)

Introducción

Diego Genise
Ingenia, Architectural Journeys
7 min readNov 7, 2021

--

En el artículo anterior vimos como situaciones de la vida corrientes me llevaron a tener la necesidad de controlar mi casa de manera remota. Instalamos luces inteligentes que pueden controlarse remotamente por internet, instalamos un wifi relay que nos permite abrir un portón de entrada e instalamos un control remoto inteligente para controlar varios dispositivos a distancia, como el aire acondicionado o el televisor. En esta segunda parte veremos cómo además de la necesidad de control remoto a distancia, se nos presentó la necesidad de saber qué estaba pasando en la casa para poder controlarla mejor. Que la casa cobrara un poco de vida y que pudiera tomar algunas decisiones.

Home Assistant

La idea de los dispositivos conectados a internet es (entre otras) que uno pueda controlarlos remotamente usando internet como medio de transporte de nuestras instrucciones. Normalmente, cada fabricante expone una interface web o una aplicación para smartphones que permite controlar los dispositivos que fabrica y vende. Philips por ejemplo tiene su propia aplicación, pero ésta solo controla sus productos. Si yo tuviera una lamparita inteligente Philips y una de otra marca tendría que usar una aplicación distinta para controlar cada una. Esto es poco eficiente y después de una cierta cantidad de dispositivos conectados en una misma casa se vuelve ingobernable al punto de dejar de ser práctico.

Para esto existen plataformas como Home Assistant que permiten y tienen la capacidad de integrarse con productos de múltiples fabricantes y exponer su control en una interface web única o una aplicación en el teléfono. Por este motivo ya no importa quién es el fabricante y se mantiene una comunidad activa en donde se desarrollan integraciones con todos los fabricantes.

https://www.home-assistant.io/
UI Web de Home Assistant

¿Cómo instalar Home Assistant? ¿Dónde instalarlo?

Como indica su web aquí, HA tiene cuatro formas posibles de instalación. Las dos recomendadas son mediante una imagen que se copia a una memoria SSD para luego utilizarlo en una Raspberry Pi o mediante la utilización de su imagen contenerizada para luego correrlo con Docker. Otra opción más reciente es la bajar un disco VDI y correrlo en una máquina virtual (recomiendo probar esta última opción). Se puede utilizar virtual box para virtualizar.

Cuando instalé home assistant hace unos años, la imagen docker no era una opción por lo tanto lo instalé en una de mis Raspberry Pi. Se utilizó una Raspberry Pi 3 + con el método de “quemar” la imagen de HA en una SSD. Finalmente, imprimí una caja para la RB en 3D y ese fue el corazón de mi instalación de HA durante mucho tiempo (spoiler alert, en un próximo artículo vamos a charlar acerca de cómo instalar HA en un cluster de Kubernetes sobre Raspberries).

Mi instalación personalizada de HA en carcaza custom impresa en 3D y sobre una raspberry pi 3 b +

Si la idea es dejar andando un HA definitivo en tu casa es posible que sea mejor adquirir una Raspberry Pi o usar alguna notebook antigua corriendo una máquina virtual. A continuación, volveremos a repasar como HA se conecta con tus dispositivos IoT.

Una consideración importante es que dependiendo de las formas en las cuales los dispositivos se integran con HA la instalación no necesariamente tendría que estar en la misma red wifi que los dispositivos. Finalmente, lo único importante es que tanto HA como los dispositivos a controlar tengan conexión a internet. Entonces, ¿podríamos tener los dispositivos en nuestra casa conectados a internet y HA en un proveedor cloud a miles de kilómetros de distancia? Sí, claro. Pero esto depende de muchos factores y qué es lo que se busca con cada instalación. De hecho, existe un HA managed que se llama NABU CASA y básicamente es un HA en la nube.

HA y la integración con los dispositivos IoT

Hasta aquí venimos contando cómo Home Assistant tiene la capacidad de conectarse a los dispositivos IoT que estén conectados a internet, controlarlos y exponer sus estados en su interface web. Pero ¿cómo lo hace?. De acuerdo al fabricante de cada dispositivo que queramos conectar, HA tiene integraciones ya pre-desarrolladas que se pueden bajar como add-on desde su store. Es decir, los fabricantes de los dispositivos exponen a internet ciertas APIs. Mediante ellas nosotros podemos controlar un enchufe inteligente invocando la API justamente desde HA o desde nuestra propia aplicación custom. En este caso HA ya tiene desarrolladas integraciones para muchos fabricantes y sabe cómo invocar las APIs de cada uno de ellos. Entonces, al instalar el add-on correspondiente al fabricante de nuestro dispositivo IoT y con una mínima configuración estaremos controlando nuestros dispositivos desde HA.

Aquí hay un ejemplo y un instructivo de cómo integrar dispositivos de la marca Sonoff en HA mediante un add-on.

Para integraciones custom (integraciones con dispositivos de fabricantes que HA no provee out of the box) existe un amplio catálogo que desarrolla y mantiene la comunidad de HA y que le da extensibilidad a la plataforma. Estas integraciones están desarrolladas en Python y pueden ser agregadas a HA fácilmente desde el catálogo. Es posible también desarrollar nuestra propia integración si no encontramos la que necesitamos en la lista.

Catálogo de integraciones desarrolladas por la comunidad de HA.

Si te interesa conocer más acerca de la arquitectura interna de las integraciones en HA podés visitar el siguiente link.

Con respecto a las APIs y cómo invocarlas para controlar nuestros dispositivos aquí les dejo un ejemplo de la API de Ewelink que se encarga de controlar (entre otros) a dispositivos Sonoff. Básicamente, si tuviéramos un dispositivo de la marca Sonoff podríamos controlarlo invocando su API.

Automatizaciones y Scripts en Home Assistant

Ya vimos que podemos conectar todos nuestros dispositivos smart a HA, ¿pero qué pasa si necesitamos que esos dispositivos no solo se comuniquen con quien los controla individualmente sino también entre ellos?¿Qué pasa si además de que se comuniquen entre sí necesitamos que la acción de un dispositivo dependa de una medición que pueda estar sensando otro dispositivo? Para dar un ejemplo práctico, ¿qué ocurre si cuando la temperatura de una habitación supere los 30 grados Cº necesito prender el aire acondicionado de manera automática? ¿Cómo lo logro?

HA es una plataforma open source que te permite conectar todos tus dispositivos smart y verlos organizados en una potente interface web desde dónde se pueden controlar. Pero sin dudas la característica que yo encontré más interesante es la de poder escribir scripts. Estos se escriben en formato YAML y me permiten darle cierta inteligencia y automatización a las acciones cotidianas. Por ejemplo, encender una luz cuando una persona ingresa a una habitación y apagarla cuando se va (spoiler alert, más adelante veremos sensores).

Ejemplo de automatización de una luz en base a un sensor de movimiento

¿Cómo controlo mi casa remotamente usando Home Assistant?

Google y Amazon vs Home Assistant

Cuando comencé a experimentar con HA las plataformas de Google y Amazon para smarthome estaban menos desarrolladas que hoy en día. En ese momento la interacción de dispositivos smart estaba atada a una guerra comercial. Los dispositivos fabricados por Google no se podían controlar con Alexa y los de Amazon no se podían controlar con Google Assistant ni integrar a Google Home. Actualmente dado el crecimiento de ambos gigantes de la tecnología esas líneas tan duras se fueron corriendo y actualmente, por ejemplo, se pueden controlar dispositivos de Google Nest (termostato) desde Alexa cómo indica esta web de Google. Sin embrago, mi decisión de usar HA fue fundamentada por dos temas importantes:

1- En HA se puede integrar cualquier dispositivo utilizando los add-ons que ya trae out of the box; se pueden utilizar los desarrollados por la comunidad o como última instancia uno puede desarrollar sus propias integraciones. Es decir, existe casi una garantía de que cualquier dispositivo smart que incorpore a mi casa podrá controlarse desde HA. Con Google o Amazon siempre dependerá de si son compatibles o no.

2- La facilidad para desarrollar scripts que me permiten hacer interactuar dos o más dispositivos en HA es una gran ventaja. En base a la medición de un sensor de temperatura poder prender un AC es una feature excepcional. Si bien actualmente Google Home tiene algo similar está orientado a los usuarios finales, por lo tanto la complejidad que uno puede desarrollar es acotada. Definitivamente, lo que ofrece HA en este punto es sumamente más potente.

Acceso Remoto a HA

En este aspecto, Home Assistant tiene una aplicación para Android y para iOS que permite conectarte a la instalación de HA que tengas en tu casa. Y es una funcionalidad clave ya que puedo controlar remotamente desde donde me encuentre mi HA desde mi smartphone.

HA en un dispositivo Android.

Conclusiones

Home Assistant es una plataforma open source que nos permite controlar nuestros dispositivos IoT. Es flexible, robusta y extensible. Pero sin dudas la mejor parte, la que más valoro es que me permite customizar un sin fin de cosas. Además, me permite realizar automatizaciones mediante scripts y controlar toda mi instalación desde un teléfono Android o iOS.

¡Hasta el próximo artículo!

--

--