RackDisplay – Compact MQTT e-paper server dashboard for Home Assistant

Hi everyone,

I built RackDisplay, a compact MQTT dashboard for the Elecrow CrowPanel ESP32 2.13-inch e-paper HMI.

It displays CPU usage, memory usage, temperature and availability for three servers, plus four rack temperature sensors.

Main features

  • Home Assistant publishes the complete dashboard state over MQTT
  • Ready-to-copy Home Assistant package
  • CPU, RAM and temperature monitoring for three servers
  • Four additional rack temperature readings
  • Server availability indicators
  • Wi-Fi and MQTT reconnection
  • Display refresh only when data changes
  • Manual refresh using the physical button or an MQTT command
  • OLD indicator after five minutes without valid data
  • Retained device availability and telemetry
  • QoS 1 MQTT publication
  • No cloud dependency

Hardware

The firmware currently targets:

  • Elecrow CrowPanel ESP32 2.13-inch e-paper HMI
  • ESP32-S3 with 8 MB flash and 8 MB OPI PSRAM
  • 122×250 SSD1680Z/JD79661 display

It uses Elecrow’s original display driver and GPIO mapping.

Home Assistant integration

A ready-to-copy package is included in the repository:

home-assistant/rackdisplay.yaml

Enable packages in configuration.yaml:

homeassistant:
  packages: !include_dir_named packages

Then copy the package to:

/config/packages/rackdisplay.yaml

Replace the example entity IDs with your own CPU, RAM, temperature and availability entities.

The package publishes the complete state every minute to:

homelab/rackdisplay/data

Example payload:

{
  "zeus": {"cpu": 8, "ram": 42, "temp": 41.0, "online": true},
  "loki": {"cpu": 12, "ram": 31, "temp": 38.0, "online": true},
  "ha": {"cpu": 4, "ram": 28, "temp": 45.0, "online": true},
  "rack": {"in": 30.1, "hdd": 43.6, "out": 32.4, "top": 31.7}
}

Unavailable numeric sensors are sent as JSON null instead of zero. The display keeps the last known value for those fields.

MQTT topics

Purpose Topic
Dashboard data homelab/rackdisplay/data
Device availability homelab/rackdisplay/status
Device telemetry homelab/rackdisplay/telemetry
Manual refresh homelab/rackdisplay/command/refresh

The dashboard message is published using QoS 1 with retain enabled.

MQTT credentials stay in Home Assistant’s MQTT integration and are not stored in the package.

Source code and installation guide

GitHub repository:

Home Assistant setup guide:

The project is open source under the MIT license.

The current version was tested with Home Assistant 2026.8.3.

Feedback and contributions are welcome, especially from anyone using the same CrowPanel hardware or adapting the dashboard to other server monitoring setups.