AppDaemon App that synchronizes the color of RGB lights with the thumbnail of a media player in Home Assistant.
- Realtime RGB lights color synchronization with the thumbnail of a media player
- Extract most relevant colors from a picture and assign them to lights
- Always creates great matching moody ambiances
- Change all configured lights color at the same time using multithreading
- Prevent lights synchronization based on a state condition from your Home Assistant
Use HACS or download the media_lights_sync
directory from inside the apps
directory here to your local apps
directory, then add the configuration to enable the media_lights_sync
module.
In order for this app to work, you need to add py3-pillow
and Pillow
to the config of your AppDaemon 4 Supervisor add-on:
system_packages:
- py3-pillow
python_packages:
- Pillow
init_commands: []
log_level: info
If you are running AppDaemon in your own docker container, you must create and build a docker image with the above dependencies using a Dockerfile similar to this (untested):
FROM acockburn/appdaemon:latest
# Manually install the dependencies
RUN apk add py3-pillow
RUN pip3 install Pillow
config/appdaemon/apps/apps.yaml
media_lights_sync:
module: media_lights_sync
class: MediaLightsSync
media_player: media_player.tv
lights:
- light.left_theatre_light
- light.right_theatre_light
ha_url: !secret ha_url
reset_lights_after: true
use_saturated_colors: false
use_current_brightness: false
condition:
entity: input_boolean.sync_tv_lights
state: "on"
key | optional | type | default | description |
---|---|---|---|---|
module |
False | string | media_lights_sync |
The module name of the app. |
class |
False | string | MediaLightsSync |
The name of the Class. |
media_player |
False | string or list | The entity_id(s) of the media player(s) to sync from1. | |
lights |
False | list | The list of all the lights entity_id to sync to. | |
ha_url |
True | string | null |
The URL to your Home Assistant. Examples: https://my-ha.duckdns.org , http://192.168.1.123:8123 . |
reset_lights_after |
True | bool | false |
Reset lights to their initial state after turning off a medial_player . Will not reset lights if false . |
quantization_method |
True | string | MedianCut |
Supports MedianCut , FastOctree , MaxCoverage and libimagequant . More info below. |
use_saturated_colors |
True | bool | false |
Increase the saturation and brightness of the colors. |
use_current_brightness |
True | bool | false |
Do not change lights brightness. If false , it will always sets all lights to maximum brightness. |
transition |
True | number | null |
Number that represents the time (in seconds) the light should take to transition to new states. |
condition |
True | object | Sync lights only if the state of the condition entity is valid. | |
condition.entity |
False | string | The entity_id of the condition. | |
condition.state |
False | string | The state to match in order for the lights to sync. |
1: See /developer-tools/state
in your Home Assistant instance. This app will listen to changes on entity_picture_local
and/or entity_picture
attributes of your media_player
entities.
There is four quantization method available, which change the way the colors palette is extracted:
MedianCut
: Default method. Mix colors in the image using their median value.FastOctree
: Extract dominant colors. Use this option if you want more accurate colors.MaxCoverage
: Mix colors based on their maximum coverage.libimagequant
: High-quality conversion of RGBA images to 8-bit indexed-color (palette) images.
Alternatively, you can also combine this option with use_saturated_colors
to get more vibrant colors.
This app should work with any media_player
and RGB light integrations available in Home Assitant.
That said, it has been tested and is working with the following devices:
- Media Players:
- ChromeCast
- Apple TV (hass-atv-beta)
- Kodi
- All Amazon media players (Fire TV, Echo Dot, Echo Show, etc.)
- Spotify Integration
- Logitech Squeezebox
- RGB Lights:
- Philips Hue
- ESPHome RGB Light using an ESP8266
- Z-Wave
- Lifx
- TP-Link
- Yeelight (YLDP02YL, YLDD02YL)
If you've found that this app is working with another device, just let me know so I can update this list.
- Based on
music_lights.py
from this project: https://github.com/astone123/appdaemon-apps. - If you find a bug with another type of media player or light, PRs and detailed issues are welcome.