A self-recovering, network-aware, IoT-based power and monitoring controller for home servers.
| Circuit Connection | Circuit Board | System Flowchart |
|---|---|---|
![]() |
![]() |
![]() |
| Display – CPU Usage and Temperature | Display – RAM & HDD Usage | Blynk App |
|---|---|---|
![]() |
![]() |
![]() |
This project is a custom-built server management system powered by an ESP32 microcontroller, designed to provide full remote power control, monitoring, and automation for a home or small-scale server setup.
It acts as a DIY alternative to IPMI, combining hardware control, MQTT telemetry, and a visual LED interface into a single, reliable system. The ESP32 continuously monitors the server’s state (via the motherboard’s Power LED and network ping), manages cooling and ambient lighting, and can even hard reboot itself if a freeze is detected — ensuring true long-term reliability.
- 🔌 Full Power Control – Remotely power ON/OFF or force shutdown the server via relay-triggered GPIO.
- 🌐 Real-Time State Detection – Reads motherboard Power LED and ping responses to determine exact server state (Offline / Disconnected / Online).
- ♻️ Self-Recovery System – Hardware circuit (Relay + MOSFET + BJT + Capacitor) performs complete ESP32 power cycle if it becomes unresponsive.
- 🌡️ Fan Speed Control – PWM-based temperature-dependent fan control using MOSFET driver.
- 💡 Ambient Lighting – Brightness-controllable warm-white LED strips managed through the app.
- 🖥️ Visual Display – 96×48 RGB LED matrix shows server metrics and status in real time.
- ☁️ MQTT Integration – Fetches CPU, RAM, disk, network, and temperature data via Mosquitto broker.
- 📱 Remote Access via Blynk IoT – GUI for control, monitoring, and terminal commands.
- 🔁 OTA Updates – Easily upgrade firmware without physical access.
- Programmed in C/C++ (Arduino IDE) — ~1100 lines of optimized firmware.
- Uses a single-ping high-frequency detection loop (10–15 Hz) for faster state updates.
- Built-in drop counter avoids false offline detections.
- DNS failover: uses
1.1.1.1to stay independent of home DNS failures. - Fully inverter-backed power for continuous uptime.
- Default GPIO states ensure fail-safe operation even during MCU failure.
| Component | Description |
|---|---|
| ESP32 | Main controller |
| DPDT 5 V Relay | Mechanical relay for self-reboot circuit |
| MOSFET ×3 | Fan control, lighting control, relay trigger |
| BJT Transistor + 3300 µF Capacitor | Delayed relay power hold for self-restart |
| Voltage Divider | Reads 5 V Power LED signal safely at 3.3 V |
| 96×48 RGB LED Matrix | Real-time visual status display |
| 5 V USB Power | Drawn from motherboard front header (always live) |
- Replace Blynk with a self-hosted Progressive Web App (PWA) for full control without external dependencies.
- Publish detailed circuit diagram and PCB layout.
- Open-source the Python MQTT publisher for server metrics.
Devansh Tangri
Designed, built, and programmed from the ground up to achieve total server autonomy, reliability, and convenience.
ESP32 IoT HomeServer Automation Blynk MQTT Hardware Arduino Microcontroller ServerManagement
This project is open-source under the MIT License.
Feel free to fork, modify, and build upon it for your own setups.





