====== 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:** * Raspbian * feh((ein schlanker Bildbetrachter für die Konsole)) * moc((moc ist ein Ausgereifter Musikplayer für die Konsole)) * unclutter((ein kleines Tool um die Maus aus dem Bild zu schieben)) **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 1920x1080 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 ==== * [[http://www.forum-raspberrypi.de/Thread-tutorial-automatisches-starten-von-scripte-programme-autostart|Autostart in Rasbpian]] * [[http://raspberrypi.stackexchange.com/questions/2059/disable-screen-blanking-in-x-windows-on-raspbian|Bildschirmschoner abschalten]] * Manpage der einzelnen Programme * [[http://wiki.ubuntuusers.de/Startseite|Ubuntuusers Wiki]] * [[http://www.foxplex.com/sites/raspbian-aufloesung-auf-1920x1080-aendern/|Displayauflösung anpassen]] * [[http://elinux.org/RPiconfig#Video_mode_options|RPiconfig]]