Hallo,
nachdem ich mit meiner Fhem Installation von einem Raspberry B auf einen Odroid U3 (der Raspberry kam langsam an die Grenzen seiner Leistungsfähigkeit) umgestiegen bin, lag der Raspberry ohne Aufgabe in der Ecke.
MotivationDa ich eine RSS Anzeige nach dem Muster des RSS Workshops aus http://forum.fhem.de/index.php/topic,22520.0.html (http://forum.fhem.de/index.php/topic,22520.0.html) aufbauen wollte, kam sehr schnell der Wunsch nach einem geeigneten Anzeigemedium hoch. Dazu kam der Gedanke "Warum nicht meinen 'alten' Raspberry nutzen?"
HardwareFolgende Hardware Komponenten setze ich nun dazu ein:
- Raspberry B
- 19" LCD mit VGA Eingang (ein alter LCD übrig geblieben aus alten PC Zeiten)
- Full HD HDMI auf VGA Adapter inkl. Audio-Übertragung (Line out) | Konverterkabel | bis zu 1080p / HDTV Unterstützung | digital zu analog | in schwarz
Den HDMI auf VGA Adapter habe ich bei Amazon gefunden für 15,85€, damit ich meinen alten LCD Bildscbhirm an dem modernen HDMI Ausgang des Raspberry anschließen konnte. Um es gleich vorweg zu nehmen: Unter Raspian habe ich keinerlei Anpassungen machen müssen... der Adpater und der LCD Bildschirm wurden ohne jegliche Konfigurationänderungen direkt genutzt.
SoftwareAber dann fing die Suche nach der geeigneten Softwarelösung an. Die ersten Gehversuche habe ich mit verschiedenen Browsern unter X gemacht. Alle mit dem gleichen Ergebniss: es funktioniert, aber glücklich kann man mit der Performance nicht werden. Alle Versuche unter X führten zu keinen verwertbaren Ergebniss. Also musste eine andere Lösung her.
Nach langem Suchen und vielen Versuchen bin ich dann schließlich bei der Framebuffer Technik gelandet. Dabei ist
kein X-Server notwendig, sondern aus der Terminal Sitzung heraus kann eine graphische Anzeige gemacht werden.
Aber auch hier gibt es einige Lösungsansätze, welche sehr unterschiedlich im Ergebnis waren.
Command Line Image Viewer FBIAm Ende habe ich mich für FBI, einen Command Line Image Viewer welcher auch eine Slideshow (inklusive Endlosschleife) machen kann, entschieden.
Installation FBIInstallieren kann man FBI mit:
sudo apt-get install fbi
Benutzung FBILeider war nirgendwo dokumentiert, dass FBI auch url's als Dateinamen akzeptiert. Aber er tut es... Damit war die direkte Ansprache des RSS Bildes des Fhem Servers gegeben.
Ein weiteres Problem war die Caching Funktion von FBI. Das Programm legt die Bilder in einem Cache ab. Somit werden die Bilder nur einmal geladen und ab dann aus dem Cache geholt. Für eine selbstaktualierende Anzeige nicht geeigent. Aber mit einem kleinen Trick kann man das Verhalten elegent umgehen.
Gibt man FBI mehr Bilder (und es können die
gleichen Bilder und gleichen url's sein, hier in dem Beispiel ist es 10x das
gleiche Bild) als Parameter beim Aufruf mit und wählt die Cache Größe so klein, dass nicht alle Bilder hineinpassen, dann werden alle Bilder immer wieder neu gelesen. Und genau diesen Trick habe ich ausgenutzt:
/usr/bin/fbi -cachemem 1 -t 60 http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png
Dabei legt '-cachemem 1' die Cachegröße auf 1 MB fest. Mit '-t 60' wird jedes Bild 60 Sekunden angezeigt. Mit diesem Befehl wird also alle 60 Sekunden das RSS Bild des Fhem Servers abgerufen und angezeigt. FBI bietet natürlich noch viel mehr Möglichkeiten. Siehe dazu
/usr/bin/fbi -help oder entsprechende Doku's.
AutomationDamit das ganze aber komplett automatisch funktioniert waren noch weitere Systemweite Anpassungen notwendig. Damit der User
pi sich bei einem Systemstart automatisch anmeldet muss
/etc/inittab angepasst werden. Mit Hilfe von
sudo nano /etc/inittab
wird die Zeile mit dem Inhalt
2345:respawn:/sbin/getty --noclear 38400 tty1
auf Kommentar gesetzt und eine weitere Zeile
#1:2345:respawn:/sbin/getty --noclear 38400 tty1
1:2345:respawn:/bin/login -f pi tty1 </dev/tty1 >/dev/tty1 2>&1
eingefügt. Denn nur unter einem echten Terminal funktioniert die Framebuffer Technik. Eine ssh Verbindung reicht nicht aus.
Damit bei der automatischen Anmeldung des User
pi auch automatisch noch ein Shellscript ausgeführt wird, muss
/etc/rc.local angepasst werden. Mit Hilfe von
sudo nano /etc/rc.local
wird vor dem Ende (hier exit 0) der Aufruf des eigenen Shellscriptes (bei mir
/home/pi/slideshow.sh)
bash /home/pi/slideshow.sh
eingefügt. Das Shellscript wiederum kann zum Beispiel folgenden Inhalt haben:
#!/bin/bash
while [ 1 ]; do
/usr/bin/fbi -cachemem 1 -t 60 http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png http://192.168.178.50:8083/fhem/rss/myrss.png
sleep 60s
done
Hier wird um den eigentlichen FBI Befehl noch eine Endlosschleife gezogen, damit nach einer Downtime des Fhem Servers, dabei bekommt FBI natürlich einen Fehler und bricht ab, das RSS Bild wieder automatisch angezeigt wird.
Ein Beschreibung zu meinem RSS Bild findet ihr unter http://forum.fhem.de/index.php/topic,22630.msg184826.html#msg184826 (http://forum.fhem.de/index.php/topic,22630.msg184826.html#msg184826)
Ich hoffe es ist alles verständlich... wenn nicht... einfach fragen.
Viel Spass beim Umsetzen,
Frank
P.S. Weitere Gedanken und Info's:
- Der Raspberry hat natürlich einen WLAN Usb Nano Stick und kann somit frei im Haus aufgestellt werden.
- Eine Maus oder Tastatur sind für den laufenden Betrieb nicht notwendig.
- Bei geschickter Verkabelung auf der Rückseite des LCD Bildschirmes entsteht kein Kabelsalat.
- Für unter 100€ werden LED Bildschirme inkl. HDMI Anschluss angeboten.
- Mit speziellen VESA Montagerahmen lässt sich der Raspberry auch an der VESA Halterung auf der Rückseite des Bildschirmes montieren.