Decentralized, Serverless Smart Home Network Powered Exclusively by ESP32
No Raspberry Pi. No Home Assistant. Just standalone ESP32 microcontrollers communicating directly with each other.
HomeControlStation completely flips the traditional smart home model upside down. Instead of relying on a dedicated server, hub, or central PC, this system operates entirely as a decentralized, distributed ESP32 node network.
Built for PlatformIO and Arduino IDE, every single ESP32 runs standalone firmware equipped with its own web stack, hardware state manager, and local network control routines.
- ESP32-S3 required for Master node
- 🚫 Serverless & Decentralized: No host PC / RPI required
- 👑 Master / Slave Topology: One node acts as the primary gateway while lightweight slave nodes seamlessly join the HCS network.
- 🌐 Embedded Web Interface: Configured nodes serve a local, high-speed interface via
home.localaccessible across your local network using web browser on any device. - 🛠 Dynamic Pin Mapping: Define relay switches, sensors, or dimmers directly on pinouts via software without rewriting code for every hardware variant.
- Flash Firmware: Flash the HomeControlStation firmware onto your ESP32 device using PlatformIO or Arduino IDE.
- Wi-Fi & Master Configuration: Connect to the temporary Access Point network broadcasted by the ESP32, configure the node as Master, and enter your home Wi-Fi credentials.
- GPIO Pin Assignment: Navigate to
http://home.localwithin your home network and configure the GPIO pins to run the end device in your desired hardware type (e.g., relay, sensor, switch). - Local Network Control: Use the device remotely across your home network directly from the main page.
- Add a Slave Device: Take another ESP32 device, follow the initial configuration steps, and assign it as a Slave within your HomeControlStation network.
- Slave Hardware Setup: Configure the Slave's GPIO pins to run another end device in another location or room.
- Distributed Automation: Enjoy using the powerful distributed architecture of HomeControlStation with zero external server dependencies!
New to the project? Start with the architecture and end-to-end flow guide for the Platform/Devices boundary, build-time generation, runtime lifecycle, and ESP32 UDP network diagrams.
Adding hardware support? Follow Adding a new device type for the C++ interface, JSON metadata, services, generated UI, byte layouts, and optional advanced controls.
Building a device preset? The concrete devices compiled into a firmware image are the package directories currently present under
include/devices/andsrc/device/. Use the additive activation helper documented in DevicesPredefined to copy complete opt-in packages, then runplatformio run.
The ESP32-S3 480x480 Guition terminal is integrated as the optional
DisplayS34inch PlatformIO environment:
pio run -e DisplayS34inchThe target uses the same HomeControlStation operating system, device manager, configuration, remote-control, and master/slave networking infrastructure as the other environments. It adds the Guition panel/touch driver and runs the display client application. Display-free targets do not compile or link the LVGL, Arduino GFX, GT911, or display-client implementation.
The display is a UI role, not a restricted network role. Its HCS configuration
can therefore still host local devices and select master or slave operation.
The display role only determines that the local display endpoint uses
DisplayClient instead of DisplayServer.
Found this project helpful? Give it a ⭐ on GitHub!

