Ambilight für alle Quellen via Hyperion

09.02.2015


Ambilight für alle Quellen via Hyperion

Video

Im Internet kursieren reichlich Anleitungen wie man mit einem Raspberry Pi das von Philips TVs bekannte Ambilight nachbauen kann. Ich habe anfangs Boblight probiert, aber feststellen müssen das dies scheinbar nur mit bzw. auf XBMC/Kodi läuft. Den nächsten Versuch habe ich dann mit AmbiTV gestartet. Dort aber war die Last auf den RPi so hoch, da a) nichts anderes auf dem RPi möglich war und b) das Ambilight nicht schön lief.
Für mich war die Suche nach dem "Heiligen Gral" dann beendet als ich "Hyperion" fand. Die erste Anleitung war recht lang und es mussten einige Schritte erledigt werden. Inzwischen ist die Installation aber schön knackig kurz und relativ einfach.

Hyperion

Hyperion bietet eigentlich alles was man von einem Ambilight-Nachbau erwartet und noch etwas mehr. Neben dem klassischen Ambiente der 3. Generation von Philips bietet Hyperion eine App für Android/iOS, sowie diverse hübsche Farbeffekte.

Hardware

- Raspberry Pi A/A+/B/B+ oder Raspberry Pi 2 (bei mir ein RPi2) ~50€ mit Case und microSD
- USB Video-Grabber (STK oder Fushicai Chipsatz) ~12€
- LEDs (WS2801 oder diverse andere einzeln steuerbare LEDs, bei mir 50 Stück) ~46$ je nach Kurs ~42€
- HDMI zu Composite Video AV Konverter ~22€
- HDMI Splitter (4zu2 bei mir) ab ~23€
- MicroUSB Netzteil 5V 4A ~15€

Gesamtkosten ca. 170€

Wie die Hardware zusammengebaut wird, erfährt man hier.

Installation

Zunächst mal benötigen wir die aktuellste Raspbian Version (bei mir aktuell von 31.01.2015). Beim ersten Boot startet der Pi automatisch in die "raspi-config". Hier müssen wir folgendes erledigen:
- Dateisystem erweitern
- in die Shell booten lassen
- SPI aktivieren

Nach dem Reboot einloggen und erst mal das System Updaten.
sudo apt-get update

sudo apt-get upgrade

Dann benötigen wir folgende Softwarekomponenten...
sudo apt-get install libqtcore4 libqtgui4 libqt4-network libusb-1.0-0 libprotobuf7 ca-certificates mplayer python-dev

Nun wechseln wir ins /tmp Verzeichnis, laden das Installationsscript für Hyperion runter und installieren Hyperion
cd /tmp

wget -N raw.github.com/tvdzwan/hyperion/master/bin/install_hyperion.sh
sudo chmod +x install_hyperion.sh
sudo ./install_hyperion.sh

Prinzipiell ist Hyperion nun installiert. Nun muss man noch die Config bearbeiten. Dafür lädt man sich die HyperCon.jar herunter. Um diese auszuführen benötigt man JAVA auf seinem PC. Mit diesem Tool kann man nun die Anzahl der LEDs, den Chip der LEDs etc. einstellen.
Ich habe 50 LEDs wie folgt verteilt: 14 Links, 14 Rechts und 22 Oben. Unten habe ich keine LEDs verteilt.

Nachdem die Config-Datei erstellt wurde, muss diese noch einmal per Hand bearbeitet werden. Am Ende der Datei wird vor "endOfJson" : "endOfJson" folgendes eingefügt.
/// Configuration for the embedded V4L2 grabber

/// * device : V4L2 Device to use [default="/dev/video0"]
/// * input : V4L2 input to use [default=0]
/// * standard : Video standard (no-change/PAL/NTSC) [default="no-change"]
/// * width : V4L2 width to set [default=-1]
/// * height : V4L2 height to set [default=-1]
/// * frameDecimation : Frame decimation factor [default=2]
/// * sizeDecimation : Size decimation factor [default=8]
/// * priority : Hyperion priority channel [default=800]
/// * mode : 3D mode to use 2D/3DSBS/3DTAB (note: no autodetection) [default="2D"]
/// * cropLeft : Cropping from the left [default=0]
/// * cropRight : Cropping from the right [default=0]
/// * cropTop : Cropping from the top [default=0]
/// * cropBottom : Cropping from the bottom [default=0]
/// * redSignalThreshold : Signal threshold for the red channel between 0.0 and 1.0 [default=0.0]
/// * greenSignalThreshold : Signal threshold for the green channel between 0.0 and 1.0 [default=0.0]
/// * blueSignalThreshold : Signal threshold for the blue channel between 0.0 and 1.0 [default=0.0]
"grabber-v4l2" :
{
"device" : "/dev/video0",
"input" : 0,
"standard" : "PAL",
"width" : 640,
"height" : 480,
"frameDecimation" : 2,
"sizeDecimation" : 8,
"priority" : 1000,
"mode" : "2D",
"cropLeft" : 15,
"cropRight" : 15,
"cropTop" : 20,
"cropBottom" : 20,
"redSignalThreshold" : 0.1,
"greenSignalThreshold" : 0.1,
"blueSignalThreshold" : 0.1
},

Die Werte für "cropLeft" etc. müssen ggf. angepasst werden. Da muss man ein wenig mit rumspielen. Dazu sollte man auf dem TV ein Standbild machen um die Grenzen des Bildausschnittes zu erfassen. Optimalerweise hat das Standbild am Rand nirgendwo schwarz, damit man das Ende erkennen kann.

Dann kann man auf der Shell folgenden Befehl eingeben um einen Screenshot vom aktuellen Bild zu erstellen. Der Screenshot wird dort erstellt wo man den Befehl ausführt. Der Dienst "Hyperion" muss laufen!
hyperion-v4l2 --width 640 --height 480 --screenshot --crop-left 15 --crop-right 15 --crop-top 20 --crop-bottom 20
Mit den Werten solange rumspielen bis man keinen schwarzen Rand mehr auf dem Screenshot sieht. Dann die ermittelten Werte in die "hyperion.config.json" übertragen.

Webinterface

Da ich nicht wollte das Hyperion rund um die Uhr läuft und man leider komplett Blau leuchtende LEDs hat wenn kein Signal anliegt, habe ich mir einen Button auf meinem SmartHome Webinterface gemacht mit dem ich den Dienst starten und stoppen kann. Alternativ kann man auch die App auf dem Smartphone nutzen um Hyperion zu steuern.

Zunächst müssen wir Apache und PHP installieren.
apt-get install apache2 php5

Dann die index.html entfernen und die index.php anlegen.
cd /var/www

sudo rm index.html
wget http://download.christian-brauweiler.de/RaspberryPi/AmbiLight/index.zip
unzip index.zip

Anschließend legen wir im Home-Verzeichnis ein Script zum Starten und Stoppen von Hyperion an
cd /home/pi

touch hyperion_start.sh

Und füllen die mit folgendem Code
#!/bin/bash

sudo service hyperion start

Und nun noch ein Script zum stoppen
touch hyperion_stop.sh

Und füllen die mit folgendem Code
#!/bin/bash

hyperion-remote -c black
sleep 3
sudo service hyperion stop

Jetzt beide Dateien ausführbar machen
sudo chmod +x *.sh

Als letztes muss der User der den Apache ausführt (www-data) noch das Recht haben "sudo" zu benutzen. Dazu öffnen wir die "sudoers" und fügen am Ende den User www-data analog zum User pi ein
sudo nano /etc/sudoers


www-data ALL=(ALL) NOPASSWD: ALL

Wenn man nun mit dem Browser auf den RPi geht sollte ein Webseite angezeigt werden. Fertig ;-)

Kommentare






Werbung wird ohne Vorwarnung gelöscht!

#1 - Christian  E-Mail - 05.03.2017, 17:16 Uhr
Der Zero ist etwas schwächer auf der Brust, sollte aber prinzipiell auch gehen.
#2 - mobbie  E-Mail - 05.03.2017, 16:55 Uhr
Ist es auch möglich den Raspberry Pi Zero zu verwenden?
Mir ist es wichtig, dass das System wenig Strom benötigt. Welchen Raspberry Pi könnt ihr empfehlen?
#3 - Christian - 07.12.2016, 07:14 Uhr
Du meinst das Videosignal am SCART vom TV abgreifen? Ja das geht prinzipiell aber nur mit SD Inhalten und nur solange das Eingangssignal unverschlüsselt ist. Also kein Sky etc.
#4 - Chris  E-Mail - 06.12.2016, 10:27 Uhr
Es gibt doch eine Möglichkeit, wie man auch TV-Programme und andere Ausgabequellen vom TV, mit dem Ambilight verbinden kann.

Man benötigt hierzu einen LogiLink Audio und Video Grabber (gibt es im Netz recht presiwert zu kaufen), mit welchem man per S-Video Kabel und einem Scart Adapter das Signal gleichzeitig abgreifen und an das Raspberry Pi und Hyperion übergeben kann.

Und ich muss sagen, obwohl das Ausgangssignal nur SD ist, funktioniert es sehr gut bei der Farbübertragung.
#5 - Christian - 04.12.2016, 12:07 Uhr
Nein dafür gibt es keine Lösung.
#6 - Chris  E-Mail - 03.12.2016, 21:44 Uhr
Hi,

ich habe nur einen Samsung Smart TV ohne Receiver. Ich beziehe mein TV Signal direkt aus der Wanddose. Wie bekomme ich nun die Hyperion Konstellation dazu, dass das Ambilight auch bei TV Sendern läuft?

Auch verwende ich Netflix und Co. sowie meinen Mediaserver direkt über den TV, somit gibt es bei mir kein extra HDMI Signaleingänge.

Gibt es hierfür eine Lösung?
#7 - Christian - 06.11.2016, 12:17 Uhr
Das ist nix was man hier zusammenbaut, einpackt, dir zu schickt und du steckst es zusammen und es läuft.
Das muss alles bei dir vor Ort gebaut werden. Ist aber eigentlich kein Hexenwerk.
#8 - Jakob  E-Mail - 05.11.2016, 19:11 Uhr
Hi habe ne frage wäre jemand bereit mir solch ein ambilight für mich zu bauen habe einen samsung 55 zoll und null Plan würde dafür auch bezahlen plus die teile natürlich würde mich auf Antwort freuen lg
#9 - Christian - 10.08.2016, 11:55 Uhr
Ja das ist richtig so.
#10 - Vertex  E-Mail - 10.08.2016, 09:52 Uhr
Hallo Christian,

ich bin gerade dabei, meine Hardware usw. zusammen zu suchen.
Jetzt stellt sich die Frage: Welchen HDMI Splitter?
Ich gehe von folgender Kombination aus:

Pro Gerät ein HDMI Eingang - Ein Ausgang zum TV und ein Ausgang zum RPi

Ist das so korrekt? Es müssen auf jeden Fall zwei Ausgänge sein?

Danke schon mal.
#11 - Mirko  E-Mail  Webseite - 28.06.2016, 11:45 Uhr
Das ist wirklich eine super Sache. Immer wieder interessant was alles mit dem Pi möglich ist. Wäre ich technisch nicht so ungeschickt, würde ich sowas selber gerne mal ausprobieren. :D
Vielen Dank für den tollen Artikel
#12 - Christian - 09.03.2016, 08:21 Uhr
Ja das geht so. Das liegt daran, das du wahrscheinlich Raspbian Jessie (Debian 8) verwendest und das Tut auf Raspbian Wheezy (Debian 7) basiert. Neueres OS = neuere Software im Repository
#13 - Hans  E-Mail - 08.03.2016, 23:10 Uhr
Hi
Thx für dieses Klasse Tut !
Meine Hardware hab ich jetzt zusammen und hätte zur Installation noch ne Frage :)
Ich hab nen Pi 2 und wenn ich die og Libs installieren möchte Fehlert er rum wegen libprotobuf7 und mplayer...
Jetzt hab ich stattdessen libprotobuf9 und mplayer2 genommen .
Ginge das theoretisch "einfach so" ?
#14 - Christian - 18.02.2016, 07:27 Uhr
;-) Kein Voodoo. Gibt einfach verschiedene Möglichkeiten wie Hyperion arbeitet.

1. Angezeigtes Bild analysieren (das hattest du), dann muss man aber via mplayer oder omxplayer das Grabber-Bild streamen

2. Hyperion einfach selbst direkt auf den Grabber schicken (meine Config)
#15 - Markus  E-Mail - 18.02.2016, 02:14 Uhr
Ich weiß nicht was für Voodoo in deiner config ist, aber jetzt klappt es :)
Hatte ich meine grabber config dummerweise doch wo anders her.
Daumen hoch an dein Know-how und das geniale tut!
Danke
#16 - Christian - 17.02.2016, 18:44 Uhr
Jup. Weil dein Fehler hört sich so an als wenn Hyperion das Bild vom Grabber gar nicht bekommt, du das aber auf dem selben Pi laufen hast wie Kodi und er einfach nur sein eigenes Bild analysieren kann, aber nicht wenn was über den Grabber kommt.
Früher hatte ich das TV Bild z.B. in schlechter Auflösung über den Grabber auf dem Pi laufen (also auch angezeigt) und das hat der analysiert.
Mit meiner Config greift der aber direkt auf den Stream vom Grabber zu und analysiert das.
Einfach mal Probieren.
#17 - Markus   E-Mail - 17.02.2016, 16:58 Uhr
Bin ich mir im Moment nicht sicher ob das deine config ist oder von wo anders.
Ich check das heute Abend.
Du meinst den Ausschnitt der in die normale config kopiert wird oder? -Grabber V4l2
#18 - Christian - 17.02.2016, 16:10 Uhr
Hast du die Config aus meiner Anleitung verwendet?
#19 - Markus  E-Mail - 17.02.2016, 12:39 Uhr
Hallo, ich habe mein Ambilight soweit am laufen, jedoch funktioniert der USB Grabber nicht wie er soll.
Daten aus dem Raspi abspielen (mit Openelec + hyperion) funktioniert einwandfrei, alles leuchtet wie es soll.
Jedoch leuchtet nichts wenn ich mit dem Fushiciai Grabber arbeiten möchte.
Einen Screenshot kann ich nach deiner Anleitung erstellen. Der sieht auch super aus.
Aber anscheinend geht das Videosignal nicht in Hyperion weiter, auf jeden Fall leuchtet nichts wenn der Grabber im Einsatz ist.
Logilink Grabber mit dem Fusicai Chipsatz
Kann mir da jemand Hilfestellung geben?
#20 - Christian - 05.01.2016, 07:30 Uhr
Hi, das kann ich dir nicht beantworten, da ich nicht der Programmierer bin. Ich habe lediglich beschrieben wie ich das ganze umgesetzt und welche Hardware ich dazu verwendet habe.

Hier ist das GitHub Repo: https://github.com/tvdzwan/hyperion/wiki/hardware
Dort steht das WS2812b laufen sollten.

Details: https://github.com/tvdzwan/hyp…S2812b-PWM

Auf den ersten Blick würde ich halt sagen das es anders angeschlossen wird wie die WS2801, ein Widerstand benötigt wird und die Config halt anders aussehen muss.

Hoffe damit konnte ich dir weiterhelfen?!
#21 - Uwe  E-Mail - 04.01.2016, 21:34 Uhr
Hallo
Ich habe hyperion installiert und nutze die ws2812b LEDs.
Leider funktioniert die Software nicht richtig mit dem ws2812b
(.Config richtig eingestellt, LED per HCTangesteuert)
Ein Versuch mit den python Libs von ADA (strandtest.py) zeigt, das alles elektrisch richtig funktioniert, die LED leuchten entsprechend auf.

Mir scheint dass das ws2812b modul noch nicht funktioniert, ist das richtig?

mfg
Uwe
#22 - Christian - 11.11.2015, 21:55 Uhr
Nein das geht nicht.
#23 - Eugen  E-Mail - 11.11.2015, 16:19 Uhr
Hallo kleine Frage was benötige ich wenn ich nur ein Fernseher und ein raspberry habe geht das überhaupt ohne ein reciver????
#24 - Christian - 01.10.2015, 12:45 Uhr
Läuft Problemlos ;-)
Hab den 4x2 "Pro" im Einsatz. Wird so aber nicht mehr gelistet. Entspricht dem "G2" ohne Chinch.
#25 - Gürdal  E-Mail - 30.09.2015, 19:17 Uhr
Hallo Christian,

bei mir geht es langsam in die heiße Phase zu. Die Hardware ist unterwegs. Ist dein HDMI-Splitter voll HDMI-CEC fähig? habe andere bestellt. Laut Spezigikation wird HDMI 1.3b unterstützt was ja CEC beinhaltet, jedoch kommunuzieren meine Geräte nichtmehr miteinander!

Wie sieht es mti dem aus, den du vorschlägst?
#26 - Christian - 15.09.2015, 17:47 Uhr
Wenn der HDMI Switch 3D unterstützt kannst du 3D gucken. Ich meine das Ambilight checkt das auch, aber sicher bin ich nicht, da uch selten 3D Inhalte gucke.
#27 - Dennis  E-Mail - 09.09.2015, 20:02 Uhr
Sind auf diese Weise auch 3d Inhate von externen Quellen möglich?
also als Beispiel, ich schmeiß eine 3d Blueray in meine PS4 und will dass dann auf meinem 3d TV gucken, mit dem zugehörigen Ambilight.
Geht das?

Danke schonmal fürs lesen :)
#28 - Christian - 31.08.2015, 12:11 Uhr
Kann ich dir nicht sagen ob das so klappt. Müsstest du probieren. Wenns nicht klappt haste halt ein paar Euro in den Sand gesetzt. FullHD sollten die Switche können, dann ist alles in Ordnung es sei denn du hast vor bald nen 4k TV zu nutzen, dann musste da beim Switch auch drauf achten.
#29 - Gürdal  E-Mail - 30.08.2015, 17:40 Uhr
Ok,
und so:
Receiver->1zu2Switch->TV und 2zu1Switch->PI
PS4 ->1zu2Switch->TV und 2zu1Switch->PI
Habe im Inet solche auotmatischen 2zu1 Switch gesehen. Die die Quelle automatisch umschalten je nach Standby-zustand des Gerätes.
Wenn ich ja dann über meinen TV auf meine PS4 oder Receiver schalte kommt das jeweilige Videosignal ja am PI so oder so an. Das würde aber schon klappen oder? Der PI bekommt ja jeweils nur ein Signal, je nachdem welche Quelle ich an habe.

Und wie schauts aus mit der Bildqualität. Gibt es Qualitätsverluste wegen einem Switch? Sollte man beim kauf auf FULLHD Kennzeichnungen achten?

Sry ich weiss ich bombardiere dich :-D
Will mir das so unbedingt zusammenbauen aber möchte, dass alles weitesgehend Vollautomatisch abläuft.
#30 - Christian - 29.08.2015, 10:48 Uhr
@Martin: Klingt für mich danach das du nicht richtig geerdet hast. Die LEDs müssen an Ground vom Pi mit dran.

@Gürdal: Das wird so nicht funktionieren. Ich wüsste nur die beiden Möglichkeiten die ich genannt habe.
Receiver -> Switch -> TV und Pi
PS4 -> Switch -> TV und Pi
oder
Receiver -> TV -> Pi
PS4 -> TV -> Pi

Wenn mit HDMI Switch dann musste auch an dem die Quelle umstellen oder ohne Switch wenn der TV einen HDMI Out hat und an den dann zum Pi.
#31 - Martin  E-Mail - 28.08.2015, 14:04 Uhr
Moin Christian,

gut gemacht! Kurze Frage bezgl. der Verkabelung:

Hattest Du eventuell auch Probleme damit? Flackern? Undefinierte Zustände der LEDs und/oder Probleme mit den Leitungen?

Danke und Gruß!

Martin (Blue1986)
#32 - Gürdal  E-Mail - 28.08.2015, 10:51 Uhr
Hi, freue mich über deine Antwort.
Jetzt wirft das Ganze natürlich noch ein paar fragen auf.
Ich würde gerne trotzdem die Quellen über meinen TV steuern.
Kann ich das folgendermaßen bewerkstelligen:
Receiver->Switch-> TVund RasberryPI
PS4-> Switch-> TV und Rasberry PI
Also würde ja der Rasberry 2 Eingänge benötigen. Gibt es sowas und wenn nein kann ich dann einfach vielleicht einen Switch nehmen von 2zu1? Ich möchte eigentlich nicht immer am Switch umschalten müssen.

Leidet vielleicht die Bildqualität des Receivers oder der PS4 durch den Switch den man zwischenschaltet?


Fragen über Fragen :-)
#33 - Christian - 27.08.2015, 13:59 Uhr
Hi, freut mich das dir meine Seite gefällt.

Die Art und Weise wie das Signal zum Raspi gelangt ist eigentlich egal.
Im Prinzip gibt es da spontan 2 Möglichkeiten die mir einfallen.

1.) HDMI Switch! So hab ich das. D.h. ich habe Receiver, PS4 und MediaPC an einen HDMI Switch angeschlossen und dort gibt es 2 Ausgänge. Einen zum TV und einen zum Raspi. D.h. du musst am HDMI Switch den Eingang umstellen und schon passt das.

2.) Alles über den TV, sofern der TV einen Aussgang besitzt. Beamer haben z.B. eigentlich immer neben Eingang auch einen Ausgang. Bei TVs ist das eher selten, aber wenn vorhanden, dann kannst du alles an dein TV anschließen und den Raspi über ein HDMI Out versorgen. Dann änderst du halt die Quellen am TV statt am HDMI Switch.

Fazit: Letztendlich ist es egal, du musst nur irgendwie dafür sorgen, dass das Bild was am TV ankommt auch irgendwie zum Raspi kommt. Die Qualität am Raspi ist fast egal. Muss kein gestochen scharfes Bild sein damit das Ambilight gut funktioniert.

Hoffe das hilft dir weiter!
#34 - Gürdal  E-Mail - 27.08.2015, 13:40 Uhr
Hallo und Guten Tag,
zunächst einmal möchte ich meinen Lob aussprechen. Eine wirklich tolle Seite. Ich hätte da mal eine Frage:
Ich bin vom Philips Ambilight begeistert und hatte auch solch ein TV-Gerät. Nach mehreren Defekten habe ich mir für einen SONY-TV entschieden. Ich benutze einen externen Receiver und eine PS4.
Gibt es die Möglichkeit jede einzelne Quelle mit Ambilight ansteuern zu lassen oder sogar noch besser: Ein Signal nur vom TV zu bekommen der mir dann automatisch egal auf welcher Quelle ich mich befinde Ambilight ansteuert? Über eine Antwort wäre ich sehr erfreut.

MFG


zurück
© 2016 Christian Brauweiler