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
OLDindicator 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.
