Philips Ambilight Sync for any Home Assistant RGB light

[Custom Integration] Ambilight Sync for Philips TVs → any Home Assistant RGB light

Hi everyone!

I’ve been working on Ambilight Sync for Home Assistant, a custom integration that reads the Ambilight colors already calculated by a Philips TV and sends them to standard Home Assistant light.* entities.

No Hue Bridge, no Hue Sync Box, no screen capture and no external video processing.

GitHub: GitHub - uccae/Ambilight-Sync-for-Home-Assistant: Sync Philips TV Ambilight colors to any RGB-capable Home Assistant lights, including Matter, Zigbee, Hue and Wi-Fi bulbs. Runs locally inside Home Assistant. No Hue Bridge, Hue Sync Box or external service required. · GitHub

Current release: v0.3.0

How it works

Philips TV
    ↓ jointSPACE Ambilight API
Home Assistant
    ↓
RGB lights

The TV already calculates Ambilight colors internally, so the integration reuses those values instead of analyzing the video signal again.

Everything runs locally inside Home Assistant.

Main features

  • Works with standard Home Assistant light.* entities
  • Supports Matter, HomeKit, Zigbee, Philips Hue, Govee and other compatible integrations
  • Separate TV polling rate and per-light output rates
  • Per-light settings and overrides
  • Multiple weighted Ambilight sources per light
  • Custom presets
  • Live per-light color preview
  • HomeKit-compatible switch.ambilight_sync
  • Average, Perceptual and Dominant color modes
  • Hardware transitions when supported by the light
  • Software smoothing
  • Minimum brightness
  • Black threshold and dark-scene handling
  • Separate black delay, fade transition and switch-off delay
  • Scene-cut detection for fast response to sudden image changes
  • Spatial light positioning
  • Zone Falloff / Spread
  • Live visualization of Ambilight segment influence
  • Extended diagnostics for polling rate, output rate, latency and replaced frames

Spatial positioning

Lights can now be positioned around the TV using X/Y coordinates.

             TOP
        ┌───────────┐
   LEFT │    TV     │ RIGHT
        └───────────┘
            BOTTOM

Instead of averaging an entire side, Spatial mode uses the individual Ambilight segments reported by the TV and mixes nearby segments based on the light position.

Existing configurations continue to use Manual positioning after updating.

Zone Falloff / Spread

Each Spatial light can control how wide an area of the Ambilight perimeter it reacts to.

A low value focuses mostly on the closest segments.

A higher value creates a wider ambient mix.

The sidebar also visualizes which Ambilight segments influence each light and how strongly they contribute.

Scene-cut detection

Fast scene changes can bypass normal smoothing and output rate limits.

For example:

slow dark scene
      ↓
sudden bright/red scene
      ↓
scene cut detected
      ↓
immediate color update

Scene cuts use their own configurable transition time.

They also interrupt an active dark-scene fade immediately, so the lighting does not continue fading after the image has already changed.

Dark scenes

Dark-scene handling is split into separate stages:

Black detected
      ↓
Black delay
      ↓
Fade transition
      ↓
Minimum brightness
      ↓
Off delay
      ↓
OFF

If Minimum brightness is above 0%, the light fades to that level and stays on.

If it is 0%, the light fades to 1%, waits for the configured switch-off delay, and then turns off.

Any new non-black Ambilight frame immediately cancels the black cycle.

Presets

Presets can store different global settings, light mappings and per-light overrides.

For example:

Movie
Gaming
Night
Soft Ambient

They can also be switched from Home Assistant automations:

action: ambilight_sync.activate_preset
data:
  preset: Movie

Tested lights

Device Connection Result Notes
Govee M1 Govee lights local :white_check_mark: Good Works well. Higher update rates are recommended because smooth hardware color transitions are not available.
Govee M1 Matter :warning: Poor Slow updates, noticeable lag and no smooth transition.
Xiaomi Mi Bedside Lamp 2 HomeKit :white_check_mark: Excellent Very responsive with smooth native color transitions. Tested up to 8 Hz without noticeable slowdown.
Yandex GX53 Matter :white_check_mark: Good Works well at low update rates with smooth transitions. Higher rates may introduce delay.

Different lights behave very differently under frequent RGB updates, which is why update rate and transition settings can be configured per light.

Installation

  1. Download the latest release from GitHub.
  2. Copy:
custom_components/ambilight_sync

to:

/config/custom_components/ambilight_sync
  1. Restart Home Assistant.
  2. Go to Settings → Devices & services → Add integration.
  3. Search for Ambilight Sync.
  4. Pair your Philips TV.
  5. Open Ambilight Sync from the Home Assistant sidebar and configure your lights.

Project status

This is currently a beta and a vibe-coded community project.

It works well in my own setup, but Philips firmware and smart-light behavior can vary significantly, so testing on other TVs and lights would be very useful.

If you test it, please include:

Philips TV model:
jointSPACE API version:
Light model:
Integration used:
Connection type:
TV polling rate:
Light update rate:
Transition:
Color mode:
Observed behavior:

Bug reports, testing and feedback are very welcome.

GitHub: GitHub - uccae/Ambilight-Sync-for-Home-Assistant: Sync Philips TV Ambilight colors to any RGB-capable Home Assistant lights, including Matter, Zigbee, Hue and Wi-Fi bulbs. Runs locally inside Home Assistant. No Hue Bridge, Hue Sync Box or external service required. · GitHub

1 Like