commit | author | age
|
8e2038
|
1 |
|
4d64b6
|
2 |
# Calypso |
8e2038
|
3 |
|
8771ec
|
4 |
Calypso arbeitet als Empfänger von HTTP-Signalen und setzt diese in Kommandos an den [VideoLAN Player](https://www.videolan.org/vlc/) um. Auf diese Weise kann ein Raspberry Pi als Abspieler von anderen Geräten aus fernbedient werden, am Pi selbst ist keine Bedienung erforderlich. |
0af362
|
5 |
|
aa9b42
|
6 |
Weitere Infos zu Calypso auf der [Produktseite](https://uhilger.de/data/pg/calypso/). |
2c7545
|
7 |
|
b9e3c5
|
8 |
## Nutzungsvoraussetzungen |
U |
9 |
|
a337bf
|
10 |
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. |
b9e3c5
|
11 |
|
U |
12 |
``` |
|
13 |
java -version |
|
14 |
``` |
|
15 |
|
20a0c8
|
16 |
Wenn eine Antwort wie z.B. |
b9e3c5
|
17 |
|
U |
18 |
``` |
|
19 |
openjdk version "11.0.9.1" 2020-11-04 |
|
20 |
OpenJDK Runtime Environment (build 11.0.9.1+1-post-Raspbian-1deb10u2) |
|
21 |
OpenJDK Server VM (build 11.0.9.1+1-post-Raspbian-1deb10u2, mixed mode) |
|
22 |
``` |
|
23 |
|
20a0c8
|
24 |
erscheint, ist das JRE vorhanden. Andernfalls kann es mit folgendem Kommando installiert werden: |
b9e3c5
|
25 |
|
U |
26 |
``` |
e4ac75
|
27 |
sudo apt-get update |
U |
28 |
sudo apt-get install default-jdk |
b9e3c5
|
29 |
``` |
U |
30 |
|
05d10e
|
31 |
## Calypso erhalten |
eb27be
|
32 |
|
05d10e
|
33 |
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. |
U |
34 |
|
|
35 |
## Programm herstellen |
|
36 |
|
|
37 |
Zur Herstellung des Programmes werden mit Hilfe der wie zuvor beschrieben geladenen Teile die folgenden Kommandos ausgeführt (Beispiel für Linux): |
|
38 |
|
|
39 |
``` |
|
40 |
cd $CALYPSO |
|
41 |
mkdir classes |
|
42 |
mkdir dist |
|
43 |
|
|
44 |
$JDK/bin/javac -d classes src/de/uhilger/calypso/*.java src/de/uhilger/calypso/handler/*.java |
|
45 |
|
|
46 |
$JDK/bin/jar -cf dist/calypso.jar -C classes . |
|
47 |
rm -r classes |
|
48 |
``` |
|
49 |
|
|
50 |
Das fertig verwendbare Programm liegt anschließend unter `$CALYPSO/dist/calypso.jar`. |
b9e3c5
|
51 |
|
0af362
|
52 |
## Media-Quellen einrichen |
U |
53 |
|
4d64b6
|
54 |
Calypso kann in zwei Betriebsarten gestartet werden: |
0af362
|
55 |
|
29124c
|
56 |
1. NFS-Client |
U |
57 |
1. HTTP-Client |
0af362
|
58 |
|
U |
59 |
### NFS-Client |
|
60 |
|
4d64b6
|
61 |
Mit dem Parameter `nfs-prefix` spielt Calypso Media-Inhalte aus Quellen ab, die über das Network File System (NFS) eingebunden sind. |
0af362
|
62 |
|
U |
63 |
``` |
eb27be
|
64 |
java -jar calypso.jar nfs-prefix="/media/mc" port=9090 |
0af362
|
65 |
``` |
U |
66 |
|
4d64b6
|
67 |
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: |
0af362
|
68 |
|
U |
69 |
``` |
8771ec
|
70 |
http://rpi4-wz:9090/calypso/play?title=/Filme/H/heat.m4v |
0af362
|
71 |
``` |
U |
72 |
|
cd13d9
|
73 |
wird die Datei `/media/mc/Filme/H/heat.m4v` abgespielt. |
U |
74 |
|
|
75 |
#### Betriebsart NFS-Client einrichten |
29124c
|
76 |
|
a337bf
|
77 |
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. |
0af362
|
78 |
|
U |
79 |
``` |
|
80 |
mein-media-server:/media/extssd/mc /media/mc nfs rw 0 0 |
|
81 |
``` |
|
82 |
|
|
83 |
Welche Quellen für einen solchen Eintrag verfügbar sind lässt sich auf dem Raspberry Pi mit folgendem Kommando sehen. |
|
84 |
|
|
85 |
``` |
|
86 |
showmount -e mein-media-server |
|
87 |
``` |
|
88 |
|
20a0c8
|
89 |
Die Maschine `mein-media-server` in den obigen Beispielen muss dafür als NFS-Server eingerichtet sein und Inhalte entsprechend via NFS freigeben. |
29124c
|
90 |
|
U |
91 |
### HTTP-Client |
|
92 |
|
4d64b6
|
93 |
Das folgende Kommando startet Calypso als HTTP-Client. |
dae2e6
|
94 |
|
cd13d9
|
95 |
``` |
eb27be
|
96 |
java -jar calypso.jar port=9090 |
cd13d9
|
97 |
``` |
U |
98 |
|
|
99 |
|
4d64b6
|
100 |
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 |
29124c
|
101 |
|
U |
102 |
``` |
8771ec
|
103 |
http://mein-raspi:9090/calypso/play?title=http://mein-media-server:8080/tango/media/Filme/H/heat.m4v |
29124c
|
104 |
``` |
U |
105 |
|
20a0c8
|
106 |
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. |
fd5fbe
|
107 |
|
U |
108 |
## Steuerbefehle |
|
109 |
|
4d64b6
|
110 |
Die folgenden Service-Endpunkte werden von Calypso bereitgestellt. |
29124c
|
111 |
|
eb27be
|
112 |
/calypso/play + |
U |
113 |
/calypso/seek + |
|
114 |
/calypso/pause + |
|
115 |
/calypso/stop + |
|
116 |
/calypso/ping + |
|
117 |
/calypso/server/stop |
185402
|
118 |
|
U |
119 |
### play |
|
120 |
|
|
121 |
Text |
|
122 |
|
|
123 |
### seek |
|
124 |
|
|
125 |
Text |
|
126 |
|
|
127 |
### pause |
|
128 |
|
|
129 |
Test |
|
130 |
|
|
131 |
### stop |
|
132 |
|
|
133 |
Text |
|
134 |
|
|
135 |
### ping |
|
136 |
|
|
137 |
Text |
|
138 |
|
|
139 |
### server/stop |
|
140 |
|
|
141 |
Text |
0af362
|
142 |
|
4d64b6
|
143 |
## Calypso als Dienst einrichten |
0af362
|
144 |
|
4d64b6
|
145 |
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. |
dae2e6
|
146 |
|
0af362
|
147 |
``` |
4d64b6
|
148 |
cd /home/pi/prg/calypso |
U |
149 |
sudo cp calypso.service /etc/systemd/system/calypso.service |
0af362
|
150 |
``` |
U |
151 |
|
|
152 |
### Dienst starten |
dae2e6
|
153 |
|
U |
154 |
Mit folgendem Kommando kann der Dienst probehalber gestartet werden. |
0af362
|
155 |
|
U |
156 |
``` |
4d64b6
|
157 |
sudo systemctl start calypso.service |
0af362
|
158 |
``` |
U |
159 |
|
|
160 |
### Dienst stoppen |
|
161 |
|
|
162 |
Der laufende Dienst kann mit folgendem Signal via HTTP veranlasst werden, sich zu beenden. |
|
163 |
|
|
164 |
``` |
4d64b6
|
165 |
http://mein-raspi:9090/calypso/server/stop |
0af362
|
166 |
``` |
U |
167 |
|
|
168 |
Ueber systemd kann stattdessen der Prozess wie folgt 'hart' beendet werden. |
|
169 |
|
|
170 |
``` |
4d64b6
|
171 |
sudo systemctl stop calypso.service |
0af362
|
172 |
``` |
U |
173 |
|
|
174 |
### Dienst dauerhaft aktivieren |
|
175 |
|
dae2e6
|
176 |
Der folgende Befehl bewirkt, dass der Dienst nach einem Neustart des Raspberry Pi automatisch startet. |
0af362
|
177 |
|
U |
178 |
``` |
4d64b6
|
179 |
sudo systemctl enable calypso.service |
0af362
|
180 |
``` |
U |
181 |
|
|
182 |
### Dienst deaktivieren |
|
183 |
|
|
184 |
``` |
4d64b6
|
185 |
sudo systemctl disable calypso.service |
0af362
|
186 |
``` |
U |
187 |
|
|
188 |
### Status des Dienstes pruefen |
|
189 |
|
|
190 |
``` |
4d64b6
|
191 |
sudo systemctl status calypso |
0af362
|
192 |
``` |