FHEM Forum

Verschiedenes => Bastelecke => Thema gestartet von: frankbeckers am 25 Juli 2014, 22:07:54

Titel: Raspberry und LCD Bildschirm als voll automatisiertes RSS Anzeigemedium
Beitrag von: frankbeckers am 25 Juli 2014, 22:07:54
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 (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:
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 (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:
Titel: Antw:Raspberry und LCD Bildschirm als voll automatisiertes RSS Anzeigemedium
Beitrag von: jostmario am 05 März 2015, 22:17:23
Hallo

gibt es eine möglichkeit das der Raspberry den HDMI Monitor nach ca 15 min abschaltet und durch Druck auf den Touchscreen er wieder an geht für 15 min.

Wollte diesen Monitor benutzen:

http://www.pollin.de/shop/dt/MTQ5ODc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/8_20_3_cm_Display_Set_mit_Touchscreen_LS_8T_HDMI_DVI_VGA_CVBS.html?utm_source=google&utm_medium=pvgl&utm_content=121058&gclid=CjwKEAiAmuCnBRCLj4D7nMWqp1USJABcT4df6DR8WYURn1Q_sjD0diuqQBF3UnTy1Qr9As82xVXo9BoCOu7w_wcB

Gruß josty