Ir al contenido

← Todas las funcionalidades

Riego agrícola automatizadoRaspberry Pi (Docker)HTTPHMI / Dashboard

Arrancar una Raspberry Pi directamente en un HMI de Node-RED

Un armario de control no necesita un escritorio — necesita un único dashboard a pantalla completa que sobreviva a los reinicios. Este script configura el modo kiosk en Raspberry Pi OS Bookworm: el compositor Wayfire autoarranca Chromium apuntando al dashboard local de Node-RED, a pantalla completa, sin barras de herramientas, sin diálogos de error y con el apagado de pantalla desactivado. El resultado es el HMI táctil dedicado instalado en la caseta de bombeo de un despliegue real de riego automatizado.

Autostart de Wayfire en lugar de apaños de LXDE

Bookworm sustituyó la antigua sesión X11/LXDE por Wayland y Wayfire, así que los clásicos ficheros de autostart ya no sirven. La vía soportada es una sección [autostart] en ~/.config/wayfire.ini que lanza chromium-browser con --kiosk. Combinado con el autologin de escritorio de raspi-config, el encendido lleva al operario directo al dashboard sin teclado conectado.

Flags que mantienen el kiosk limpio

Tras un corte de corriente, Chromium suele recibirte con la barra de restaurar sesión — fatal para un HMI desatendido. --noerrdialogs y --disable-infobars suprimen los avisos, y un intervalo de comprobación de actualizaciones de un año evita ventanas sorpresa. El script también desactiva el salvapantallas y el DPMS para que el dashboard permanezca visible las 24 horas en la caseta de bombeo.

Un script que puedes ejecutar dos veces

El instalador hace copia de seguridad de wayfire.ini con marca de tiempo antes de añadir nada, avisa si ya existe una sección [autostart] en lugar de duplicarla e imprime la vía de escape para mantenimiento (consola con Ctrl+Alt+F2, Alt+F4 para cerrar Chromium). La URL del dashboard es una única variable al principio — apúntala a Nginx o directamente al puerto 1880.

Un fragmento de la implementación

Tal cual del ejemplo desplegado en el Raspberry Pi (Docker) — cópialo libremente:

set -euo pipefail

DASHBOARD_URL="http://127.0.0.1:1880/dashboard"   # URL of the Node-RED HMI
WAYFIRE_INI="$HOME/.config/wayfire.ini"

mkdir -p "$HOME/.config"
touch "$WAYFIRE_INI"

# --- Backup before touching anything ------------------------------------------
cp "$WAYFIRE_INI" "$WAYFIRE_INI.bak.$(date +%Y%m%d%H%M%S)"
echo "Backup created: $WAYFIRE_INI.bak.*"

# --- Avoid duplicates if the script runs twice ---------------------------------
if grep -q "^\[autostart\]" "$WAYFIRE_INI"; then
    echo "WARNING: an [autostart] section already exists in $WAYFIRE_INI."
    echo "Review it manually and merge the lines below if needed."
fi

# --- Kiosk autostart section ---------------------------------------------------
# chromium-browser in kiosk mode:
#   --kiosk                  full screen without toolbar or buttons
#   --noerrdialogs           no "Chromium closed unexpectedly" dialogs
#   --disable-infobars       no automation notices
#   --check-for-update-interval  do not nag about updates
cat >> "$WAYFIRE_INI" <

El ejemplo completo es un programa entero — cabecera de conexionado, setup y bucle principal — listo para adaptar a tu aplicación.

Preguntas frecuentes

La pantalla muestra el kiosk antes de que Node-RED haya arrancado. ¿Cómo evito la página de error?

O retrasas el lanzamiento con un pequeño script envoltorio con un sleep, o sirves a través de Nginx y dejas que devuelva una splash con recarga automática hasta que el upstream responda. Chromium reintenta al recargar, así que incluso un simple F5 desde la pantalla táctil lo recupera.

¿Cómo actualizo los flujos una vez que la Pi está en modo kiosk?

El editor de Node-RED sigue accesible por red en /nodered/ a través del proxy Nginx, así que editas desde un portátil. El kiosk solo bloquea la pantalla local, no los servicios que hay detrás.

¿Funciona en una Raspberry Pi con la pantalla táctil oficial de 7 pulgadas?

Sí, ese es el montaje desplegado. El táctil funciona de forma nativa bajo Wayland y, como el HMI es solo táctil, el cursor del ratón es irrelevante; ocultarlo simplemente deja el dashboard más limpio.

Funcionalidades relacionadas