geöffnete Tür in Neonlicht

Space-Status reloaded

Irgendwann in 2014 haben Mitglieder die Anzeige des aktuellen Öffnungs-Status des Bytespeichers auf einer Webseite und über die Space-API-kompatible JSON-Datenquelle implementiert. Ein bisschen Python hier, ein bisschen Shell da. Wäre doch auch schön, wenn das getwittert wird – also noch ein bisschen Python und Shell. Am Ende standen zwei Python-Skripte auf dem Server, ein Shell-Skript auf dem Server und eines auf dem Router mit SCP-Zugang zum Server. Und noch drei Cronjobs, die das alle triggern.

Mittlerweile haben wir zwei Spaces und das ganze somit doppelt. Lief bisher, war aber nicht (mehr) schön.
Im Zuge einer Servermigration gab’s also eigentlich nur eine Option: erneuern.

Server

Daher habe ich den Server durch eine Flask/Connexion-basierte Applikation ersetzt. Diese erlaubt den Abruf des Status als Space-API kompatible JSON-Datei und kann mitteils REST-API Änderungen am Status oder Sensorwerte entgegennehmen.
Statische und template-basierte Ausgaben, wie JS, Bilder oder einer HTML-Statusseite können ebenfalls damit ausgeliefert werden, so dass man keinen zusätzlichen Webserver benötigt. In unserem Fall ist die Web-App hinter einem HTTPS-Loadbalancer.
In einer einfachen Plugin-Schnittstelle habe ich ein Twitter-Plugin integriert, dass bei jedem Statuswechsel

Quellcode und Dokumentation findet ihr unter:
https://github.com/Bytespeicher/spacestatus-server

Client(s)

Für die Status-Updates nutzen wir je nach Space unterschiedliche Mechanismen:

  • Im Bytespeicher erfolgt die Auswertung des dnsmasq-DHCP-Leasefiles auf einem OpenWRT-basiertem Router (mit einer Blacklist von nicht zu beachtenden Geräten).

  • Im Makerspace gibt es einen ESP8266-basierten Schalter für die Anwesenheit, der seinen Status an einen MQTT-Server sendet. Der aktuelle MQTT-Status wird dann auf dem dortigen OpenWRT-Router neben dem DHCP-Leasefile ausgewertet.

Beide haben auch eine MAC-Adressen-User-Zuordnungsliste und können so im Status anzeigen, wer gerade da ist – natürlich Opt-In, sofern das Mitglied es wünscht.

Zeitgleich gibt es im Bytespeicher noch einen Raspberry Pi, der über One-Wire angeschlossene Sensoren auswertet und so per REST-API den Space-Status um die Temperaturen ergänzt.

Quellcode für die Client-Skripte und Dokumentation gibt es unter:
https://github.com/Bytespeicher/spacestatus-clients

Fehlermeldungen oder Ideen können gern als Issues oder Pull-Requests auf github eingetragen werden.

Bleibt nur zu hoffen, dass der Status in naher Zukunft wieder relevanter wird und wir Euch wieder in einem unserer Spaces begrüßen können.

Marcel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert