Instalación y personalización de Home Assistant OS en Odroid M1

Vamos a instalar la distribución oficial de Home Assistant OS en una Odroid M1 para, a continuación, personalizar la instalación resultante con permitir ciertas configuraciones útiles en el sistema.

El interés de este ordenador, sobre el que ya hemos trabajado, es que incorpora 8 GB de RAM y un slot M.2, ademas de su bajo consumo, con lo que obtendríamos una configuración similar e incluso superior a los actuales Home Assistant Blue y Home Assistant Yellow.

Instalación

Imagen de Home Assistant

En primer lugar, descargaremos la imagen para tarjeta microSD disponible en GitHub.

Por ejemplo, para la versión 10.5, podemos usar wget.

$ wget https://github.com/home-assistant/operating-system/releases/download/10.5/haos_odroid-m1-10.5.img.xz

A continuación, insertamos una tarjeta de al menos 8 GB y descomprimimos ahí la imagen.

# xz -dc haos_odroid-m1-10.5.img.xz | pv | dd of=/dev/sdc bs=4M status=progress

Solo queda extraer la tarjeta e introducirla en la Odroid M1.

Preparación del hardware

Para la preparación del hardware, vamos a necesitar los siguientes elementos:

  • Batería CR2032
  • Disco M.2 NVMe
  • Disipador para discos NVMe
  • Tarjeta microSD con la imagen indicada en la sección anterior
  • Adaptador ZigBee

Odroid M1 tiene la opción de montar una batería para mantener la hora del sistema durante los apagados. Procederemos a instalar una CR2023 en el zócalo destinado a tal fin en la placa. Cuidaremos que las dos pestañas queden sobre el polo positivo de la batería, mientras que el negativo encaje con la base del zócalo.

Por otro lado, debido a nuestra intención de tener trabajando el dispositivo en 24/7, vamos a mejorar la capacidad de ventilación del disco NVMe que le vamos a instalar. Para ello, utilizaremos un disipador específico para este tipo de dispositivos.

En nuestro caso, hemos elegido uno que consta del disipador propiamente dicho, dos almohadillas y un soporte de aluminio.

Comenzamos pegando una de las almohadillas, tras retirar el protector de plástico, a la parte de abajo del NVMe.

Dejamos caer el NVMe sobre el soporte de aluminio de modo que ambos ajuntes por el lado de la muesca para el tornillo de sujección.

Ponemos la segunda almohadilla sobre el NVMe, cosa que podemos hacer directamente sobre la etiqueta del disco, puesto que esta es de aluminio y apenas afectará a la conductividad térmica del conjunto.

Colocamos el disipador sobre el conjunto, cuidando de nuevo de ajustar por el lado de la muesca.

Finalmente, atornillamos el bloque resultante.

Ya podemos colocar el NMVe en la Odroid M1.

Caja

Vamos a imprimir una caja en la impresora 3D. Para ello, haremos uso del diseño disponible en Thingiverse. Este consta de 2 partes que se ensamblan entre ellas mediante tornillos.

Se recomienda la impresión con PLA con un relleno del 20% de tipo cúbico. Para el ensamblaje basta con seguir las guías para ambas piezas.

Con esto, tenemos la Odroid M1 en su caja.

Primer arranque

El primer arranque se llevará a cabo con el propio encendido de la Odroid M1.

Si conectamos una pantalla a nuestra Odroid M1, veremos que, inicialmente, aparecerá una serie de mensajes de estado que se mantendrán durante varios minutos.

Poco después aparecerá una pantalla de presentación que indica la IP asignada al dispositivo.

Desde un navegador en cualquier máquina de nuestra red accederemos a la dirección IP de nuestra Odroid M1 en el puerto 8123, donde nos mostrará una pantalla de espera.

A continuación se nos pedirá acceso o, en su caso, registro.

Una vez creada la cuenta, nos pedirá que demos un nombre al entorno que deseamos domotizar y datos de ubicación:

A continuación, podremos añadir los dispositivos que Home Assistant haya detectado en la red doméstica o añadir nuevos desde la opción «Más»:

Ahora tenemos una versión de Home Assistant OS funcionando en nuestra Odroid M1.

Personalización

Vamos a personalizar nuestro sistema, para lo que comenzaremos activando el modo avanzado en nuestro perfil de usuario.

SSH

Para agregar la posibilidad de conexión vía SSH a la Odroid M1 iremos a «Ajustes» -> «Complementos» y buscamos el complemento «Terminal & SSH».

Seleccionamos el «add-on» y pulsamos en [INSTALAR].

Tras unos segundos, podremos iniciar el servicio pulsando en [INICIAR].

Vamos a acceder al directorio ~/.ssh del usuario de nuestro sistema Linux y copiamos el contenido del archivo id_rsa.pub, el cual pegaremos en el campo «Authorized Keys». Pulsamos [GUARDAR] para que los cambios tengan efecto.

Asimismo, en la sección Red editamos el puerto de conexión, de modo que ponemos el 22. Pulsamos [GUARDAR] para que los cambios tengan efecto.

Finalmente, podremos acceder vía SSH al dispositivo.

Welcome to the Home Assistant command line.

System information
  IPv4 addresses for eth0:  192.168.2.184/24
  IPv6 addresses for eth0:  0000::0000:0000:0000:0000/64
  IPv4 addresses for wlan0: 

  OS Version:               Home Assistant OS 10.5
  Home Assistant Core:      2023.8.3

  Home Assistant URL:       http://homeassistant.local:8123
  Observer URL:             http://homeassistant.local:4357
[core-ssh ~]$ 

Consumo

Home Assistant OS se instala con los parámetros indicados en la tabla.

ParámetroArchivoValor
CPU Scaling Governor/sys/devices/system/cpu/cpufreq/policy0/scaling_governorperformance
CPU Scaling Min. Freq./sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq408000
CPU Scaling Min. Freq./sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq1992000
GPU Governor/sys/devices/platform/fde60000.gpu/devfreq/fde60000.gpu/governorsimple_ondemand
GPU Min. Freq./sys/devices/platform/fde60000.gpu/devfreq/fde60000.gpu/min_freq200000000
GPU Max. Freq./sys/devices/platform/fde60000.gpu/devfreq/fde60000.gpu/max_freq800000000
PCIe Governor/sys/module/pcie_aspm/parameters/policydefault [performance] powersave powersupersave

Sería interesante poder cambiar la política de gestión de CPU a «conservative» pero, por el momento, no conocemos ningún modo no invasivo que permita cambiar los contenidos del directorio /sys.

Almacenamiento

Resulta recomendable que la configuración del sistema y, sobre todo, el almacenamiento de la base de datos se encuentre en un dispositivo más fiable que una tarjeta microSD. Así, vamos a utilizar, en este caso, el disco NVMe que hemos instalado en nuestra Odroid M1.

Para ello, desde la sesión SSH vamos a comprobar la información del actual disco de datos.

[core-ssh ~]$ ha os info | grep data_disk

Obtendremos el identificador del actual disco de datos.

data_disk: SD32G-0x84000000

Con el nuevo disco conectado, que no necesitamos que esté previamente particionado, preguntamos al sistema por la lista de discos disponibles.

[core-ssh ~]$ ha os datadisk list
devices:
- SPCC-M.2-PCIe-SSD-AA000000
disks:
- dev_path: /dev/nvme0n1
  id: SPCC-M.2-PCIe-SSD-AA000000
  model: SPCC M.2 PCIe SSD
  name: SPCC M.2 PCIe SSD (AA000000)
  serial: AA000000
  size: 1000204886016
  vendor: ""

Solo queda por indicar a Home Assistant que mueva el contenido actual al nuevo disco.

[core-ssh ~]$ ha os datadisk move /dev/nvme0n1

Tardará unos minutos en realizar el proceso, que incluirá el reinicio del dispositivo.

A partir del reinicio indicado, el sistema estará funcionando con el disco USB como almacenamiento principal, cosa que podremos comprobar con el comando mount.

/dev/nvme0n1p1 on /addons type ext4 (rw,relatime,commit=30)
/dev/nvme0n1p1 on /backup type ext4 (rw,relatime,commit=30)
/dev/nvme0n1p1 on /share type ext4 (rw,relatime,commit=30)
/dev/nvme0n1p1 on /data type ext4 (rw,relatime,commit=30)
/dev/nvme0n1p1 on /config type ext4 (rw,relatime,commit=30)
/dev/nvme0n1p1 on /ssl type ext4 (rw,relatime,commit=30)
/dev/nvme0n1p1 on /media type ext4 (rw,relatime,commit=30)
/dev/nvme0n1p1 on /run/audio type ext4 (ro,relatime,commit=30)
/dev/nvme0n1p1 on /etc/asound.conf type ext4 (ro,relatime,commit=30)
/dev/nvme0n1p1 on /etc/resolv.conf type ext4 (rw,relatime,commit=30)
/dev/nvme0n1p1 on /etc/hostname type ext4 (rw,relatime,commit=30)
/dev/nvme0n1p1 on /etc/hosts type ext4 (rw,relatime,commit=30)
/dev/nvme0n1p1 on /etc/pulse/client.conf type ext4 (ro,relatime,commit=30)

4 comentarios

Deja un comentario