Multimedia Empfangstresen mit Raspberry Pi

04. Juni 2019 von Umut Savas Veröffentlicht unter Know-how/Tipps&Tricks, snowflake inside Verschlagwortet mit

Wer mehrere Raspberry Pis besitzt und diese über eine Plattform fernsteuern möchte, kann mithilfe des VNC SDK von Realvnc dies auf verschiedenste Arten realisieren. Das SDK bietet einem dabei mehrere Plattformen für die Realisierung der Server und Clients an. Für diese Umsetzung werden Grundkenntnisse in Linux vorausgesetzt.

In unserem Fall wird damit unser Empfangstresen umgesetzt. Der Empfangstresen hat fünf Bildschirme. Auf den Bildschirmen werden Videos, Diashows, Streams und Webseiten angezeigt. Die Bildschirme müssen bequem vom Arbeitsplatz aus fernsteuerbar sein.

Empfangstresen mit eingebauten Bildschirmen

Unser Empfangstresen mit den eingebauten Bildschirmen.

An jedem Bildschirm ist ein Raspberry Pi 3b+ angeschlossen. Es wurden Raspberry Pis eingesetzt, da sie besonders günstig, kompakt und einen geringen Stromverbrauch haben. Dadurch eignen sie sich besonders gut für unseren Anwendungsfall.

Raspberry PI B+

Jeder Raspberry Pi betreibt einen Bildschirm.

Die Server kann man unter folgenden Betriebssystemen betreiben:

  • Windows
  • Linux
  • Mac OS
  • Android

Für den Client werden folgende Betriebssysteme unterstützt:

  • Windows
  • Linux
  • Mac OS
  • iOS
  • Android
  • als Webseite mit HTML5

Für die Umsetzung braucht man neben den Raspberry Pis noch einen Developer Account bei Realvnc um einerseits das SDK herunterladen zu können und später den dazugehörigen API key abzurufen. Hier klicken, um sich dafür zu registrieren. Wenn man das SDK heruntergeladen hat, findet man im Ordner Samples die verschiedenen Server und Client (Viewer) Lösungen. In diesem Fall wird für den Server der “basicServer” und für den Client der “basicViewerHTML5” eingesetzt, weil die Bedienung über den Browser um einiges komfortabler ist und weniger aufwendig. Ansonsten müsste man bei jedem Client ein zusätzliches Programm installieren. Die Webseite ist in unserem Intranet allen Mitarbeitern zugänglich.

Installation & Konfiguration Server

Folgende Instruktionen müssen auf allen Raspberry Pis durchgeführt werden.

Key und Secret erhalten

  1. Terminal öffnen.



  2. sudo apt-get install python-virtualenv eingeben.
  3. sudo apt-get install cmake eingeben.
  4. Zum Verzeichnis tools/vnccloudaddresstool wechseln.
  5. ./run.sh eingeben.
  6. Es öffnet sich der Browser mit einer Seite in dem man nach dem API key und secret gefragt wird. Diese Daten kann man unter seinem Developer Account auf dieser Webseite entnehmen.
  7. Nun kann man eintragen wie viele Server und Clients man besitzt, damit man für alle die entsprechenden Adressen und Passwörter erhält.

Dateien vorbereiten und Server starten

  1. Terminal öffnen.
  2. Zum samples/basicServer Verzeichnis wechseln im Terminal.
  3. cmake . eingeben, um die build Dateien zu generieren.
  4. make eingeben, um die Dateien zu kompilieren.
  5. Server starten mit dem Befehl
    ./basicServer <Addresse des Servers> <Passwort des Servers>
  6. Beim Start des Servers wird ein Passwort im Terminal ausgegeben. Dieser wird später für den Client benötigt, damit sich dieser mit dem Server verbinden kann.
  7. Die Installation und Konfiguration der Server sind nun beendet.

Installation & Konfiguration Client

Es wird der Chrome Browser empfohlen. Folgende Instruktionen müssen auf allen Clients durchgeführt werden.

  1. Zum Verzeichnis samples/basicViewerHTML5 wechseln.
  2. Viewer.js mit einem Editor öffnen.



  3. Der Variable localCloudAddress die Adresse des Clients zuweisen.
  4. Der Variable localCloudPassword das Passwort des Clients zuweisen.
  5. Der Variable peerCloudAddress die Adresse des Servers zuweisen.
  6. Viewer.js abspeichern und schliessen.
  7. Viewer.html mit dem Browser öffnen.

    Serververbindung herstellen
  8. Connect klicken und anschliessend das Passwort eingeben, welches bei der Servereinrichtung unter Punkt 13 ausgegeben wurde.
  9. Man kann den Raspberry Pi nun bequem vom Arbeitsplatz aus fernsteuern.
Empfangstresen mit aktiven Bildschirmenieb

Es werde Licht! Unser Empfangstresen in Betrieb.

Bei mehreren Servern und Clients muss darauf geachtet werden, dass die gleiche Adresse oder das gleiche Passwort nicht mehrmals verwendet wird, da es sonst zu Problemen bei der Verbindung führen kann.

Automatisierung Server

Eine wichtige Frage, die man sich stellen sollte, ist folgende: “Was passiert, wenn ein Raspberry Pi abstürzt?”. Sollte das geschehen, müsste man den Server wieder manuell starten, was mühsam sein kann, wenn bereits alles eingebaut und verkabelt wurde. Für diesen Fall ist es ratsam einen Crontab einzurichten, der immer beim Aufstarten ausgeführt wird. Um einen solchen einzurichten müssen folgende Schritte ausgeführt werden.

  1. Terminal öffnen
  2. crontab -e ausführen
  3. Auf der untersten Zeile folgendes eingeben
    @reboot sleep 60 && export DISPLAY=:0 && /home/Pfad_zum_BasicServer <Addresse des Servers> <Passwort des Servers>
  4. Abspeichern und schliessen.

@reboot ist nötig damit es beim Aufstarten ausgeführt wird.

sleep 60 wird eingesetzt, um sicherzustellen, dass alle benötigten Dienste vorhanden und gestartet sind. Ansonsten kann keine Verbindung aufgebaut werden, weil die Verbindung zum Internet noch nicht besteht.

export DISPLAY =:0 ist nötig, damit der Server weiss welche Oberfläche er übertragen muss. Der Befehl setzt eine Systemumgebungsvariable die DISPLAY heisst und den Wert :0 hat.

Nun sollten nach jedem Neustart alle Raspberry Pis betriebsbereit sein.

Schwierigkeiten & Lösungsansätze

Während der Realisierung sind bei uns einige Probleme aufgetreten, die wir mit verschiedenen Lösungsansätzen behoben haben:

  • Ein Problem war, dass der Raspberry Pi nicht genügend Hardware Ressourcen hatte, um Youtube Videos auf dem Browser flüssig in HD darzustellen. Eine mögliche Lösung dafür ist der TBO Player. Er basiert auf dem vorinstallierten OMX Player. Mit ihm sind HD Videos von Youtube aber auch lokale Videos problemlos abspielbar.
  • Eine weitere Herausforderung stellte die Automatisierung der Server dar. Einen Crontab zu erstellen war schnell erledigt, jedoch gab der Server bei jedem Reboot den Fehler “Display not set” zurück, sodass ein Weg gefunden werden musste, ihm mitzuteilen um welches Display es sich handelt. Gelöst wurde dies wie bereits oben beschrieben mit einer Systemumgebungsvariable.

Schreibe einen Kommentar

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