Ein Ambient-Light-System mit Python und Home Assistant bauen
Ein Python-Skript, das jede Sekunde die dominante Bildschirmfarbe ausliest und an Home Assistant schickt. So folgen die LED-Streifen dem, was auf dem Monitor passiert.
Ein Ambient-Light-System mit Python und Home Assistant bauen
Ich wollte schon immer ein Ambilight, aber nicht die Preise von Philips dafür zahlen. Die Idee ist simpel: lesen, was auf dem Bildschirm zu sehen ist, die dominante Farbe bestimmen und an die LED-Streifen rund um den Monitor schicken. Da mein ganzes Zuhause über Home Assistant läuft, bot es sich an, das darüber zu leiten.
Das Skript nutzt mss für schnelle Screenshots, opencv-python, um die Pixel zu clustern und die dominante Farbe zu finden, und einen einfachen HTTP-POST an die HA-REST-API.
Auf der Home-Assistant-Seite habe ich eine einfache Automation eingerichtet, die auf Änderungen von sensor.dominantcolor reagiert und light.turnon mit dem neuen RGB-Wert aufruft:
Ich lasse es als systemd-Service auf einem kleinen Linux-Rechner neben dem Monitor laufen, damit es beim Booten automatisch startet.
Das Ergebnis ist genau das, was ich wollte: Startet ein Film, wandert das Raumlicht mit den Farben auf dem Bildschirm mit. Es kostet nichts extra, wenn man HA und einen WS2812B-Streifen ohnehin hat. Kompletter Code auf GitHub.