Raumstatus
| Raumstatus | |
|---|---|
| Automatische Überprüfung, ob der Raum offen oder geschlossen ist | |
| Status | Läuft |
| OrganisatorIn | Basti |
| InteressentInnen | |
Der Raumstatus bestimmt automatisch, ob der Raum als offen oder geschlossen angezeigt wird. Dieser Indikator soll dazu beitragen, dass niemand vor verschlossener Tür steht.
Inhaltsverzeichnis |
Aktueller Raumstatus
Der Space ist seit heute um 03:55 Uhr geschlossen.
Aufgezeichneter Raumstatus
Hier kann unser Raumstatus der letzten Zeit abgelesen werden. Da die Besucheranzahl über die Anzahl aktiver Geräte ermittelt wird, kann diese lediglich einen Anhaltspunkt darstellen. Für eine maschinenlesbare Version, siehe REST-API.
Dokumentation
Bestimmung des Status
Da die Projektwerkstatt von einer Reihe von Gruppen genutzt wird, musste eine Methode her, die zwischen verschiedenen Personengruppen unterscheiden kann. Meist schalten wir unsere mobilen Geräte relativ schnell nach Eintreffen ein und versorgen sie per Kabel oder WLAN mit Internet. Deshalb lag es nahe, die Geräte an ihren Mac-Adressen zu identifizieren. Wenn also eine als ausreichend definierte Zahl an Geräten von Hickern am OpenWRT-Router hängen, wird der Raumstatus-Indikator auf "offen" gestellt.
Software auf Routerseite
→ Quelltext: Raumstatus/room.sh
Das Shellscript auf dem Router geht die dhcp.leases-Datei zeilenweise durch und gleicht diese mit einer Liste bekannter MAC-Adressen ab. Wenn es sich bei der MAC-Adresse um eine bekannte Adresse handelt und sie per ping erreichbar ist, wird der Personenzähler inkrementiert. Zuletzt wird die Anzahl der anwesenden Personen an die API gesendet (siehe nächsten Abschnitt), solange mindestens eine Person anwesend ist. Der API-Schlüssel, der sowohl Router als auch Server bekannt ist, ist eine Art Shared secret.
OpenWRT und SSL
In OpenWRT sind standardmäßig keinerlei Certificate Authority (CA) public keys (CA certs) eingebunden. Um mit curl dennoch eine anständige Verifikation des Zertifikats hinzubekommen, lädt man sich von seiner CA das Root-Zertifikat herunter (genauer: Class 1 PKI Key und Class 3 PKI Key; bei CAcert.org z.B. hier). Die Zertifikate legt man (inkl. BEGIN/END CERTIFICATE) in einer Datei ab, die man curl mit dem Parameter --cacert übergibt:
curl --cacert class1_class3.crt -d "apikey=$apikey&people=$peopleCount" https://hickerspace.org/api/room/
Software auf Serverseite
→ Quelltext: Raumstatus/room.php
Auf Serverseite wird per POST-Anfrage und passendem API-Schlüssel die Anzahl an anwesenden Personen entgegengenommen. Gespeichert wird außerdem die aktuelle Uhrzeit und die Uhrzeit des letzten Öffnen des Raums (als Unix Timestamp). Ob die Anfrage erfolgreich war, ist in der JSON-Antwort des Servers zu sehen. Die Variable success ist enstprechend gesetzt. Bei Fehlern gibt reason die Fehlerursache an.
Wird an den Server eine GET-Anfrage gestellt, antwortet der Server mit Raumstatus und Zeitpunkt des letzten Öffnens/Schließens. Details dazu finden sich unter Rest-API.
Nutzung
Wer nutzt den Raumstatus?
- unsere REST-API
- Hickerspace-Hauptseite
- Android RaumstatusWidget
- Hickerbot
- SpaceAPI (Sammlung von aktuellen Statusinformationen internationaler Hackerspaces)
Einschränkungen
- werden die mobilen Geräte erst später eingeschaltet, schaltet der Indikator erst dann um
- keine Vorhersage, durch das (nutzungsbedingte) Umschalten gegen 19:30 Uhr bietet die Funktion nur eine eingeschränkte Planungsmöglichkeit
- ohne Internet im Space bleibt der Indikator auf "geschlossen"
