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.
apt-get install x11-xserver-utils feh
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:
xset s off xset -dpms xset s noblank
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.
adduser neuerbenutzer
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.
1:2345:respawn:/sbin/getty 115200 tty1
Diese ändern wir wie folgt:
#1:2345:respawn:/sbin/getty 115200 tty1 1:2345:respawn:/bin/login -f neuerbenutzer tty1 /dev/tty1 2>&1
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.
su -l neuerbenutzer -c startx exit 0
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:
#!/bin/bash FOLDER="Desktop/Bilder/" TEMPF="/tmp/slideshow"; export DISPLAY=":0" if [ -d $FOLDER ] then MD5C=$(ls -al $FOLDER | md5sum | awk '{ print $1 }'); else echo "Error: Folder does not exist"; fi; case $1 in start) feh --quiet -Z -F -Y --slideshow-delay 12 $FOLDER & echo $MD5C > $TEMPF ;; stop) pgrep -f "feh" > /dev/null && kill `pgrep -f "feh"` && rm $TEMPF ;; restart) $0 stop && $0 start ;; status) if [ $(pgrep -f "feh") ] then echo "Slideshow running"; exit 0; else echo "Slideshow not running"; exit $? fi ;; cron) if [ -e $TEMPF ] then MD5O=$(cat $TEMPF) if [ $(pgrep -f "feh") ] then # Passt true else $0 start; fi else echo "Slide show not started or $TEMPF vanished" exit 0 fi # Changes made = restart if [[ $MD5O != $MD5C ]] then echo $MD5C > $TEMPF $0 stop $0 start exit 0 fi ;; *) echo "Usage: $0 {start|stop|reload|cron}"; exit 2 ;; esac
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.
[Desktop Entry] Name=Slideshow Exec=/home/benutzername/slideshow.sh start Terminal=false Type=Application
Nach einem Reboot müsste nun die Slideshow direkt starten. Für den Check editieren wir noch die cronjobs des benutzers crontab -e
* * * * * /home/benutzername/slideshow.sh cron
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 Antworten auf „Raspberry Pi als Slideshow / Digital Signage Server“
Danke für die Anleitung! Ich musste noch ein paar Zeile anpassen, aber es funktioniert. Ich hätte noch zwei Fragen dazu: kann ich als Ordner auf meinem NAS verweisen? Kann ich die Wiedergabe-Reihenfolge der Bilder auf zufällig umstellen?
LG
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.
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.
Hi Russell,
danke für die Rückmeldung. Gut zu wissen dass es klappt. Ich hoffe ich komme bald mal dazu noch eine Lösung zu basteln um auch kleine Videos abzuspielen. Das fehlt mir noch irgendwie.
Gruß,
Christian
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
Danke Jens für die Hinweise.
In Zeile 39 hätte das „true“ eigentlich in die nächste Zeile gehört. Keine Ahnung wo der Zeilenumbruch hin ist. Den Rest habe ich soweit angepasst.
Mich würde immernoch eine Variante mit Videos interessieren aber irgendwie komme ich nicht dazu :)))
Christian
Hey, coole Idee das mit der DropBox zu syncen und somit immer eine aktuelle Slideshow zu haben.
LG,
Christian
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
Hallo Christian
in deinem Script ~/slideshow.sh ist noch ein Fehler: in Zeile 4 gehört das if in die nächste Zeile.
wg. Video: Schau Dir mal die folgenden Seite an:
http://www.cenolan.com/2013/03/looping-video-playlist-omxplayer-raspberry-pi/
LG
Jens
Hi Jens,
danke für den Link um omxplayer. Ich hab nicht rausgefunden ob der omxplayer auch Bilder anzeigt. Beides wäre nämlich optimal.
Christian
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
Hallo Christian, hallo Thomas
ich habe meine Sildeshow letztendlich nach dem folgenden Beispiel aufgebaut:
https://web.archive.org/web/20150309013835/http://tathros.squarespace.com/blog/2014/11/9/how-to-add-great-slide-transitions-to-your-picture-frame
Es verwendet ein Phyton-Demoprogramm. Es kann mehrere Überblendungen und erkennt neue Bilder automatisch.
LG
Jens