A ~$25 bi-color streaming panel that replaces a $200 Elgato Key Light
Full CCT control (3200K–5600K) · Home Assistant integration · Wi-Fi control · Local web UI
This project turns a cheap LED video panel + a VEEKET ESP32 2-MOS MOSFET controller into a fully smart, network-controllable studio key light — the kind of thing Elgato charges $199 for.
You get:
- Adjustable color temperature from warm tungsten (3200K) to cool daylight (5600K)
- Smooth brightness control from 0–100%
- Home Assistant integration with full automation support
- Local web UI — works even without Home Assistant
- OTA updates — flash new firmware over Wi-Fi
- Constant brightness mode — changing color temperature won't change perceived brightness
| Part | Price (approx.) | Link |
|---|---|---|
| Bi-color LED panel (3200K–5600K) | ~$15–20 | Amazon / AliExpress |
| VEEKET ESP32 2-MOS MOSFET board | ~$6–8 | Amazon / AliExpress |
| 12V DC power supply (≥3A) | ~$5–8 | Amazon / AliExpress |
| Barrel jack / wiring | ~$2 | — |
Total: ~$25–35 vs. $199 for an Elgato Key Light
┌──────────────────────────┐
│ 12V DC Power Supply │
└─────────┬────────────────┘
│
▼
┌──────────────────────────┐
│ VEEKET ESP32 2-MOS │
│ │
│ VIN ◄── 12V+ │
│ GND ◄── 12V- │
│ │
│ OUT1- (GPIO16) ──► Warm White (BLACK wire)
│ OUT2- (GPIO17) ──► Cool White (WHITE wire)
│ │
│ GPIO23 = Onboard LED │
└──────────────────────────┘
│
▼
┌──────────────────────────┐
│ Bi-Color LED Panel │
│ │
│ V+ ◄── 12V+ (shared) │
│ Warm ◄── OUT1- (BLACK) │
│ Cool ◄── OUT2- (WHITE) │
└──────────────────────────┘
Note: The LED panel's
V+wire goes directly to the 12V power supply positive. The MOSFET board switches the ground side of each LED channel.
pip install esphomeOr use the ESPHome Dashboard add-on in Home Assistant.
git clone https://github.com/el-bakkali/diy-streaming-key-light.git
cd diy-streaming-key-lightcp secrets.yaml.example secrets.yamlEdit secrets.yaml with your credentials:
wifi_ssid: "MyNetwork"
wifi_password: "MyPassword"
api_encryption_key: "your-generated-key"
ap_password: "fallback-password"Generate an encryption key at: https://esphome.io/components/api.html
First time (USB):
esphome run led-studio-panel.yamlSubsequent updates (OTA over Wi-Fi):
esphome run led-studio-panel.yaml --device led-studio-panel.localOnce flashed, the device auto-discovers in Home Assistant. You get:
| Entity | Type | Description |
|---|---|---|
Studio Light |
Light | Main CCT light with brightness + color temp |
Onboard LED |
Light | ESP32 status LED |
Restart |
Button | Reboot the device |
WiFi Signal |
Sensor | Signal strength (dBm) |
Uptime |
Sensor | Device uptime |
Free Heap |
Sensor | Available memory |
System Status |
Binary Sensor | Online/offline status |
Navigate to http://led-studio-panel.local (or the device IP) for a built-in web interface — no Home Assistant required.
- Streaming / video calls — consistent, flicker-free lighting
- YouTube / content creation — match any ambient color temperature
- Photography — soft, dimmable panel light
- Desk lamp — warm light for late-night work
- Home automation — trigger lights on meeting start, sunset, etc.
| Parameter | Value |
|---|---|
| PWM Frequency | 1220 Hz |
| Warm White Temp | 3200 K |
| Cool White Temp | 5600 K |
| Gamma Correction | 1.8 |
| Transition Time | 500 ms |
| Framework | ESP-IDF |
| Restore Mode | Restore previous state on boot |
diy-streaming-key-light/
├── led-studio-panel.yaml # Main ESPHome configuration
├── secrets.yaml.example # Template for secrets (safe to share)
├── .gitignore # Ignores secrets and build artifacts
├── LICENSE # MIT License
└── README.md # You're reading it
| Feature | Elgato Key Light | DIY Build |
|---|---|---|
| Price | $199 | ~$25–35 |
| Color Temp Range | 2900K–7000K | 3200K–5600K |
| Brightness Control | ✅ | ✅ |
| Wi-Fi Control | ✅ (proprietary app) | ✅ (Home Assistant + Web UI) |
| Home Automation | ❌ (limited) | ✅ (full HA integration) |
| OTA Updates | ❌ | ✅ |
| Open Source | ❌ | ✅ |
| Local API | ❌ | ✅ |
| Desk Mount | ✅ (included) | ❌ (DIY mount) |
| Build Quality | Premium | DIY |
| Issue | Fix |
|---|---|
| Light doesn't turn on | Check 12V power supply and wiring polarity |
| Only one color works | Verify warm/cool wires go to correct OUT terminals |
| Can't connect to WiFi | Device creates LED-Panel Fallback hotspot — connect and reconfigure |
| Flickering | Increase PWM frequency in config (try 2441 Hz or 4882 Hz) |
| Home Assistant not finding device | Ensure both are on the same network/VLAN |
MIT License — do whatever you want with it.
Built with ☕ and ESPHome
Because paying $200 for a WiFi-controlled LED is absurd.