Smart LED controller
Custom ESP32 controller with my own PCB design and dual power-supply architecture, driving both analog and digital LED strips with MQTT integration into Home Assistant.
- Year
- 2023
- Hardware
- ESP32
OutcomeTwo-room lighting on one custom board, controlled from Home Assistant and automated with no cloud dependency.
The problem
Off-the-shelf LED controllers either can’t drive both analog and digital strips, or they put a cloud account between me and my own lights. I wanted one board that handles both, stays local, and does its own power management.
Constraints
- Two strip types, one controller. PWM for analog strips and a data line for addressable digital strips.
- Two supply rails. 5 V for logic and a separate higher-current rail for the strips — without the strip current behaving badly through the logic ground.
- Local only. No vendor cloud; control through MQTT, automation in Home Assistant.
What I did
Designed the board in KiCad — schematic capture, layout, and bring-up, including the dual-supply architecture with proper ground handling between logic and load rails.
Wrote firmware for both strip types, with PWM dimming for analog strips and a drive routine for digital ones, selecting between them in configuration.
Integrated MQTT into Home Assistant so state and control follow the standard lighting entity model, meaning the existing dashboards and automations work without special-casing.
Trade-offs
- Two rails instead of one. More parts and a more complex schematic, but a single rail would let the strip current modulate the logic supply — the classic flicker-when-bright bug.
- MQTT over a custom API. Adds a broker dependency, but makes the device a first-class citizen in Home Assistant instead of a bespoke integration nobody else can maintain.
What I’d do differently
I’d add in-circuit current measurement on the strip output in v1. Debugging lighting behaviour without being able to see the actual output current meant inferring too much from the visuals.