Stefan's Weblog

8Nov/1215

Raspberry Pi als digitaler Bilderrahmen

Der Raspberry Pi bietet sich ja aufgrund seiner geringen Abmessungen und aufgrund seines geringen Stromverbrauchs hervoragend als digtitaler Bilderrahmen an.

Mein Ziel bei der ganzen Sache war es, den Raspberry Pi via HDMI-Kabel an meinen Fernseher anzuschließen und dann soll automatisch eine Slideshow ausgesuchter Bilder dort ablaufen.

pqiv auf dem Raspberry Pi

Diashow mit pqiv auf dem Raspberry Pi

Im nachfolgenden beschreibe ich zwei unterschiedliche Varianten,

  1. Bilder für die Diashow sind auf dem Raspberry Pi gespeichert
  2. Bilder für die Diashow sind auf einem zentralen Server gespeichert

Grundkonfiguration

Bevor man gezwungen ist, sich für eine der beiden Varianten zu entscheiden, muss man das Bildprogramm installieren. Ich habe als Bildbetrachtungstool pqiv genommen, welches klein und schlank ist und meiner Meinung nach wunderbar auf dem Pi läuft.

Die Installation von pqiv ist ein wenig aufwendiger, da man das Tool selbst kompilieren muss. Es ist zwar auch eine Version in den Paketquellen enthalten, aber diese scheint nicht reibungslos zu laufen und Fehler zu erzeugen. Deshalb installieren wir hier mal schnell pqiv:

Erstmal entfernen wir das evtl. bereits installierte Programm vom Pi

sudo apt-get remove pqiv

Nun noch zwei Pakete installieren, die wir für das weitere Vorgehen benötigen

sudo apt-get install git libgtk2.0-dev

Nun laden wir pqiv von github herunter. Es wird automatisch ein Verzeichnis im Home-Verzeichnis mit dem Namen pqiv angelegt

git clone https://github.com/phillipberndt/pqiv.git -b 0.12

Der erste Schritt des Komilierens

cd pqiv
./configure

Nun müsst ihr mit einem Editor die Datei pqiv.c im Verzeichnis /home/pi/pqiv öffnen. Dort sucht ihr nach dem Eintrag "gchar option"; und ersetzt das durch "gint option";.

Danach gebt ihr noch den Befehl ein und fertig

sudo make all install

Wenn kein Fehler auftauch, dann ist pqiv auf eurem Pi installiert und ihr könnt es jetzt schon starten. Der Befehl dazu ist

pqiv [-option] [file or folder]


Auf dieser Seite findet ihr eine übersichtliche Darstellung Optionen ➡ http://www.digipedia.pl/man/doc/view/pqiv.1/

Nachdem nun das Bildbetrachtungstool installiert wurde, konfigurieren wir im nächsten Schritt den Autostart von pqiv.

Zuerst ist zu prüfen, ob der Pi beim booten automatisch den XServer mitstartet. Geht auf die Konsole und gebt dort den Befehl ein

sudo raspi-config

sudo raspi-config

sudo raspi-config

XServer - Autostart

XServer - Autostart

XServer - Autostart

XServer - Autostart

Nachdem ihr das alles Konfiguriert habt, startet der Raspberry Pi neu und danach sollte die grafische Oberfläche starten.

Noch sind wir mit der Grundkonfiguration noch nicht fertig. Der Raspberry Pi schaltet nach einer definierten Zeit den Bildschirm ab, was wir ja bei unserer Diashow nicht wollen. Die Bilder sollen ja immer auf dem Bildschirm zu sehen sein.
Im Internet gibt es einige Anleitungen zu diesem Thema, die ich auch fast alle ausprobiert habe. Das Einzige, was bei mir funktioniert hat ist folgendes.

Ich habe Datei /etc/lightdm/lightdm.conf editiert und dort einen Eintrag in der Kategorie [SeatDefaults] eingetragen.

xserver-command=X -s 0 -dpms

Führt auch danach einen Neustart durch, damit die Konfiguration wirksam wird.

/etc/lightdm/lightdm.conf

/etc/lightdm/lightdm.conf

Variante 1: Bilder für die Diashow sind auf dem Raspberry Pi gespeichert

Nachdem nun pqiv auf den Pi installiert wurde, geht es darum das Tool automatisch zu starten.

Bevor wir mit der Autostart-Konfiguration weitermachen, ist es erforderlich einen Ordner zu erstellen, in dem die Bilder für die Diashow abgespeichert werden. Ich habe zu diesem Zweck einen Ordner im Home-Verzeichnis erstellt.

mkdir /home/pi/Bilder

Legt nun eine Datei im einem beliebigen Verzeichnis an, wo ihr die Startoptionen für pqiv eintragen könnt. Ich habe die Datei im Verzeichnis /home/pi/.config/autostart angelegt.

Erzeugen einer neuen Datei

cd /home/pi/.config/autostart
touch start_pqiv.sh

Tragt die folgende Zeile

/usr/bin/pqiv -sf /home/pi/Bilder


in der neuen Datei ein. Ich habe das mit dem Editor nano auf der Konsole erledigt.

sudo nano /home/pi/.config/autostart/start_pqiv.sh

nano - Startbefehl für pgiv

nano - Startbefehl für pgiv

Speichert die Änderung mit der Tastenkombination Strg+X.

Nun müsst ihr noch eine weitere Datei im Verzeichnis /home/pi/.config/autostart/ anlegen.

cd /home/pi/.config/autostart
touch pqiv.desktop

Auch hier müsst ihr noch ein paar Zeilen eintragen:

[Desktop Entry]
Type=Application
Exec=/home/pi/.config/autostart/start_pqiv.sh

Auch hier habe ich die neue Datei mit dem Editor nano bearbeitet:

pgiv - Autostart

pgiv - Autostart

Zum Abschluss müssen wir noch die beiden neuen Datein ausführbar machen. Das geht ebenfalls auf der Konsole mit dem Befehl

chmod u+x pqiv.desktop start_pqiv.sh

Startet euren Raspberry Pi neu und pqiv mit Diashow sollte automatisch gestartet werden.

pqiv auf dem Raspberry Pi

Diashow mit pqiv auf dem Raspberry Pi

Variante 2:Bilder für die Diashow sind auf einem zentralen Server gespeichert

Die zweite Variante unseres digitalen Bilderrahmens unterscheidet sich lediglich im Speicherort, wo wir die Bilder für die Diashow hinterlegen. Die Variante 2 könnt ihr nutzen, wenn ihr mehrere Raspberry Pis als digitale Bilderrahmen verwendet möchtet, wo entweder jeweils die gleichen oder unterschiedliche Bilder abgespielt werden. Da es bei mehreren Geräten wahrscheinlich aufwendig ist, die Bilder auf die Pis zu schieben, ist es konfortabler die Bilder auf einem zentralen Server zu hinterlegen. Von dort können die Raspberrys die Bilder abrufen.

Für den Dateitransfer nutzen wir NFS, da es ziemlich einfach zu konfigurieren ist und wir die NFS-Freigaben bei den Bilderrahmen als Ordner einbinden können. Im Groben und Ganzen soll das Konstrukt dann so aussehen:

Mehrere verteilte Bilderrahmen

Mehrere verteilte Bilderrahmen

Damit wir weitermachen können, benötigen wir einen Linux-PC, den wir als zentrale Bildablage im Netzwerk nutzen können. Auf diesem PC müssen wir erstmal einen NFS-Server installieren und die Freigabe konfigurieren.

Im nachfolgenden nehmen wir an, dass der Server die IP-Adresse 192.168.2.120 und der Raspberry Pi die IP-Adresse 192.168.2.13 hat.

Installation des NFS-Servers:

nfs-kernel-server

Freigabe des Bilderordners auf dem NFS-Servers:
Die Freigaben werden in der Datei /etc/exports eingetragen.

/home/benutzername/Bilder 192.168.2.13(ro,async)


Die Zeile besagt folgendes

  • /home/benutzername/Bilder = Pfad zum Bilderordner
  • 192.168.2.13 = IP-Adresse des Raspberry Pis
  • (ro,async) = Der Raspberry Pi erhält nur Leserechte auf den freigegebenen Ordner und es erfolgt ein asynchroner Datentransfer

Zum Schluss lassen wir die neue Konfiguration mit dem Befehl einlesen

sudo exportfs -ra 

Wechselt nun auf den Raspberry Pi. Zuerst müssen wir dort das Paket nfs-common installieren:

sudo aptitude install nfs-common

Nach der Installation schauen wir, ob wir auf dem raspberry Pi die NFS-Freigabe sehen:

showmount -e 192.168.2.120


Seht ihr nun die Freigabe, gehts weiter.

Auf dem Raspberry Pi möchten wir die Freigabe als neuen Ordner einbinden, der automatisch bei jedem Neustart eingebunden (=gemountet) wird.

Legt also einen neuen Ordner an

sudo mkdir /mnt/nfs-freigabe

Danach könnt ihr prüfen, ob ihr die Freigabe auf dem Pi einbinden könnt:

sudo mount 192.168.2.120:/home/benutzername/Bilder

Prüft nun, ob ihr die Bilder die auf dem Server gespeichert wurden, im neuen Ordner auf dem Raspberry seht

cd /mnt/nfs-freigabe
ls

Das Einbinden der NFS-Freigabe soll nun bei jedem Start des Raspberry Pis automatisch erfolgen. Ihr müsst dazu einen Eintrag in der Datei /etc/fstab vornehmen.

sudo nano /etc/fstab


Tragt dort die Zeile ein:

192.168.2.120:/home/benutzername/Bilder /mnt/nfs-freigabe nfs rw 0 0

Wenn ihr dort nun eine Liste eurer Bilder seht, hat alles funktioniert und ihr könnt mit der Konfiguration von pqiv weitermachen. Wie ihr euch sicherlich denken könnt, müsst ihr im Gegensatz zur Variante 1 nur den Pfad in der Datei start_pqiv.sh umbiegen:

/usr/bin/pqiv -sf /home/pi/Bilder

Nach einem Neustart der Raspberry Pi sollte die pqiv automatisch starten und die Bilder aus der NFS-Freigabe laden.
Da die Bilder immer vom Server geladen werden, könnt ihr zu jederzeit eine neue Diashow erstellen, ohne das die Betrachter des digitalen Bilderrahmes etwas davon mitbekommen.

Weiteres

Was ihr beim Einsatz eines Bilderrahmen mit dem Raspberry Pis noch beachten sollt:

  1. pqiv erzeugt unter Umständen eine hohe CPU-Last, was evtl. weitere Dienste/Programme auf dem Raspberry negativ beeinflusst:
    CPU - während des Bilderwechsels

    CPU - während des Bilderwechsels

    CPU - nach Bilderwechsel

    CPU - nach Bilderwechsel

  2. Der ständige Abruf der Bilder vom zentralen Server durch die Option -w kann beim Einsatz mehrer digitaler Bilderrahmen u.U. eine hohe Netzlast erzeugen und dadurch andere Dienste im Netzwerk beeinflussen. Als Abhilfe könnt ihr den ständigen Abruf der Bilder durch pqiv abschalten. Alternativ könnt ihr auch die Variante 1 verwenden und die Bilder vom Server mittels eines Cron Jobs in definierten Abständen auf den Raspberry kopieren lassen. Lokal könnt ihr ja ohne weiteres die Option -w verwenden, da so keine Last auf dem Netzwerk erzeugt wird.

Bildquelle: raspberrypi.org

hat dir dieser Artikel gefallen?

Dann abonniere doch diesen Blog per RSS Feed!

Kommentare (15) Trackbacks (0)
  1. HalloDeine Anleitung ist ja echt bis ins kleinste Detail gut beschrieben! Vielen Dank!Hast du es auch geschafft, dass die Bilder im Vollbildmodus angezeigt werden?Wenn ich ihn als digitalen Bilderrahmen benutze möchte ich ja nicht noch den Desktop sehen und der Bildschirm soll ja voll ausgefüllt werden (bei zu kleinen Bildern mit schwarzem Rahmen).Ich hoffe du kannst mir weiterhelfen. Vielen Dank!Gruss

  2. Hallo Simon,

    schön, dass dir die Anleitung geholfen hat.
    Hast du dir schon mal die Optionen von pqiv angesehen?
    Was passiert, wenn du ein upscaling mit dem Parameter t machst? Erhältst du dann ein Vollbild?

    Grüße

  3. Danke, jetzt funktioniert alles wie es soll!

  4. Hallo Stefan,
    nach Deiner Anleitung hat es einmal mit pqiv geklappt. Danach nicht mehr. Warum auch immer. Zwischenzeitlich kann ich Dir das Programm FEH empfehlen. Klappt gut und macht was es soll. Mächtige Kommandozeile und einfach per apt-get zu installieren. das Komando als Beispiel macht eine Diashow als Vollbild ohne Mausteiger und skaliert voll zeigt das Bild für 10s und holt sich alle Bilder aus der Ramdiskexport DISPLAY=:0 && feh -D 1 -Z -F -x -Y /home/pi/ram
    Ich habe die 50MB Ramdisk, für Bilder die ich mittels wget ständig austausche, angelegt und eine 50MB für die log Dateien, damit schone ich mein SD Karte:
    pi@raspberrypi ~ $ cat /etc/fstabproc            /proc           proc    defaults          0       0/dev/mmcblk0p1  /boot           vfat    defaults          0       2/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1tmpfs /var/log tmpfs nodev,nosuid,size=50M 0 0tmpfs /home/pi/ram tmpfs nodev,nosuid,size=50M 0 0# tmpfs /var/tmp tmpfs nodev,nosuid,size=50M 0 0# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that
    Mit Samba komme ich auc direkt auf die Laufwerke. Die Anleitung dafür ist hier:http://simonthepiman.com/how_to_setup_windows_file_server.php
    hoffe es ist was Nützliches dabei. Wir arbeiten gerade an einer Inforscreen Lösung mit XIBO (www.xibo.org.uk). Ein Kollege ist mit seinem Raspi recht weit.

    Gruss

    Christoph

  5. Hallo Christoph,

    danke für die Info.

  6. Hallo,finde den Artikel sehr interessant, da ich die Tage auch einen Infoscreen mit dem PI bauen will. Werde mal versuchen das nach zu vollziehen.Was mir die ganze Zeit aber schon Kopf zerbrechen macht: Habt ihr eine Power-Down Lösung ? Weil einfach Strom vom PI weg nehmen (z.B. für Nachts per Zeitschaltuhr) schrottet früher oder später ja das Filesystem – und per ssh einen normalen Shutdown vorher machen ist bei der Anwendung „Digitaler Bilderrahmen / Infoscreen“ ja auch eher unpraktisch…  Meine einzige Idee ist aktuell eine USV vorzusetzen und von dort das Power-Down-Signal abzufangen :(Björn

  7. Hi Björn,

    wahrscheinlich ist die Beste Lösung alles via Zeitschaltuhr herunter zu fahren. Du musst ja dann auch deinen Monitor vom Strom trennen.
    Eine zentrale Lösung, um mittels SSH die Pis auszuschalten ist mir nicht bekannt.
    Falls du hier eine brauchbare Lösung findest, wäre es nett, wenn du hier ne kurze Info hinterlässt.

  8. Auch wenn Du den Raspberry Pi am Fernseher betreibst: Es wäre interessant, was für einen standalone-Bilderrahmen für ein Monitor / Display geeignet wäre. Also irgendetwas stromsparendes, was problemlos 24h am Tag laufen könnte ohne kaputt zu gehen.

  9. Hallo Stefan!Klasse Anleitung!Mich würde allerdings noch interessieren, wie dies über FTP zu realisieren ist, vielleicht könntest du deinen Beitrag um diesen Punkt erweitern 😉

  10. Hallo dasObst,

    mir ist nicht ganz klar, was du mit einem FTP-Server hier machen willst.
    Falls du ein Programm suchst, mit dem du von einem Windows-PC aus Bilder ohne Konfigurationsaufwand auf den Pi laden kannst, würde ich dir WinSCP empfehlen.

  11. Hallo Stefan,Danke für den Beitrag. Ich habe deine Anleitung befolgt, aber leider startet bei mir die Bildershow nicht automatisch. Beim der Fehleranalyse konnte ich Tippfehler ausschließen. Hast du ne Idee fürs Troubleshooting?

  12. Hallo Tom,

    verwendest du pqiv? Hast du das Programm in den Autostart gelegt oder startest du das manuell? Hast du dir die Optionen schon mal angeschaut, ob du evtl. einen anderen Parameter zum starten benötigst?

  13. @TomDa ist ein Schreibfehler beim erstellen der pqiv.desktop Datei.Bei Type schreibt man Application mit c und nicht mit k (beim Bild ist es richtig).Dann klappt es auch mit dem Autostart;)Ansonsten vielen Dank für die Anleitung, meine Frau freut sich über ihren schönen neuen digitalen Bilderrahmen.

  14. Hi!Ich hab‘ das ganze nachgebaut, allerdings den Samba-Client für den Zugriff aufs Netzwerk benutzt.Funktioniert wunderbar bis auf eine Kleinigkeit:Auch bei mir startet die Slideshow nicht automatisch.Du schreibst:“Legt nun eine Datei im einem beliebigen Verzeichnis an, wo ihr die
    Startoptionen für pqiv eintragen könnt. Ich habe die Datei im
    Verzeichnis /home/pi/.config/autostart angelegt.“Das Verzeichnis „autostart“ hat bei mir nicht existiert. Da Du schreibst, man könne die Datei in einem beliebigen Verzeichnis anlegen, habe ich das Verzeichnis autostart erzeugt und darin die Dateien angelegt.Was mich wundert:Da ist jetzt ein neu angelegtes Verzeichnis, in dem stehen zwei ausführbare Skripte, die irgendwie pqiv starten sollen – aber woher soll der Pi jetzt wissen, daß er diese Skripte ausführen soll??? Das erschließt sich mir aus Deiner Anleitung nicht so ganz…Danke für jede Hilfe, Thomas

  15. Hallo – ich versuche alles gemäss anleitung nachzubauen (ich beherrsche nicht mehr) und komme recht gut voran bis zum Start: pqiv [-option] [file or folder]

    Danach erscheint aber die Meldung: Failed to load any of the images

    Kann mir jemand sagen, was ich falsch mache? Wo müssen die Bilder abgelegt sein?


Leave a comment

Noch keine Trackbacks.

%d Bloggern gefällt das: