# Calypso Calypso arbeitet als Empfänger von HTTP-Signalen und setzt diese in Kommandos an den [OMXPlayer](https://www.raspberrypi.org/documentation/raspbian/applications/omxplayer.md) um. Auf diese Weise kann ein Raspberry Pi als Abspieler von anderen Geräten aus fernbedient werden, am Pi selbst ist keine Bedienung erforderlich. Weitere Infos zu Calypso auf der [Produktseite](https://uhilger.de/data/ulrich/prg/calypso/). ## Nutzungsvoraussetzungen Zur Ausführung von Calypso wird eine Java-Ablaufumgebung (Java Runtime Environment, JRE) benötigt. Auf der Kommandozeile des Raspberry Pi kann mit dem folgenden Kommando ermittelt werden ob das JRE vorhanden ist. ``` java -version ``` Wenn eine Antwort wie z.B. ``` openjdk version "11.0.9.1" 2020-11-04 OpenJDK Runtime Environment (build 11.0.9.1+1-post-Raspbian-1deb10u2) OpenJDK Server VM (build 11.0.9.1+1-post-Raspbian-1deb10u2, mixed mode) ``` erscheint, ist das JRE vorhanden. Andernfalls kann es mit folgendem Kommando installiert werden: ``` sudo apt-get update sudo apt-get install default-jdk ``` ## Calypso erhalten Der Quellcode von Calypso wird von hier an einen frei wählbaren lokalen Ablageort [heruntergeladen](/gitblit/zip/?r=Calypso.git&format=zip) und entpackt. In der hier folgenden weiteren Beschreibung wird das so entstandene Verzeichnis `Calypso` einschließlich des absoluten Pfades dorthin `$CALYPSO` genannt. Anstelle von `$CALYPSO` würde man also beispielweise `/home/fred/Calypso` notieren, wenn in das persönliche Verzeichnis des Benutzers `fred` heruntergealden und entpackt wurde. ## Programm herstellen Zur Herstellung des Programmes werden mit Hilfe der wie zuvor beschrieben geladenen Teile die folgenden Kommandos ausgeführt (Beispiel für Linux): ``` cd $CALYPSO mkdir classes mkdir dist $JDK/bin/javac -d classes src/de/uhilger/calypso/*.java src/de/uhilger/calypso/handler/*.java $JDK/bin/jar -cf dist/calypso.jar -C classes . rm -r classes ``` Das fertig verwendbare Programm liegt anschließend unter `$CALYPSO/dist/calypso.jar`. ## Media-Quellen einrichen Calypso kann in zwei Betriebsarten gestartet werden: 1. NFS-Client 1. HTTP-Client ### NFS-Client Mit dem Parameter `nfs-prefix` spielt Calypso Media-Inhalte aus Quellen ab, die über das Network File System (NFS) eingebunden sind. ``` java -jar calypso.jar nfs-prefix="/media/mc" port=9090 ``` In dieser Betriebsart wird dem Inhalt, der beim Abspielen über den Parameter `title` angegeben wird, der Präfix aus dem Parameter `nfs-prefix` vorangestellt. Wird Calypso beispielsweise mit folgendem URL aufgerufen: ``` http://rpi4-wz:9090/calypso/play?title=/Filme/H/heat.m4v&th=60&ti=60&o=local ``` wird die Datei `/media/mc/Filme/H/heat.m4v` abgespielt. #### Betriebsart NFS-Client einrichten Zur Verwendung Calypsos in der Betriebsart NFS-Client muss der Raspberry Pi die Softwarepakete für den NFS-Client installiert haben. Zudem muss auf dem Raspberry Pi in der Datei `/etc/fstab` ein Eintrag gemacht werden, der die entsprechende Quelle angibt, z.B. ``` mein-media-server:/media/extssd/mc /media/mc nfs rw 0 0 ``` Welche Quellen für einen solchen Eintrag verfügbar sind lässt sich auf dem Raspberry Pi mit folgendem Kommando sehen. ``` showmount -e mein-media-server ``` Die Maschine `mein-media-server` in den obigen Beispielen muss dafür als NFS-Server eingerichtet sein und Inhalte entsprechend via NFS freigeben. ### HTTP-Client Das folgende Kommando startet Calypso als HTTP-Client. ``` java -jar calypso.jar port=9090 ``` Wird der Parameter `nfs-prefix` beim Start Calypsos weggelassen, werden im Parameter `titel` Uniform Resource Locators (URLs) zu Media-Quellen erwartet wie z.B. in ``` http://mein-raspi:9090/calypso/play?title=http://mein-media-server:8080/tango/media/Filme/H/heat.m4v&th=60&ti=60&o=local ``` Für das Abspielen über HTTP muss der Raspberry Pi nicht als NFS-Client eingerichtet werden. Der Media-Server muss dann das Streaming über HTTP implementieren. ## Steuerbefehle Die folgenden Service-Endpunkte werden von Calypso bereitgestellt. /calypso/play + /calypso/seek + /calypso/pause + /calypso/stop + /calypso/ping + /calypso/server/stop ### play Text ### seek Text ### pause Test ### stop Text ### ping Text ### server/stop Text ## Calypso als Dienst einrichten Das Verteilpaket Calypsos enthält eine Beispieldatei namens `calypso.service`. Diese verweist auf das ebenfalls im Verteilpaket enthaltene Beispiel-Startskript namens `start`. Nach Anpassung der Pfade in `calypso.service` kann die Datei wie in folgendem Beispiel in das passende Systemverzeichnis des Raspberry Pi kopiert werden. ``` cd /home/pi/prg/calypso sudo cp calypso.service /etc/systemd/system/calypso.service ``` ### Dienst starten Mit folgendem Kommando kann der Dienst probehalber gestartet werden. ``` sudo systemctl start calypso.service ``` ### Dienst stoppen Der laufende Dienst kann mit folgendem Signal via HTTP veranlasst werden, sich zu beenden. ``` http://mein-raspi:9090/calypso/server/stop ``` Ueber systemd kann stattdessen der Prozess wie folgt 'hart' beendet werden. ``` sudo systemctl stop calypso.service ``` ### Dienst dauerhaft aktivieren Der folgende Befehl bewirkt, dass der Dienst nach einem Neustart des Raspberry Pi automatisch startet. ``` sudo systemctl enable calypso.service ``` ### Dienst deaktivieren ``` sudo systemctl disable calypso.service ``` ### Status des Dienstes pruefen ``` sudo systemctl status calypso ```