| chaospott_mumble.py | Ruft die aktuell verbundenen Chaoten per UDP von Mumble Server ab und gibt die Infos als JSON aus. |
| chaospott_mumble.js | Skript für die [Scriptable App](https://scriptable.app) auf iOS, das die Mumble User und den Raumstatus als Widget darstellt. |
Wie man im Mumble Client sieht, geben Mumble Server die Info wie viele User aktuell verbunden sind raus noch bevor der Client sich verbunden hat. Der Abruf dieser Infos erfolg per UDP, indem der Client 12 Bytes hin, und der Server 24 Bytes zurück schickt:
Siehe dazu auch im [Mumble Wiki](https://wiki.mumble.info/wiki/Protocol).
Das ist zwar sehr effizient, für die Web-Welt aber ungeeignet, da browserseitiges Javascript kein UDP verschicken kann. Das Python-Skript ruft die Daten ab und gibt sie als JSON aus.
Bei Fehlern gibt das Skript nichts aus, der Cronjob sorgt dafür, dass die bisherigen Daten nicht überschrieben werden. Anhand <code>last_update</code> kann man sehen wie aktuell die Werte sind.
## Scriptable Script
Das Script benötigt die [Scriptable App](https://scriptable.app) für iOS und stellt dort ein Widget für den Homescreen zur Verfügung, das den Raumstatus und die verbundenen User im Mumble anzeigt.
- die Datei runterladen und in der Files App im Scriptable Ordner speichern. Wenn iCloud Drive benutzt wird, kann dieser Schritt auch am Mac erledigt werden
3. Auf dem Homescreen ein neues Scriptable Widget hinzufügen. Aus iOS Sicht stammt dieses Widget von der Scriptable App. Man muss es daher noch so konfigurieren, dass die App unser Skript benutzt.
4. Long-press auf das Widget und "Edit Widget" auswählen.
5. Nun kann das chaospott_mumble Skript ausgewählt werden.
Das Widget wertet sowohl die [Space-API](https://spaceapi.io) als auch den Mumble Server aus.
Für die beiden Etagen "Aerie" und "Cellar" sind separate Stati vorhanden. Der Zeitpunkt der letzten Änderung des Raumstatus insgesamt wird darunter in relativer Zeitangabe angegeben.
Für den Mumble Server werden die verbundenen User angezeigt und die Uhrzeit des letzten erfolgreichen Abrufs dieses Wertes (nicht der letzten Änderung).
Sollten die Werte aus dem Cache geladen werden müssen, weil sie nicht abgerufen werden konnten, ist die Farbe blass.
Ganz unten steht die Uhrzeit des letzten Skriptdurchlaufs. Unter iOS bestimmt das Betriebssystem wann die Widgets laufen. Das ist üblicherweise nicht häufiger als alle 15 Minuten. Bei Bedarf kann das Skript auch in der App gestartet werden und zeigt dort die aktuellen Werte an.