Wallpanel con PC táctil y Home Assistant: Cómo lo hice

- Mi casa domotizada: Índice e introducción
- Planificación y primero pasos domotizando mi casa
- Domótica y Home Assistant: 12 meses después
- Así domoticé la piscina
- Así domoticé el cerco eléctrico
- Así domoticé mis ventiladores en las habitaciones
- Así domoticé la apertura remota del pestillo de la entrada exterior
- Así domoticé el riego a goteo del jardín del frente
- Así domoticé la puerta del Garage
- Así domoticé las luces exteriores automáticas durante la noche
- Así domoticé interruptores de escaleras (conmutados)
- Mi wallpanel casero 1
- Mi wallpanel casero 2
En el artículo sobre la HP all-in-one que compré para usar como wallpanel conté por qué terminé eligiendo una PC táctil en lugar de una tablet. Acá voy a documentar la otra mitad del proyecto: cómo dejé Debian y KDE Plasma funcionando como kiosco y cómo conecté todo con Home Assistant para que la pantalla se encienda al detectar movimiento y se apague cuando la cocina queda vacía.
Este es un artículo con detalles técnicos y del funcionamiento. Para una visión más liviana y general del proyecto, ve al artículo que cito al principio ☝️.
La configuración lleva funcionando de manera estable con:
- Debian 13 (Trixie);
- KDE Plasma 6 sobre Wayland;
- Chromium en modo kiosco;
- Home Assistant;
- Un sensor de movimiento PIR Zigbee;
- SSH para comunicar Home Assistant con la PC;
kscreen-doctorpara controlar la pantalla interna.
La idea es que la PC permanezca encendida y con Chromium abierto, pero no necesariamente con la pantalla iluminada las 24 horas. Cuando el sensor Zigbee detecta movimiento, Home Assistant manda encenderla; después de un minuto sin movimiento, manda apagarla. En el video pueden ver como es quedaría la activación de la pantalla mediante detección de movimiento por sensor PIR:
🧭 Cómo funciona todo
|
|
Dato importante: no apago ni suspendo la PC. Solamente apago la salida de video mediante DPMS. Chromium, Plasma y la conexión de red continúan funcionando y la pantalla vuelve casi inmediatamente cuando alguien entra en la cocina.
🔑 Inicio de sesión automático en Plasma
Para que el panel se recupere solo después de un corte de energía, configuré el inicio de sesión automático del usuario javier en SDDM.
En esta instalación, el archivo está en:
|
|
Y contiene:
|
|
La sesión que inicia SDDM es Plasma sobre Wayland. Esto no es solamente lo que seleccioné en la pantalla de inicio: lo comprobé también con loginctl, que informa Type=wayland para la sesión gráfica activa.
🌐 Chromium como kiosco
En Debian, el paquete se llama chromium:
|
|
Para abrir el panel automáticamente creé ~/.config/autostart/chromium.desktop:
|
|
El sleep 8 le da unos segundos a la sesión y a la red antes de abrir Home Assistant. --kiosk elimina las barras y deja el dashboard a pantalla completa. Esto puede resultar molesto en ocaciones donde se desconecta del WiFi o cuando queremos actualizar y necesitamos ingresar una contraseña, pero es en términos estéticos, es la mejor opción.
En algunas guias puede aparecer diferentes opciones de inicio pero en esta versión de Chromium no necesité agregar --ozone-platform=wayland: los procesos de renderizado ya se están ejecutando con esa opción. Si en otra instalación Chromium cae sobre XWayland, se puede forzar desde la línea Exec.
🔒 Bloqueo y ahorro de energía
Desactivé el bloqueo automático desde las preferencias de Plasma. La configuración efectiva de ~/.config/kscreenlockerrc quedó así:
|
|
También desactivé la suspensión y el apagado automático de pantalla para alimentación de corriente alterna. Puede parecer contradictorio, porque justamente quiero apagar el monitor, pero de esta manera solamente Home Assistant decide cuándo hacerlo y no quedan dos temporizadores peleándose por el estado de la pantalla.
En ~/.config/powerdevilrc quedó:
|
|
🖥️ Por qué uso kscreen-doctor
Aquí entramos en tema. Hay diferentes maneras de llegar al mismo resultado, o al menos eso es lo que estuve leyendo. Estas soluciones pueden diferir según el hardware que se esté usando. Por ejemplo, investigué HDMI-CEC y DDC/CI: Ambos sirven para controlar pantallas, pero no eran el camino correcto para esta PC:
- HDMI-CEC está pensado principalmente para comunicar equipos conectados por HDMI, como televisores y reproductores.
- DDC/CI permite ajustar monitores externos compatibles mediante el canal DDC.
- La pantalla de esta all-in-one aparece en Plasma como
eDP-1: es un panel interno conectado mediante embedded DisplayPort, no un monitor externo expuesto por HDMI o DisplayPort.
El comando kscreen-doctor -o confirma que eDP-1 es el único panel, trabaja a 1920 × 1080 y que el control de brillo está disponible. Para apagarlo y encenderlo no necesito controlar físicamente el monitor: Plasma puede cambiar su estado DPMS desde la propia sesión Wayland.
🔌 Acceso SSH desde Home Assistant
Paso obligatorio es instalar y habilitar en la HP el servidor SSH, ya que la comunicación entre equipos será de esta manera. Este aspecto no falló nunca en meses de uso.
|
|
Luego generé en Home Assistant una clave dedicada llamada id_wallpanel y copié su clave pública a /home/javier/.ssh/authorized_keys en la HP. La clave privada queda en:
|
|
Desde el complemento Terminal & SSH, la conexión puede probarse así:
|
|
No hace falta habilitar el acceso desde Internet ni usar una contraseña: toda la comunicación ocurre dentro de la red local y utiliza una clave exclusiva para esta tarea.
📜 Scripts para controlar la pantalla
Estos scripts son los encargados de que la magia se produzca.
Los comandos se ejecutan por SSH, fuera del entorno de la sesión gráfica. Por eso no alcanza con invocar kscreen-doctor: primero hay que indicarle dónde están el runtime de javier, el socket de Wayland y el bus de D-Bus de la sesión.
El script /home/javier/monitor-on.sh es:
|
|
Y /home/javier/monitor-off.sh:
|
|
Los marqué como ejecutables:
|
|
Las variables cumplen estas funciones:
| Variable | Función |
|---|---|
XDG_RUNTIME_DIR |
Indica el directorio de runtime de la sesión de javier. |
WAYLAND_DISPLAY |
Apunta al socket wayland-0 de la sesión gráfica. |
DBUS_SESSION_BUS_ADDRESS |
Permite que el comando acceda al bus de D-Bus del usuario. |
QT_QPA_PLATFORM |
Hace que la aplicación Qt utilice Wayland. |
El valor 1000 corresponde al UID real del usuario javier en esta PC. En otro equipo conviene comprobarlo con id -u javier.
🏠 Los shell_command de Home Assistant
Estos comandos son los encargados de “invocar la magia” que realizan los scripts de arriba y que se encuentran en el wallpanel. Estos serán ejecutados mediante los dos scripts que aprecen más abajo. Parece complejo pero no lo es tanto.
En configuration.yaml definí dos comandos:
|
|
Esta es la configuración que está funcionando actualmente. StrictHostKeyChecking=no evita una pregunta interactiva la primera vez que Home Assistant encuentra la HP, aunque lo más prolijo es guardar su huella en /config/.ssh/known_hosts y usar ese archivo. La documentación de Home Assistant sobre shell_command explica ese método.
Después de modificar configuration.yaml hay que comprobar la configuración y reiniciar Home Assistant para que aparezcan los nuevos servicios.
🎬 Scripts de Home Assistant
Estos scripts ejecutan los comandos que gatillan los scripts ubicados en el wallpanel.
El script de encendido llama al shell_command correspondiente:
|
|
El de apagado hace lo mismo con el otro comando:
|
|
Acá es fácil confundirse con los nombres: la entidad real de apagado es script.wallpanel_hp_monitor_off, aunque su alias visible sea «Wallpanel hp off».
🚶 Automatización por movimiento
El sensor Zigbee de la cocina expone binary_sensor.movimiento_cocina_occupancy. La automatización enciende la pantalla cuando pasa de off a on; cuando vuelve a off, espera un minuto antes de apagarla:
|
|
El mode: restart hace que una ejecución nueva reemplace a la anterior. Así la automatización siempre responde al cambio más reciente del sensor.
🏆 Resultado final
Después de varios intentos, el wallpanel quedó haciendo exactamente lo que quería:
- Arranca Debian e inicia Plasma automáticamente;
- Abre el dashboard de Home Assistant en Chromium;
- Funciona sobre Wayland y conserva la interacción táctil;
- No bloquea ni suspende la sesión por su cuenta;
- Enciende la pantalla cuando detecta movimiento;
- Apaga solamente el panel después de un minuto de inactividad;
- Mantiene la PC, Plasma y Chromium activos mientras la pantalla está apagada.
Al revisar esta configuración, la HP llevaba más de dos meses encendida sin reiniciarse. No es una prueba científica de nada, pero sí una buena señal para un aparato que tiene que quedarse colgado en la cocina y funcionar sin demasiadas ceremonias.
📚 Referencias
- Paquete Chromium en Debian
- Integración
shell_commandde Home Assistant y uso de SSH unclutter-xfixesen las páginas de manual de Debian
La imagen con el Aguará Guazú que uso de portada fue generado con ChatGPT, al igual que los scripts para este proyecto.