← Back to Projects

Personal Project · Active

ESP Home Server

PythonESP32ESP-IDFCC++ElevenLabsHTTPFirmwareHardware

ESP Home Server is a local-network-first home automation system built around a network of ESP32 devices. A handheld voice controller (Waveshare ESP32-C6 Touch AMOLED) streams hold-to-record mono PCM audio to a Python HTTP server over Wi-Fi. The server transcribes with ElevenLabs, resolves the command through a registry, and dispatches events to registered devices — displays, cameras, button nodes — which poll or expose endpoints depending on their role.

The system supports multi-turn conversations (a 'set timer' command prompts for duration if not supplied), a script-based action registry for packaged server-side tasks, and an expanded browser dashboard showing device state, recent commands, startup diagnostics, active timers, and action test controls. A relay server enables authenticated external access to the dashboard and device feeds from outside the local network, with a Windows pairing agent that keeps the relay informed of the server's current IP. Each firmware project is a standalone ESP-IDF build targeting different chips — ESP32-C6 for the voice controller and display nodes, ESP32-C3 for button nodes, standard ESP32 for camera modules. The server persists the device registry, command history, and a local firmware catalog for future OTA rollout.

Media

Browser dashboard — device state, recent commands, diagnostics, and action controls
Browser dashboard — device state, recent commands, diagnostics, and action controls
Dashboard devices tab — registered devices with online/offline state
Dashboard devices tab — registered devices with online/offline state
Device details — firmware version, capabilities, and event queue
Device details — firmware version, capabilities, and event queue
Relay server — connected devices registered for external access
Relay server — connected devices registered for external access
Relay server — event log for proxied external requests
Relay server — event log for proxied external requests

Key Contributions

01

Waveshare ESP32-C6 Touch AMOLED voice controller streaming chunked PCM to a local Python server

02

ElevenLabs speech-to-text → command registry → device event dispatch pipeline

03

Multi-turn conversation support — commands can prompt for missing parameters before resolving

04

Relay server for authenticated external access to the dashboard and device feeds

05

Windows tray pairing agent keeping the relay updated with the server's current local IP

06

Browser dashboard with device state, recent commands, diagnostics, timers, and action controls

07

Media proxy routing camera and audio streams through the server to prevent device overload

08

Eight ESP-IDF firmware projects across ESP32-C6, ESP32-C3, and ESP32 device families

09

Local firmware catalog with semantic versioning (d/s/p channels) for future OTA rollout