Benutzer-Werkzeuge

Webseiten-Werkzeuge


digital_signage

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
  • feh1)
  • moc2)
  • unclutter3)

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

1)
ein schlanker Bildbetrachter für die Konsole
2)
moc ist ein Ausgereifter Musikplayer für die Konsole
3)
ein kleines Tool um die Maus aus dem Bild zu schieben
digital_signage.txt · Zuletzt geändert: 2016/01/06 12:45 von 127.0.0.1