Solar Installation Monitor

Built for solar, adaptable to any networked device monitoring

A US-based solar installer needed a way to give clients confidence that their systems were running. Each installation has four networked devices, and the client wanted an at-a-glance physical indicator — green means online, dark means trouble — plus a web interface for configuration.

I built a Django application that runs on a Raspberry Pi fitted with a PiHut StatusBoard Pro hat, driving up to five red/green LED strips via GPIO. Each device has configurable ping intervals and failure thresholds (e.g., 3 missed pings at 30-second intervals before the LED goes red). A Celery worker handles the background pinging, and the web dashboard lets the installer configure device IPs, network settings, and monitoring parameters — no SSH required.

The project ships with a one-line remote installer (curl ... | bash) that provisions a fresh Raspbian image end-to-end: compiles Python 3.8, sets up the Django app as a systemd service, configures a static IP with mDNS discovery, and gets everything running. Logs are written to tmpfs to minimize SD card wear — a detail that matters when these boxes sit in the field for years. I delivered the full solution within 48 hours.

The device reader is pluggable — the active class is configured as a dotted Python path in Django settings and dynamically imported, the same pattern Django uses for middleware. This made it straightforward to develop and test locally with a fake reader before deploying against real hardware.

The web interface is built on Django’s admin framework. Made very functional with minimal visual polish (function over form approach).