Introduction

Ambient bias lighting — soft illumination placed behind a TV or monitor — reduces eye strain, enhances perceived contrast, and creates an immersive viewing experience. Take it a step further with dynamic ambient lighting that matches the colors on your screen in real time: explosions bloom red across your wall, forest scenes cast green hues, and sunsets paint warm orange glows behind your display. This guide compares three self-hosted platforms for building and controlling dynamic ambient lighting: Hyperion.NG, ESPHome with addressable LEDs, and WLED.

All three are open-source, run on inexpensive ESP32 or Raspberry Pi hardware, and integrate with Home Assistant, Plex, and other smart home platforms. The key differences lie in their primary focus: Hyperion.NG is purpose-built for screen-matching ambient TV lighting, ESPHome is a general-purpose firmware for custom LED automation, and WLED specializes in standalone addressable LED effects.

Platform Comparison

FeatureHyperion.NGESPHome LEDWLED
Primary Use CaseTV bias lighting with screen captureCustom LED automations and sensor integrationStandalone LED effects and art installations
GitHub Stars3,797+11,223+18,192+
Screen CaptureUSB/HDMI grabber, platform captureN/A (automation-focused)N/A (effects-focused)
LED Strip SupportWS2812B, SK6812, APA102, LPD8806WS2812B, SK6812, APA102, and 10+ moreWS2812B, SK6812, APA102, TM1814, and 15+ more
Hardware PlatformRaspberry Pi + Arduino/ESP32ESP32, ESP8266, BK72xx, RP2040ESP32, ESP8266
Web InterfaceBuilt-in configuration and live previewESPHome Dashboard (separate)Built-in effects and color control
Effects Library20+ effects + screen captureProgrammable via YAML automations125+ built-in effects
Home Assistant IntegrationYes (MQTT/API)Native (auto-discovery)Native (auto-discovery)
Sync Multi-DeviceYes (Hyperion forwarder)Limited (requires custom config)Yes (WLED UDP sync)
Docker DeploymentYesYes (ESPHome Dashboard)N/A (ESP32 firmware)

Deploying Hyperion.NG for TV Bias Lighting

Hyperion.NG is the gold standard for screen-matching ambient lighting. It captures your display signal via a USB HDMI capture device or software screen grabber, analyzes the edge pixel colors, and drives LED strips in real time:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
version: "3.8"
services:
  hyperion:
    image: sirfragalot/hyperion.ng:latest
    network_mode: host
    devices:
      - /dev/video0:/dev/video0
      - /dev/ttyUSB0:/dev/ttyUSB0
    volumes:
      - hyperion_data:/root/.hyperion
    privileged: true
    environment:
      - TZ=America/New_York
    restart: unless-stopped

volumes:
  hyperion_data:

After deployment, access the Hyperion.NG web interface at http://<pi-ip>:8090. The configuration wizard guides you through:

  1. Selecting your LED controller type (e.g., WS2812B on GPIO18)
  2. Configuring the LED layout (number of LEDs per side, direction, start position)
  3. Setting up the capture source (USB grabber device path)
  4. Calibrating color correction and brightness

For the LED controller, a common setup uses an ESP32 running WLED in “serial” mode, controlled by Hyperion via USB:

1
2
3
4
5
6
7
{
  "device": "/dev/ttyUSB0",
  "output": "/dev/ttyUSB0",
  "rate": 115200,
  "colorOrder": "rgb",
  "delayAfterConnect": 1500
}

Hyperion.NG supports advanced features including blackbar detection (ignoring letterbox bars when capturing), smoothing to reduce flicker, and LED instance grouping for multi-zone setups.

Deploying ESPHome for Custom LED Automations

ESPHome takes a different approach — instead of screen capture, it treats LED strips as programmable outputs within a larger home automation context. A typical ESPHome configuration for addressable LED ambient lighting:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
esphome:
  name: living-room-ambient
  friendly_name: Living Room Ambient Light

esp32:
  board: esp32dev
  framework:
    type: arduino

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

api:
  encryption:
    key: !secret api_key

light:
  - platform: fastled_clockless
    chipset: WS2812B
    pin: GPIO16
    num_leds: 120
    rgb_order: GRB
    name: "TV Ambient Strip"
    id: tv_ambient
    effects:
      - random:
          name: "Slow Random"
          transition_length: 4s
          update_interval: 5s
      - pulse:
          name: "Breathing"
          transition_length: 500ms
          update_interval: 500ms
      - addressable_rainbow:
          name: "Rainbow"
          speed: 10
          width: 50

sensor:
  - platform: homeassistant
    entity_id: media_player.living_room_tv
    id: tv_state
    on_value:
      then:
        - if:
            condition:
              lambda: 'return id(tv_state).state == "playing";'
            then:
              - light.turn_on:
                  id: tv_ambient
                  brightness: 40%
                  effect: "Slow Random"

ESPHome’s LED integration shines when combined with other sensors — imagine a living room setup where a motion sensor triggers a gentle warm-white ambient glow after sunset, a button on the coffee table cycles through color presets, and the TV state sensor automatically adjusts brightness when a movie starts playing.

Deploying WLED for Standalone LED Control

WLED is the most popular open-source firmware for addressable LEDs, with 18,000+ GitHub stars and support for 15+ LED strip types:

  1. Visit install.wled.me and flash your ESP32 via USB
  2. Connect to the WLED-AP WiFi network after flashing
  3. Configure your home WiFi credentials through the captive portal
  4. Access the web interface at the assigned IP address

For hardware setup with a WS2812B strip:

1
2
3
4
5
ESP32           LED Strip
-----           ---------
GND     -->     GND (black)
5V/VIN  -->     5V (red) — use external 5V PSU for >30 LEDs
GPIO16  -->     DIN (green)

WLED’s web interface provides granular control over 125+ built-in effects — from gentle candle flicker to audio-reactive visualizations when paired with a microphone. A key feature for ambient lighting is the JSON API, which Hyperion.NG can use to drive WLED as an LED controller:

1
2
3
4
5
# Set WLED to solid warm white at 30% brightness via API
curl -X POST http://wled-ip/json/state -d '{"on":true,"bri":76,"seg":[{"col":[[255,196,128]]}]}'

# Trigger a specific effect
curl -X POST http://wled-ip/json/state -d '{"on":true,"seg":[{"fx":25,"sx":128}]}'

Choosing the Right Ambient Lighting Platform

Hyperion.NG is the clear choice for screen-matching TV bias lighting. Its purpose-built capture pipeline, color calibration, and blackbar detection produce smooth, flicker-free ambient lighting that follows your content in real time. If you want the immersive “ambilight” experience while watching movies or gaming, Hyperion.NG is the tool you need.

ESPHome is the best platform if you want ambient lighting tightly integrated with your smart home automations. Its native Home Assistant integration means LED behavior can respond to any sensor, switch, or state in your home. It is less suitable for dynamic screen-matching but excels at contextual lighting scenes driven by time of day, occupancy, or media state.

WLED gives you the richest standalone LED control experience. With 125+ effects, multi-device synchronization, and a polished web interface, it is ideal for LED art installations and decorative lighting. WLED also pairs well with Hyperion.NG as the LED controller firmware, giving you the best of both worlds.

For a complete TV bias lighting setup, many users run Hyperion.NG on a Raspberry Pi for screen capture and color processing, with WLED on an ESP32 serving as the LED strip controller — combining Hyperion’s superior screen capture with WLED’s robust LED firmware.

Why Self-Host Your Ambient Lighting?

Commercial ambient lighting kits from Philips (Hue Play HDMI Sync Box) or Govee cost $200-300 and lock you into proprietary ecosystems. A self-hosted Hyperion.NG setup with a Raspberry Pi, $15 USB HDMI grabber, and a $20 WS2812B LED strip delivers equivalent or better performance for under $60 — with full local control and no cloud dependency.

Self-hosting also means your lighting data stays private. Commercial solutions often require cloud accounts and phone-home telemetry. A local Hyperion.NG instance processes everything on-device and responds to screen changes within single-digit milliseconds — faster than any cloud-dependent alternative.

For broader smart home integration, check our Home Assistant vs Homebridge smart home hub comparison. If you are exploring what firmware to run on your LED controllers, our ESPHome vs Tasmota vs ESPurna firmware guide covers the firmware options. For holiday-specific lighting setups, we have a dedicated WLED Christmas light show guide.

FAQ

Do I need the Pro or Open Source version of Hyperion?

Hyperion.NG (the open-source project at github.com/hyperion-project/hyperion.ng) is the actively maintained community version with 3,700+ stars. The commercial “Hyperion” product is a separate entity. For self-hosted ambient lighting, you want the open-source Hyperion.NG.

What USB HDMI grabber should I use for Hyperion.NG?

The MacroSilicon MS2109-based grabbers ($10-15) work well for 1080p content. For 4K HDR pass-through, look for grabbers based on the MS2130 or MS2131 chipset ($20-30). Hyperion.NG’s documentation maintains a list of tested capture devices.

How many LEDs do I need for a 55-inch TV?

For a 55-inch TV, 100-150 LEDs total (25-38 per side) provides good coverage. A density of 30 LEDs per meter on the strip is the sweet spot between smooth gradients and cost. Hyperion.NG’s layout configuration lets you specify the exact count per side.

Will ambient lighting work with streaming apps like Netflix?

Yes, if you use an HDMI splitter and USB capture device. The signal path is: streaming device → HDMI splitter (one output to TV, one to USB capture device) → Hyperion.NG processes the captured signal. For apps with HDCP protection, look for HDMI splitters that strip HDCP.

Can I sync multiple Hyperion.NG instances across different displays?

Yes, Hyperion.NG supports instance forwarding. Configure one instance as the primary (connected to the capture device) and additional instances as forwarders that receive color data over the network. This enables multi-display setups or whole-room ambient lighting.


💰 想测试你的市场判断力?我用 Polymarket 做预测市场交易——这是全球最大的预测市场平台,从大选结果到技术监管时间线,什么都可以押注。和赌博不同,这是真正的信息市场:你懂的信息越多,胜率越高。我靠预测技术相关事件的走向已经赚了不少。用我的邀请链接注册:Polymarket.com