Raspberry Pi als Slideshow / Digital Signage Server

Der Raspberry Pi eignet sich durch seine kleinen Ausmaße und dem lüfterlosen Design hervorragend als einfacher „Slideshow Server“ bzw. sogenannter Digital Signage Server (DSS) um z.B. einen LCD Fernseher als Werbefläche oder für aktuelle Angebote zu betreiben. Dazu ist er deutlich günstiger als kommerzielle Geräte für diesen Zweck.

Einleitung

Welche Variante des Raspberry Pi wir verwenden ist egal. Zunächst Installieren wir Raspbian auf dem Pi. Ob über das Raspbian Image oder die NOOB SD-Karte ist jedem freigestellt. Entsprechende Images finden sich unter https://www.raspberrypi.org/downloads/

Dazu schließen wir den Pi an einen Monitor an, verbinden Tastatur und Maus und stecken die SD-Karte mit dem Installer ein, um dann den Raspberry Pi mit den Netzteil zu verbinden.

Installation

Wärend der Installation lassen wir den Rechner weiterhin in die Konsole starten und halten uns sonst an die Voreinstellung. Netzwerkeinstellungen wählen wir also passend zu unserer lokalen Umgebung. Nachdem der Raspberry Raspbian neu gebootet hat, loggen wir uns mit dem Pi Benutzer ein und aktivieren über raspi-config gleich noch SSH Server.

Wir installieren nun noch einige Pakete die wir gleich benötigen werden. Darunter x11-xserver-utils und feh unser gewähltes Slideshow Programm.

Energiesparmodus deaktivieren

Damit der Bildschirm nicht nach einiger Zeit abdunkelt, deaktivieren wir den Energiesparmodus. Dazu fügen direkt in der zweiten Zeile der /etc/X11/xinit/xinitrx folgendes ein:

Neuer Benutzer

Nun erstellen wir einen neuen Benutzer der dann später automatisch eingeloggt wird und mit dessen Rechten die Bilder angezeigt werden. Wie verwenden beispielhaft den Namen neuerbenutzer. Mit diesem Benutzer ändern wir auch später per SSH/SCP die Bilder die Angezeigt werden.

Das Passwort notieren wir uns für den spätern Zugriffe von Aussen. Alternativ lässt sich natürlich auch ein public key hinterlegen.

Autologin

Damit auch nach einem Reboot automatisch die Slideshow ohne Passworteingabe startet aktivieren wir nun die automatische Anmeldung für unseren neuen Benutzer.

Wir editieren per SSH oder Konsole die Datei /etc/inittab und suchen folgende Zeile.

Diese ändern wir wie folgt:

/etc/inittab

Dabei natürlich neuerbenutzer entsprechend dem gewählten Benutzername ersetzen.

Jetzt editieren wir noch die /etc/rc.local und fügen ganz unten vor exit 0 noch eine Zeile ein.

Damit wird der XServer mit dem neuen Benutzer gestartet.

Jetzt ist es Zeit für einen Reboot. Der Raspberry Pi sollte nun in der Oberfläche mit dem gewünschten Benutzer starten.

Slideshow Script

Wir erstellen im Home-Verzeichniss des neuen Benutzers folgendes Script:

Es gibt verschiedene parameter wie start, stop, restart und cron. Start und Stop können wir gleich ausprobieren. Der Pfad für die Bilder muss ggf. angepasst werden bzw der Ordner erzeugt werden. Ausserdem müssten bei Bedarf die Parameter des Bildbetrachters feh angepasst werden. So zum Beispiel die Zeit zwischen den Bildern.

Sobald gestartet, kann man die Slideshow dazu veranlassen mittels cron zu prüfen ob sich die Dateien geändert haben. Der Check ist ziemlich rudimentär sollte aber robust genug sein. Werden neue Bilder gefunden startet sich die Slideshow neu und Zeigt diese an.

Damit die Slideshow direkt startet erzeugen wir noch eine Autostart Datei für unseren Fenstermanager LXDE.

Nach einem Reboot müsste nun die Slideshow direkt starten. Für den Check editieren wir noch die cronjobs des benutzers crontab -e

Damit wird jede Minute überprüft ob sich etwas geändert hat.

Nun kann man entweder direkt oder per Portforward auf den Raspberry Pi zugreifen und neue Dateien hochladen und der Monitor zeigt diese dann automatisch an. Schön wäre später auch noch Videos anzeigen zu können dies ist mit feh aber nicht möglich.

 

 

15 Gedanken zu „Raspberry Pi als Slideshow / Digital Signage Server

    • Hallo!
      Das freut mich zu hören.

      Bezüglich NAS: Du kannst den smbclient auf dem Raspberry installieren und mit etwas wie „sudo mount -t cifs -o user=changeme,password=changeme //192.168.1x.x/sharedfolder /home/username/sambashare/“ einen Ordner mounten. Dafür gibts aber auch Tutorials.

      Wegen Zufall: Versuche bitte mal bei feh -z oder –randomize in die Parameter mit auf zu nehmen. Das müsste Zeile 13 im Startscript sein.

  1. Hallo nochmal Christian,

    also zufällige Wiedergabe funktioniert so wie Sie beschrieben haben, Zeile 13 wie folgt beschreiben:

    feh –quiet -Z -F -Y –randomize –slideshow-delay 12 $FOLDER &

    Danke für den Tipp mit dem NAS, ich habe es zwar noch nicht ausprobiert aber es klappt bestimmt auch.

    Ich habe tatsächlich 32.164 Bilder mit der Auflösung 1024×768 auf einem USB-Stick gespeichert (Format FAT32, ergibt ca. 4,5 GB) und nutze diese für den Slideshow. Es funktioniert sogar auch mit so vielen Bildern! Es lädt ungefähr 10 Minuten bis der Slideshow startet (RPI B+) aber sobald es läuft, läuft es flüssig.

    LG
    Russell

    • ein kleines Update: es funktioniert auch mit einem NAS. Ein Ordner vom NAS wird, wie Christian oben beschrieben hat, montiert. Fehs greift dann auf diese Bilder zu. Ich habe z.B. Dropbox mit meinem NAS gekoppelt und habe somit immer die neusten Bilder vom Handy& co. im Slideshow drin.

  2. Hallo Christian

    in deinem Script ~/slideshow.sh sind mir zwei Dinge aufgefallen

    1. in deinem Script definierst du in der dritten Zeile TEMPF=“/tmp/slideshow“;. Später im Listing verwendest du aber in Zeile 34,36, und 50 den direkten Pfad.
    2. in Zeile 39 hast du zwischen then und else nur einen Kommentar stehen, der eine Fehlermedung über ein unerwartetes else verursacht.

    LG

    Jens

  3. hallo Chriastian

    ich habe mal dein Skript ausprobiert, leider gescheite ich ab dem Punkt mit initab
    „/etc/inittab“
    Ich habe Raspbian version 6 benutzt und die Datei Iniitab gibt es leider nicht. Könntest Du mir da behilflich sein. Ich bin leider blütiger Anfänger
    Danke für deine Hilfe

    • Sorry wegen der späten Antwort. Tatsächlich gibt es in den neuen Raspbians keine inittab mehr da hier systemd als Startdienst zum Einsatz kommt.

      Lösung 1:
      Du könntest einmal nachschauen ob es bei dir in der GUI unter Menu>Preferences>Raspberry Pi Configuration bei System Optionen gibt wie Boot: To Desktop bzw Auto Login:

      Beschreibung: Englische Anleitung – Auto Login für Rapsbian Jessie

      Lösung 2:


      sudo -i
      mkdir -pv /etc/systemd/system/getty@tty1.service.d
      nano /etc/systemd/system/getty@tty1.service.d/autologin.conf

      Dann folgenden Text einfügen:


      [Service]
      ExecStart=-/sbin/agetty --autologin $username --noclear I 38400 linux

      Habs aber nicht getestet bis jetzt.

      LG,
      Christian

  4. Hallo zusammen.
    Ein tolles Script und tausend Dank somit habe ich eine tolle Show zum laufen bekommen.

    Aber eine Frage habe ich noch, gibt es irgendeine Möglichkeit Überblendungen einzubauen?
    Ich hab gesucht wie blöd, aber es scheint nichts zu geben was aus der Kommandozeile eine Show
    mit Überblendungen abspielt.

    MfG

    Thomas

    • Hallo Thomas,

      freut mich das ich helfen konnte. So ganz glücklich bin ich mit feh als Slideshow Tool auch nicht. Die fehlende Videounterstützung und keine Überblendungen sind echt schade.

      Aktuell schwebt mir eine Browser Lösung vor, bei der per JavaScript die Bilder geladen werden und damit auch Effekte und Videos möglich werden. Ich vermute aber dass die Stabilität darunter leiden würde. Auch könnten kleine Raspberry Pis für Videos per Browser zu langsam sein.

      Gruß,
      Christian

Kommentar verfassen