Raspberry und LCD Bildschirm als voll automatisiertes RSS Anzeigemedium

Begonnen von frankbeckers, 25 Juli 2014, 22:07:54

Vorheriges Thema - Nächstes Thema

frankbeckers

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.


Motivation
Da ich eine RSS Anzeige nach dem Muster des RSS Workshops aus 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?"


Hardware
Folgende 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.


Software
Aber 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 FBI
Am Ende habe ich mich für FBI, einen Command Line Image Viewer welcher auch eine Slideshow (inklusive Endlosschleife) machen kann, entschieden.


Installation FBI
Installieren kann man FBI mit:
sudo apt-get install fbi


Benutzung FBI
Leider 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.


Automation
Damit 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

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.
FHEM 5.7 auf Raspberry Pi 2 Jessy 4.1.16-v7+
CCU2 --> hm2mqtt --> MQTT --> Fhem
ehz361z5 --> RPi --> MQTT --> Fhem
Lightify
Fritz!DECT 200

jostmario

Raspberry Pi  ---  HM-LAN ---  8X HM_HM_CC_RT_DN --- OWL+USB Strommesser    UVR1611