chaospott_mumble/README.md
2021-02-14 18:57:11 +01:00

3.8 KiB

chaospott_mumble

Script Beschreibung
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 auf iOS, das die Mumble User und den Raumstatus als Widget darstellt.

Mumble Daten

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:

Ping 12 bytes

00 00 00 00 <---------------------------- 4 bytes zero: request type = ping
            fc 60 86 45 3d 47 e5 5f <---- 8 bytes ident: used to identify the reponse


Pong 24 bytes

00 01 02 11 <---------------------------------------------------------------- 4 bytes: server version (1.2.17)
            fc 60 86 45 3d 47 e5 5f <---------------------------------------- 8 bytes: ident, used to identify the reponse
                                    00 00 00 02 <---------------------------- 4 bytes: Currently connected users count (2)
                                                00 00 00 64 <---------------- 4 bytes: maximum users (100)
                                                            00 01 19 40 <---- 4 bytes: allowed bandwidth (72.000 bit/s)

Siehe dazu auch im Mumble Wiki.

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.

{"max_users": 100, "last_update": 1613317741, "bandwidth": 72000, "server_version": "1.2.7", "connected_users": 2}

Das kann man dann als Cronjob laufen lassen und in eine Datei ausgeben lassen.

*/1 * * * * status=`/home/apoc/bin/chaospott_mumble.py` && [ "$status" ] && echo $status > /var/www/virtual/apoc/html/chaospott_mumble.json

Bei Fehlern gibt das Skript nichts aus, der Cronjob sorgt dafür, dass die bisherigen Daten nicht überschrieben werden. Anhand last_update kann man sehen wie aktuell die Werte sind.

Scriptable Script

Das Script benötigt die 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.

Installation

  1. Die Scriptable App installieren
  2. Das Skript in die App bekommen, entweder
    • ein neues Skript in der App anlegen und den Code reinpasten, oder
    • 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 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.