Ha ocurrido lo que tenía que ocurrir. Tras semanas probándolo, finalmente tengo la casa controlada por Home Assistant. Y seguramente algunos os preguntaréis... ¿pero eso qué es?

Home Assistant no es más que una aplicación open source que podríamos definir como un controlador que monitoriza un inabarcable conjunto de sensores y gestiona otro tanto grupo de actuadores, de tal manera que reacciona frente a multitud de eventos produciendo acciones en consecuencia. Dicho de otro modo: Es algo así como el cerebro de una casa.

Más que una entrada del blog, ésta será la primera de una serie de entradas sobre este maravilloso software y sus posibilidades, las cuales aún no tengo plenamente implementadas en mi casa, con lo que iré poco a poco publicando a medida que vaya probando.

Pero dejémonos de cháchara y vayamos al grano, que es como mejor se aprende sobre esta increíble plataforma y su funcionamiento.

Instalar Home Assistant

Hay varias formas de instalar Home Assistant. Para variar, por su simplicidad y por lo fácil que resulta desplegarlo en otros lugares, yo he optado por utilizar un contenedor Docker, por lo que será la forma que veremos aquí. Una rápida búsqueda en Internet te mostrará todas las opciones disponibles, si Docker no es tu prioridad o una opción.

Para comenzar, crearemos un directorio que llamaremos homeassistant y dentro de él, un fichero docker-compose.yml con el siguiente contenido:

version: '3'

services:
  homeassistant:
    image: homeassistant/home-assistant:stable
    container_name: homeassistant
    restart: unless-stopped
    ports:
      - 8123:8123
    volumes:
      - ./config:/config
    environment:
      TZ: Europe/Madrid
Fichero docker-compose.yml con la imagen y configuración inicial de Home Assistant

Como veis es muy sencillo. Apenas necesitamos la imagen y exponer el puerto 8123, que es el que usa Home Assistant para la interfaz web.

Por otro lado, deberemos crear una carpeta llamada config, en la cual tendremos toda la configuración de la plataforma, y que podremos incluso gestionar mediante un repositorio Git, de tal forma que no perderemos lo que vayamos construyendo poco a poco.

Una vez tenemos el fichero docker-compose y la carpeta de configuración, sólo nos queda ejecutar el comando docker-compose up -d y podremos acceder a la interfaz web mediante la URL http://localhost:8123 (si esto lo estás ejecutando en una VM o en una raspberry, cambia el localhost por la IP que corresponda). Al entrar a la web, nos pedirá la configuración inicial del usuario que será el administrador, como podemos ver a continuación:

Pantalla de creación del usuario administrador
Pantalla de creación del usuario administrador

Rellenaremos con nuestro nombre, nuestro nickname y una contraseña que, recomiendo, sea bastante robusta... ¡Puesto que este usuario será el que tendrá el control sobre el cerebro de nuestra casa! Una vez elegida una contraseña acorde, pulsaremos sobre el botón de Crear cuenta.

En la siguiente pantalla, deberemos configurar nuestra zona. Esto es, deberemos dar un nombre a nuestra casa (Casa suele funcionar bastante bien 😂) y configurar nuestra zona horaria, altitud, unidades de medida y moneda.

Pantalla de configuración de zona
Pantalla de configuración de zona

Al pulsar en Siguiente nos llevará a la siguiente pantalla de configuración, en la cual deberemos indicar si queremos compartir datos anonimizados del uso que le demos a Home Assistant, así como datos estadísticos, de diagnosis... Ahí ya dejo a cada uno la elección de estas opciones.

Pantalla de selección de datos a compartir
Pantalla de selección de datos a compartir

Por último, en la pantalla final nos deja configurar las integraciones que ya sepamos de antemano que vamos a utilizar. Puesto que quiero hacerlo por pasos, en este caso vamos simplemente a darle a Terminar y ya lo iremos haciendo poco a poco.

Pantalla de configuración de integraciones en el proceso de instalación
Pantalla de configuración de integraciones en el proceso de instalación

Y, con esto, tendríamos ya instalado nuestro software. Veremos cómo nos redirecciona automáticamente a la página principal donde, por ahora, apenas tendremos nada más allá de una tarjeta con nuestro nombre. Si navegamos por las distintas opciones del menú que nos aparece a la izquierda, podremos ver cada uno de los apartados, así como los ajustes, etc.

Ficheros de configuración

Si ahora listamos el directorio config, veremos que se nos han creado una serie de archivos y carpetas. De ellos, los más importantes serán configuration.yml, que contendrá toda la configuración que vayamos añadiendo manualmente; automations.yml, con las automatizaciones que creemos; scenes.yml, para las escenas; scripts.yml, para los distintos scripts que creemos; y secrets.yml, que contendrá los datos más sensibles, tales como contraseñas, tokens... Todos estos ficheros, salvo el último (secrets.yml), podremos gestionarlos desde un repositorio Git, de manera que siempre tengamos un histórico de las configuraciones que vamos añadiendo y así poder volver atrás o desplegarlo en otro lugar sin necesidad de hacer toda la configuración de nuevo.

Configuración del servidor MQTT

Como he comentado en alguna ocasión, utilizo un servidor MQTT (Mosquitto) para gestionar los mensajes y eventos que se producen en mi casa. Home Assistant hace uso de un bróker MQTT para manejar multitud de eventos, por lo que, a modo tutorial de una integración, vamos a dejarlo configurado aquí.

Instalación de la integración MQTT

El primer paso será acceder, en el menú lateral, a la opción de Ajustes. Veremos que se nos muestran una serie de opciones para elegir, así que haremos clic sobre Dispositivos y servicios.

Por defecto, tendremos instaladas algunas (en la versión utilizada para este tutorial vienen preinstaladas una de radio y otra relacionada con el tiempo). En la parte inferior derecha estará el botón de Agregar integración, que pulsaremos y, en el buscador que se nos abre, escribiremos MQTT y pulsaremos sobre la opción que nos filtra.

Esto nos abrirá una ventana para que introduzcamos los campos para configurar nuestra conexión con el servidor MQTT. Deberemos poner la IP del bróker, el puerto (por defecto será el 1883) y un usuario y contraseña si así lo definimos en la configuración de dicho bróker.

Pantalla de configuración del bróker MQTT
Pantalla de configuración del bróker MQTT

Una vez introducida dicha configuración, pulsaremos sobre Enviar. Y obtenemos lo siguiente...

Error al configurar el bróker MQTT
Error al configurar el bróker MQTT

¿Por qué ha ocurrido esto? He puesto bien la IP, el puerto, el usuario y la contraseña... Pues bien, resulta que en mi caso, necesito definir el ID del cliente con el que se conectará al servidor, ya que tengo activado el filtro por clientID. Por ello, deberemos editar el fichero configuration.yml y añadir al final del archivo lo siguiente:

mqtt:
  client_id: myhome-homeassistant
Configuración del clientID para el cliente de MQTT

Una vez añadido, volvemos a la interfaz web y, en la opción de Herramientas para desarrolladores pulsaremos sobre Verificar configuración, dentro de la pestaña de YAML. De esta forma validaremos que lo introducido en el fichero configuration.yml lo hemos hecho bien, y no nos hemos colado con las tabulaciones. Una vez hecho esto, reiniciamos el contenedor Docker y volvemos a repetir los pasos para agregar la integración del bróker MQTT. Y ahora sí, tendremos la confirmación por parte de la interfaz web.

Si ahora pulsamos sobre la opción de Configurar que nos sale en la integración de MQTT, podremos probar a publicar un mensaje y/o suscribirnos a algún tópico y comprobar que, efectivamente, está funcionando dicha conexión. En futuras entradas le daremos bastante uso a esta integración.

¡Y hasta aquí la configuración inicial! No quiero hacer demasiado extensas las entradas, así que iré preparando sucesivas entregas para documentar poco a poco todo. Mientras tanto, espero que os sea de utilidad este primer paso.

Si te ha gustado la entrada, o te ha sido útil y quieres ayudarme a pagar los gastos que conlleva el servidor y mantener así el blog libre completamente de anuncios, puedes hacer una donación en Bitcoin en la siguiente dirección:

Donar