Elecrow ESP32-P4: integración con HA Container en una Raspberry Pi 4

Si hemos decidido utilizar la pantalla de Elecrow como monitor adicional de Home Assistant, el procedimiento es muy sencillo: basta con instalar el complemento correspondiente desde HA, tal y como se explica en su manual de usuario.

Sin embargo, este procedimiento solo es válido para quienes utilizan Home Assistant OS (HAOS), que incluye Supervisor y permite instalar complementos (add-ons).

¿Y qué ocurre con los que usamos Home Assistant Container? En esta modalidad no disponemos de Supervisor ni de la tienda de complementos, por lo que no podemos seguir directamente las instrucciones (ni la ayuda) de Elecrow. La solución pasa por ejecutar el servicio necesario en un contenedor Docker independiente. Precisamente eso es lo que hemos conseguido en PCDEMANO: adaptar el complemento original para que funcione también con instalaciones basadas en Docker, sin necesidad de cambiar a HAOS manteniendo intactos los servicios que ya funcionan en la Raspberry Pi.

Entorno de trabajo

La instalación se ha realizado sobre el siguiente entorno:

ElementoConfiguración
Hardware servidorRaspberry Pi 4 8GB de RAM
ArquitecturaARM64 / aarch64
SistemaRaspberry Pi OS (Debian 13.3 Trixie)
ContenedoresDocker
Docker Compose5.0.1
Home AssistantHome Assistant Container
Imagen HAlinuxserver/homeassistant
Directorio de Docker/opt/mydockers
PantallaElecrow ESP32-P4 Advance Panel
Tamaño de pantalla10,1 pulgadas
Resolución1024 × 600 píxeles
Servidor Elecrowgrovety/crow-ws-server:1.2.5

Home Assistant se ejecuta en el contenedor homeassistant, utilizando el modo de red host y escuchando en el puerto 8123.

Arquitectura de la solución

El proyecto utiliza el software disponible en el repositorio:

https://github.com/fintros/crow-ha

El servidor se ejecuta independientemente de Home Assistant y establece la comunicación con el panel ESP32-P4.

La arquitectura puede resumirse así:

El panel no ejecuta directamente Home Assistant ni necesita disponer de un navegador web completo.

El contenedor crow-ha ejecuta Chromium en un entorno virtual Xvfb. El navegador abre la interfaz web de Home Assistant, mientras que el bridge se encarga de capturar la pantalla, transmitir las imágenes al panel y recibir los eventos táctiles.

La comunicación utiliza WebSocket seguro (WSS), con certificados TLS generados y conservados en el almacenamiento persistente del contenedor.

Preparación del servidor

En primer lugar, clonamos el repositorio en el directorio de trabajo de la RPi:

El repositorio contiene la estructura original del complemento de Home Assistant, incluyendo el código del servidor, los scripts de arranque y los archivos de configuración.

Como hemos comentado nuestra instalación no dispone de Supervisor por lo que no podemos utilizar el complemento directamente. En su lugar, ejecutamos la imagen Docker del servidor.

Para ello, creamos un directorio independiente:

Configuración de Docker Compose

Creamos el archivo compose.yaml:

Hay varios detalles importantes en esta configuración.

network_mode: host

Es fundamental para nuestra instalación. Al utilizar la red del anfitrión, el contenedor puede acceder a Home Assistant mediante 127.0.0.1:8123, ya que ambos servicios comparten el espacio de red de la Raspberry Pi.

URL_BASE

Indica al servidor dónde encontrar Home Assistant. No debemos utilizar el nombre de un servicio Docker ni una dirección IP diferente, puesto que estamos utilizando el modo de red host.

SCREEN_COUNT

Establece el número de pantallas virtuales que gestionará el servidor. En nuestro caso, una.

PANEL_AUTH

Mantiene habilitado el mecanismo de autenticación del panel.

AUDIO_ENABLED

Habilita las funciones de audio del servidor para poder reproducir «alarmas» directamente en la pantalla de ELECROW.

Persistencia de datos

El volumen ./data:/data es especialmente importante. Conserva los certificados TLS, las sesiones y los tokens de autenticación entre reinicios y recreaciones del contenedor.

No debemos borrar este directorio una vez que la instalación está funcionando.

Arranque y comprobación

Desde el directorio del proyecto ejecutamos:

Comprobamos que el contenedor está funcionando:

Para consultar los registros:

El servidor escucha por defecto en el puerto TCP 3000.

Una vez conectado el panel, el servidor autentica el dispositivo y establece la sesión correspondiente.

La instalación quedó funcionando correctamente, conectándose primero a la WiFi y luego mostrando Home Assistant en la pantalla Elecrow y permitiendo la interacción táctil.

Autenticación y seguridad

El servidor utiliza TLS para proteger la comunicación WebSocket entre el panel y la Raspberry Pi.

Los certificados se conservan en:

Las sesiones de Home Assistant se guardan en:

Los archivos de sesión contienen tokens de acceso y renovación de Home Assistant. Por tanto, deben protegerse adecuadamente y no compartirse públicamente.

Si te preocupa la Seguridad, también es recomendable utilizar una cuenta de Home Assistant específica para el panel, con los permisos estrictamente necesarios.

68
Suscribirse
Notificación
1 Comment
1
0
¡Aquí puedes dejar tus comentarios!x