auch persönlich: 09122691850 Email :website@blumen-schwarz.de

Infobildschirme - Digital Signage mit Nextcloud

Diese Anleitung und Idee setzt erweiterte Linuxkenntnisse voraus

Infobildschirme

Seit einigen Jahren laufen bei uns in den Gärtnereien 3 Bildschirme mit unseren Informationen. Bis 2024 haben wir das sehr einfach mit dem WordPress Plugin "Foyer" gelöst. Das Wort "einfach" ist dabei relativ.  Wir empfanden das Plugin Foyer immer unnötig kompliziert und mit sinnvollen Funktionen eingeschränkt. Aber der große Vorteil war: Wir mussten keine weitere Software installieren und hatten alles schön beieinander.

Seit 2024 sind bei diesem Plugin Sicherheitslücken bekannt. Anscheinend wird es nicht mehr weiterentwickelt: Wir mussten uns auf die Suche nach einer neuen Lösung begeben.

Unsere Voraussetzungen:

  • Client/Server Struktur. Verwaltung zentral über unsere Webserver.
  • Client auf Raspberry Pi Basis - einfach weil die Dinger kostengünstig sind und das Stromsparen Sinn macht.
  • Betriebssystem auf beiden Seiten Linux.
  • Wir wollen keine fremdgehostete Software, sondern die Programme sollen alle, mit allen Daten bei uns laufen. Ohne dass irgendwo hintelefoniert wird, google-analytics eingebunden ist oder ähnliche Scherze. Das macht den Datenschutz einfacher.

Xibo

Auf vielen Linuxseiten haben wir Tipps für Digital Signage (Infobildschirme) gefunden. Mit ganz oben dabei war immer xibo.

Xibo kommt aus OpenSource Anfängen. Daher, wenn man etwas sucht, findet man auch den Quellcode für die Installation. Das Installieren ist nicht ganz trivial und hat uns einen guten halben Tag Arbeit gekostet.

Danach gingen wir ins Administrationsmenü von Xibo und ... ja wir waren entsetzt. Xibo ist unglaublich vielfältig und enorm leistungsfähig. Oder jemand der Menschen hasst, hat die Oberfläche programmiert. Ein "schneller" Start wäre damit auf keinen Fall möglich gewesen. Unter zwei Tagen schien eine Einarbeitung unmöglich. Zur Krönung sind wir dann auf einen Artikel gestoßen (jaja - hätte man vorher lesen müssen), dass xibo seit 2022 keine Raspberry Pi an den Infobildschirmen mehr unterstützt: Die Software braucht mehr Rechenleistung.

PiSignage

Schweren Herzens haben wir die nächste Software installiert: PiSignage.

Wie der Name schon anklingen lässt, gibt es hier etwas für den Raspberry Pi. Die Software ist genau das Gegenteil von Xibo: Sehr wenig Funktionen. Trotzdem hat es mit Xibo gemeinsamn, dass die Oberfläche nicht so klar strukturiert ist, wie man es denken könnte.

Und das Kleingedruckte: Die Serversoftware ist zwar Opensource, für die Clients fallen, aber trotzdem jährliche Kosten an. Anstatt auf bewährte Standardsoftware wie apache / nginx etc. zu setzen, wurde hier aufwendig alles selbst programmiert. Muss eigentlich nicht sein. Ich vertraue lieber auf nginx - das millionenfach eingesetzt wird und wo jeder bekannte Sicherheitsfehler innerhalb von wenigen Stunden behoben wurde.

Eigenbau mit unserer Cloud

Jetzt waren wir schon sehr genervt, haben frustriert alles wieder gelöscht und eine Eigenbaulösug umgesetzt.

Unser Aufbau:

Die Bild- und Videodaten der Präsentation auf den Infobildschirmen liegen in unserer Nextcloud. Die Clients holen sich dort die Daten und spielen diese mit einem einfachen Mediaplayer ab.

Hier gab es ein paar Probleme mit Nextcloud. Aktuell (2024 )ist beim Raspberry Pi - aus welchen Gründen auch immer - kein Nextcloudclient dabei. Wir haben daher das Bildschirmverzeichnis mittels davfs eingebunden (als Vorbereitung dazu muss unter /home/pi/.davfs2/secrets das Loginpasswort des Nextcloudusers hinterlegt werden und in der /etc/fstab die Nextcloudadresse zum Mounten als User freigegeben sein - bitte genaue Doku selber nachlesen).

Unser "Player" ist denkbar einfach und wird über /etc/xdg/autostart/ gestartet

#!/bin/bash
sleep 10
xset s off
xset s noblank
mount /home/pi/nextcloud/
pingtest=`ping -c2 NEXTCLOUDSERVER|grep -c "64 bytes"`
if test $pingtest -gt 0
then
rsync -av --delete /home/pi/nextcloud/Verzeichnisname/* /home/pi/media/
else
echo "offline - wir nehmen die Version vom Vortag"
fi
#zwei Monitore Version mit zeitversetzen Content
mpv --screen=1 --shuffle --loop-playlist -fs --image-display-duration=7 /home/pi/media/* &
sleep 4
mpv --screen=0 --shuffle --loop-playlist -fs --image-display-duration=7 /home/pi/media/*

umount /home/pi/nextcloud/

 

So gut und so einfach. Damit der client automatisch, wenn  man neue Bilder eingestellt hat, ein Update fährt, machen wir einen einfachen Steuermechanismus: Im Bilderverzeichnis wird eine leere Textdatei neustart.txt angelegt (geht super einfach von der Nextcloud Weboberfläche aus).

Alle 2 Minuten (einfach crontab Eintrag) wird folgendes Script im Hintergrund gestartet (Achtung die vcgencmd Sache funktioniert auf neueren Raspberry Pis ab Debian Bookworm nicht mehr):

#!/bin/bash

neustart="/home/pi/nextcloud/Verzeichnisname/neustart.txt"

check=`ps aux |grep -v grep|grep -c "mpv --screen"`
schirman=`vcgencmd display_power|sed 's/display_power=//g'|sed 's/ //g'`
if test $check -lt 1
then
if test $schirman -gt 0
then
echo "mpv Medienplayer läuft nicht - Digital Signage außer Betrieb"
/etc/init.d/lightdm restart
fi

else
echo "alles ok - DS schaut gut aus"
fi

if test $schirman -gt 0
then
if test -f "$neustart"
then
rm $neustart
sleep 5
umount /home/pi/nextcloud
service lightdm restart
fi
else
umount /home/pi/nextcloud 2>/dev/null
killall mpv 2>/dev/null
fi

 

Das war alles. Super einfach und funktioniert besser als PiSignage. Wir haben allerdings folgende Einschränkungen:

  • Es können keine Laufschriften, Uhrzeiten, Wetterdaten oder sonstiges (eigentlich überflüssiges) Zeugs gezeigt werden - das könnte man noch nachprogrammieren, aber wir sehen es nicht als wichtig.
  • Man kann keine Verfallszeit eingeben. Sondern muss die Bilder / Videos, die nicht gezeigt werden sollen - einfach in ein anderes Verzeichnis schieben.
  • Es gibt keine animierten Bildüberläufe

Wir haben uns eine Demovorlage mittels Inkscape erstellt. Hier erstellen wir die Präsentationen und exportieren sie ins jpg Format (und natürlich alles mit Nextcloud, so dass alle Verantwortlichen hier bequem daran arbeiten können).

Wir haben die ersten Versuche mit dem VLC Videoplayer gemacht (damit wären auch OSD Einblendungen möglich gewesen). In der Praxis hat er aber zuviel Rechenleistung benötigt und  das duale Starten auf zwei Bildschirmen (von einem Raspberry PI aus) haben wir nicht geschafft. Wir skalieren die Videos ins 720HD Format. Damit lassen sich, mit einem Pi4b, auch kurze unterschiedliche Videos auf 2 Bildschirmen abspielen.

Ich hoffe, dass dieser Artikel ein netter Gedankenanstoß für weitere Eigenentwicklungen sind ... Manchmal geht gute Software selber und einfacher besser.

 

 

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert