[Project] RPi MQTT Monitor - Zero-config Linux/Pi health tracking (Now with GPU, SSD & x86 support!)

Hey everyone,

I originally started this project about 5-6 years ago and shared it here a couple of years back. It’s a Python script for monitoring Raspberry Pi system stats and sending them to Home Assistant.

Recently, I’ve put a ton of work into expanding it. I wanted to re-share it because it is no longer just for Raspberry Pis. If you run Home Assistant (or other services) on a Linux Mini-PC, NUC or old laptop, this is now a lightweight, highly automated way to monitor those systems too.

Link to GitHub: rpi-mqtt-monitor
Link to Documentation

What it does: It runs as a background service on your Linux machine, gathers system health metrics, and publishes them to your MQTT broker. It fully supports MQTT Auto-Discovery, meaning you just run the script and the device/sensors automatically populate in Home Assistant with zero manual HA configuration.

What’s new in the recent updates:

  • x86 / Mini-PC Support: It now properly monitors CPU voltage on non-Pi hosts via hwmon.
  • GPU Monitoring: Native, rootless sensor tracking for NVIDIA, AMD, and Intel GPUs (Utilization, VRAM, Power, Temp).
  • SSD Health: Autodetects drives and tracks SMART data like wear/life used (%), power-on hours, and Terabytes Written for both NVMe and SATA drives.
  • Display Control: It creates buttons right inside HA to turn attached monitors on or off (supports X11, wlroots, vcgencmd, and ddcutil).
  • Interactive Configurator: I added a Terminal UI (rpi-mqtt-monitor -c) so you can easily edit the config using arrow keys instead of messing with a text editor.
  • Advanced MQTT: Now supports MQTT over TLS/SSL and WebSockets.
  • Multiple Drives & IPs: Track free space across multiple mount paths and monitor local/external IP changes.

Easy Installation: There is a one-line automated setup script that handles dependencies, detects your hardware (GPUs, SSDs, Displays), and sets up the systemd service for you.

Here is what the auto-discovered device looks like in Home Assistant:

Here is how the new config. tool looks:

I'd love for you to give it a try. Feedback, bug reports, and pull requests are always welcome!