Inhaltsverzeichnis
Digital Signage mit Raspberry Pi
Unter Digital Signage versteht man so viel wie eine Werbetafel die auf einem Digitalen Bildschirm/Monitor ausgegeben wird. Zur Kostengünstigen und Stromsparenden umsetzung genügt ein Monitor oder Fernseher sowie ein Raspberry Pi. Es gibt einige vorgefertigte Systeme jedoch auch eine einfache Lösung für den kleinen Rahmen.
In dem hier beschriebenen Fall ging es darum aus einem Fernseher einen Digitalen Bilderrahmen zu erstellen der im Hintergrund Musik abspielt.
Was wird benötigt?
Hardware:
- Raspberry Pi
- Stromkabel (geht oft auch über den USB ausgang des Fernsehers)
- HDMI Kabel
- Fernseher oder Monitor
- optional: USB-Stick
Software:
Wissen
- Bashscripting
- Udev
Erste Schritte
Ich setze für dieses Tutorial vorraus das Raspbian schon installiert wurde und ihr mit ssh mit eurem System verbunden seit. Nun möchten wir die benötigten Programme installieren.
sudo apt-get install feh moc unclutter
USB-Stick vorbereiten
Dieser Schritt ist nur notwendig wenn man die Daten über einen USB-Stick einbinden möchte. Hierzu erstellt man in der /etc/fstab
einen Eintrag für den USB-Stick damit dieser immer an der selben stelle eingebunden wird.
Zunächsteinmal müssen wir jedoch erst die UUID des USB-Stick in Erfahrung bringen. Dies geschieht mit hilfe des folgenden befehls:
sudo fdisk -l sudo blkid
die UUID notieren und dann mit sudo vi /etc/fstab
die fstab wie folgt Editieren:
..... # USB-Stick einbinden UUID=bbf85ecb-cc61-40ed-ba7b-d7b804ee845e /media/Media vfat defaults 0 0
Scripte vorbereiten
#!/bin/bash # Need Value USER for start as non Root USER="pi" MOUNT="/media/Media" # Look for the USB stick and the Image folder if [ -d "${MOUNT}/Bilder" ]; then find $MOUNT/Bilder | egrep '.jpg|.jpeg|.png' > /tmp/bilder.lst su -c "DISPLAY=:0 feh -r -z -Z -F -D 60 -f /tmp/bilder.lst &" $USER # optional -p for preload image to look about loadable image or not! fi # Look for the USB stick and the Musik folder if [ -d "${MOUNT}/Musik" ]; then find $MOUNT/Musik | egrep '.mp3|.ogg|.flac|.mpc|.wma|.aac|.mp4|.wav|.opus' > /tmp/lst.m3u sleep 5 su -c "mocp --server ; sleep 3 ; mocp -a /tmp/lst.m3u -p -o shuffle -o repeat" $USER fi # Hide Mouse after 1 second unclutter exit 0
Autostarts Vorbereiten
Mocp Server Starten
Um Mocp direkt aufrufen zu können muss der Server gestartet sein. Dies wird Automatisch beim Sytsemstart über einen init.d eintrag gelöst. Hierzu erstellt man folgende Datei unter /etc/init.d
/etc/init.d/moc
#! /bin/sh ### BEGIN INIT INFO # Provides: mocp --server # Required-Start: $local_fs # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Sort-Description: Starte mocp Server # Description: Mocp Server wird benoetigt für das /usr/local/bin/usbstick Script. ### END INIT INFO # INIT script by www.calyrium.org #################################### # Customize values for your needs: "User"; USER="pi" ######## Mocp Server start/stop/restart script ###### case "$1" in start) su $USER -c "mocp --server" ;; stop) su $USER -c "mocp --exit" ;; restart) su $USER -c "mocp --exit ; sleep 1 ; mocp --server" ;; *) echo "Usage: {start|stop|restart}" >&2 exit1 ;; esac exit 0
Danach muss sie noch ausführbar gemacht werden:
sudo chmod 755 /etc/init.d/moc
Mittels update-rc.d moc defaults
wird das Script nun in den Systemstart integriert.
Script Starten
Hierzu erstellen wir unter /etc/xdg/autostart
die Datei usbstick.desktop
mit folgendem Inhalt:
[Desktop Entry] Name=Usbstick Comment=Startet das Script /usr/local/bin/usbstick nach dem Start Exec=sudo sh /usr/local/bin/usbstick & Terminal=fales Type=Script
Bildschirmschoner abschalten
Standartmäßig wird der Bildschirm nach einigen Minuten schwarz. Dies ist natürlich nicht Sinvoll wenn man darauf bilder anzeigen möchte. Hierzu bearbeitet man die Datei /etc/lightdm/lightdm.conf
wie folgt:
[SeatDefaults] xserver-command=X -s 0 -dpms
Sonstige Einstellungen
Auflösung
Um die Auflösung des Raspberry Pi auf 1920×1080 zu setzen muss der Overscan abgeschaltet werden. Dies erledigt man über die config.txt indem man die folgende Zeile einfügt:
disable_overscan=1
Todo
- Beschleunigung des Starts von feh
- Troubleshooting = Kein ausfall wenn der USB stick mal nicht drin ist, script neustarten wenn der Stick später enigesteckt wird…
- Ressourcen beim Start minimieren evtl. zuerst interne Daten starten und nach etwas ladezeit dann auf die anderen daten umspringen.
Quellen
- Manpage der einzelnen Programme