Instalando Home Assistant en máquina virtual KVM

jueves, 28 de septiembre de 2023
Tiempo de lectura 6 minutos

Una de las cosas que he tenido pendiente por muchos años, aunque había intentado alguna vez hacerme con lo más importante del tema, es configurar y aprender a usar home Assistant. Gracias a esta potente herramienta de software, se puede configurar un sistema de casa inteligente, ya que el software puede integrar e integrarse con muchos otros dispositivos de hardware y ecosistemas de domótica ya existentes. Además de poder controlar muchos dispositivos y servicios desde su interfaz web, como pueden ser los dispositivos con Alexa, control de temperatura, controles remotos universales, televisores, enchufes inteligentes, etc; también podemos crear automatizaciones (para realizar una tarea siempre que se cumpla una condición), scripts (para ejecutar código que pueda llamar a un servicio u obtener algo de una API), plantillas (para tomar valores desde los sensores y poder realizar cálculos sobre estos), y muchas otras cosas más.

En este artículo únicamente detallaré lo que he ido aprendiendo sobre la instalación y algunas configuraciones iniciales de esta herramienta. De este modo, si vuelvo a tener que pasar por este proceso, ya tendré algo a lo que pueda recurrir para evitar olvidarme todo lo que pudiera hacer falta para tener un sistema funcional.

¿Qué variante instalar?

Home Assistant tiene varios tipos de instalación. No todos tienen las mismas funcionalidades, por lo que es importante tener esto en cuenta antes siquiera de instalar la herramienta. También hay un par de dispositivos que pueden adquirirse y llevan instalado el sistema operativo con Home Assistant, por cierto.

  • Home Assistant Operating System: Este es un sistema completo, únicamente dedicado a mantener home Assistant. Está configurado con supervisor como administrador de procesos y docker. Da acceso a la tienda de complementos de Home Assistant, lo que permite instalar aplicaciones extra que pueden integrarse dentro de la interfaz web. Esta opción es la más recomendada porque ofrece mayores posibilidades. Puede instalarse en un dispositivo dedicado, o importarse a una máquina virtual.
  • Home Assistant Container: Este es un contenedor, como docker, preparado para ejecutar el software de Home Assistant. Al ser ya este un contenedor, no está disponible la tienda de complementos y algunas integraciones pueden no funcionar, especialmente si requieren instalar cosas adicionales además del código Python para mantener su funcionamiento.
  • Home Assistant supervised: Proporciona instrucciones para instalar home assistant en un sistema operativo de forma manual. Esencialmente es casi idéntico a utilizar el sistema operativo de Home Assistant, pero el usuario debe hacerse cargo de las actualizaciones.
  • Home Assistant core: Instrucciones para instalar Home Assistant mediante un entorno virtual de Python. Esta opción es quizá la que requiere más tiempo y ofrece menos funcionalidades para el usuario final. No pueden usarse los contenedores, con lo que la tienda de complementos deja de estar disponible, tampoco se administran los procesos con supervisor ni es posible restablecer una copia de seguridad.

Habiendo visto esto, la opción por la que me decidí, a propósito de mis recientes pruebas con Libvirt. Es importar la imagen de disco del sistema operativo de Home Assistant, que se encuentra disponible en la Página de instalación para Linux.

Instalando Home assistant

  1. Lo primero es descargar la imagen de disco en formato qcow2, para lo que podemos utilizar un comando similar a esto, dependiendo de cuál sea la versión más reciente en el momento:
    $ wget https://github.com/home-assistant/operating-system/releases/download/10.5/haos_ova-10.5.qcow2.xz
  2. Una vez descargada la imagen, se debe descomprimir. Para esto necesitamos el paquete xz-utils, y este comando:
    $ xz -d -v haos_ova-10.5.qcow2.xz
  3. Después hay que mover la imagen a un directorio donde el usuario libvirt pueda escribirla. El directorio por defecto será suficiente:
    $ sudo mv haos_ova-10.5.qcow2 /var/lib/libvirt/images
  4. Finalmente, se puede ya importar la máquina virtual. De acuerdo con las especificaciones requeridas, con 2 CPU y 2 GB de memoria RAM el software puede funcionar bien, aunque en mi caso he decidido duplicar ambos parámetros. Es importante que Home Assistant tenga acceso a la red LAN de la casa donde se está instalando, para que pueda ver y controlar otros dispositivos, para lo que usaremos la red “bridged-network”, que creamos en el artículo anterior y va conectada al puente de red virtual “br0”:
    $ sudo virt-install --import --name hassos --memory 4096 --vcpus 4 --cpu host --disk haos_ova-10.5.qcow2,format=qcow2,bus=virtio --network network=bridged-network,model=virtio --osinfo detect=on,require=off --graphics none --noautoconsole --boot uefi
  5. Después de unos minutos, se podrá ver el dispositivo llamado “Homeassistant” en la lista de dispositivos conectados del router. Debido a que no usamos una configuración NAT, libvirt no puede saber la dirección IP que le ha sido asignada por el router a la VM. Una forma de hacer esta configuración algo más fácil, es haciendo que el servidor DHCP del router asigne siempre una IP estática a la dirección MAC de la VM. Para conseguir la dirección MAC de la VM, se puede ejecutar este comando:
    $ sudo virsh dumpxml hassos | grep "mac address" | awk -F\' '{ print $2}'

conclusión

Una vez instalado, es solo cuestión de acceder a la IP que ha sido asignada a la instancia de Home Assistant mediante el puerto 8123 para empezar a configurarlo. Como nota relacionada con la accesibilidad, durante la configuración inicial, el software solicita que se le indique la ubicación donde está la casa. Esta dirección la utiliza para cosas como la detección de presencia y las condiciones climáticas. Se le pueden indicar coordenadas (latitud y longitud) así como utilizar un sistema que detecta la ubicación aproximada de una IP pública. He encontrado mucho más fácil buscar las coordenadas en un servicio como google Maps y colocarlas de forma Manual, ya que los mapas por lo general no son accesibles, y no ofrecen la posibilidad de ingresar una dirección. También hay que decir que si la ubicación no se establece correctamente, cambiarla después implica editar un fichero yaml, lo que puede ser menos deseable.

Después de haber realizado la instalación y configuración inicial, se supone que Home Assistant será capaz de mostrar las integraciones activadas por defecto (salida/puesta de sol y el clima) en Lovelace, la interfaz del software. Esta interfaz es un tablero que se puede modificar a gusto del usuario de formas interesantes. También podemos descubrir, en el menú ajustes, si hay dispositivos que la herramienta haya podido encontrar mediante wifi, por ejemplo, y proceder a configurarlos. A partir de aquí se pueden hacer varias cosas:

  • configurar las integraciones que se deseen, desde el menú de ajustes>dispositivos y servicios.
  • Adquirir “Home Assistant cloud”, lo que permitirá que la herramienta sea accesible desde fuera de la red doméstica, así como integrarse con Alexa y google Assistant, acceso a voces TTS de alta calidad, etc.
  • Instalar complementos, desde ajustes>complementos.

Administración Linux NAS tutoriales

homeassistant kvm libvirt