Skip to content

wallpanel-control

License: MIT Python cosalette

MQTT bridge for controlling a wall-panel display and system via SSH and Wake-on-LAN.


wallpanel-control translates typed JSON MQTT commands into SSH-executed backlight writes and power actions on a dedicated wall-panel device. The app connects to an always-on device (e.g. a small x86 SBC running a kiosk browser) via SSH and exposes two command channels: one for display state and brightness, and one for system actions such as wake, suspend, and hibernate. Unavailable-device scenarios are surfaced through the availability field in state payloads rather than connection-level errors. Wake-on-LAN handles power-on for the suspend/hibernate use case.


Features

  • Typed JSON MQTT command and state topics -- no raw strings or legacy topic aliases
  • Display control: turn on/off and set backlight brightness (1-100%) in a single command
  • System actions: wake (WoL), suspend, and hibernate via SSH
  • Availability reported per-state payload -- no separate availability topic required
  • Error published to {prefix}/error (QoS 1, not retained) on adapter failures
  • Configurable SSH host, user, key path, port, and timeout
  • Configurable sysfs backlight path for different hardware

Hardware

Component Details
Wall panel device Linux device with a GNOME desktop session (Intel NUC, x86 board, ...)
Display backlight Intel backlight via sysfs (configurable path)
Screen on/off GNOME Mutter via busctl --user set-property org.gnome.Mutter.DisplayConfig
Network Ethernet or Wi-Fi with WoL support for power-on
SSH access Public-key authentication required

  • Getting Started


    Install wallpanel-control and see your first MQTT messages.

    Get started

  • Configuration


    All settings — environment variables, .env files, and CLI flags.

    Configure

  • MQTT Topics


    Topic reference with payload schemas, directions, and retain flags.

    Topics

  • ADRs


    Architecture decision records documenting design choices.

    Decisions