Projekt:SpaceStatus: Unterschied zwischen den Versionen

Aus k4cg.org
Keine Bearbeitungszusammenfassung
 
(16 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Infobox
{{Infobox
| maintainer = [[User:noqqe|noqqe]]
| maintainer = [[User:noqqe|noqqe]]
| machine = [[Host:heimat.intern.k4cg.org|heimat.intern.k4cg.org]]
| machine = [[Host:mqtt.intern.k4cg.org|mqtt.intern.k4cg.org]]
| jahr = 2016
| jahr = 2016
| url = https://github.com/k4cg/openstatus
| url = https://github.com/k4cg/spacestatus
}}
}}


Openstatus ist ein kleines Python Skript, welches Daten aus dem Netzwerk sammelt (arp/nmap). Diese Infos werden von der Rezeptionistin verwendet, um im IRC anzuzeigen, ob und wieviele Menschen gerade im K4CG sind.
== Was tut diese Dokumentation ==


== Methode ==
Dieses Projekt beschreibt die Situation der Daten die wir in der K4CG sammeln.


Im Moment macht die [[Host:heimat.intern.k4cg.org|heimat]] alle 5 Minuten einen ARP Request auf das VLAN 88 und schaut, wie viele Mac Adressen zu sehen sind.
* Wir '''erheben''' Daten mittels '''Sensoren'''
Von den Mac Adressen die gefunden werden, werden Hosts herausgestrichen, die immer da sind. So wie die Heimat, Raspberry PI oder die Philips Hue Bridge.
* Wir '''sammeln''' die erhobenen Daten mittels '''Collector'''
Diese Liste wird direkt im Source gepflegt. Siehe Repo.
* Wir '''werten Daten aus''' mittels der '''Schnittstellen'''


Alle gesammelten Informationen landen in einem Python Dictionary. Die
Alle Stichwörter sind unten genau erklärt um '''neue''' Sensoren und Schnittstellen für Mitglieder zu ermöglichen und zu vereinfachen.
 
= Topologie =
 
[[Datei:Spacestatus.png]]
 
= Sensoren =
 
Eine Liste aller Sensoren die wir in der CG haben und betreiben.
 
== Sensor door-status ==
 
Im Projekt [[Projekt:door-status|door-status]] wurde ein Sensor am Türschloss angebracht der es uns erlaubt abzufragen, ob gerade abgesperrt oder offen ist.
Details bitte hieraus entnehmen.
 
== Sensor The famous "Tennisschläger" ==
 
Die ehemaligen Sensoren von [https://organic-entropy.org organic-entropy.org] wurde ans Kreuz^Wdie Wand genagelt und ist mit [[Host:tennis.intern.k4cg.org]] verbunden
 
Die Sensoren liefern Daten über folgendes:
 
* Temperatur (schon wieder...)
* Licht Intensität (i.e. Helligkeit)
* Geräusch Pegel (KEIN Aufnahmegerät)
* Accelerometer (pretty much useless, weil an die Wand gehängt)
 
Sensordaten gelangen über brickd2mqtt proxy in MQTT siehe für mehr details [[Host:tennis.intern.k4cg.org]]
 
== Sensor WLAN AP ==
 
Dieser Sensor liefert die Daten wie viele WLAN Geräte gerade in der CG sind.
 
Momentan wird das Admin Webinterface via Python requests.POST eingeloggt und aus der status.cgi das JSON Dokument abgeholt und daraus das online-count Feld ausgelesen.
Dieses wird dann in MQTT published.
 
Auf [[Projekt:wifi2mqtt]] steht beschrieben wie genau das funktioniert.
 
= Collector =
 
Auf [[Host:mqtt.intern.k4cg.org]] läuft ein Daemon der allen Sensor Topics in MQTT Subscribed ist uns Daten dort ausließt und dann in status.json persistiert.
status.json wird von einem lokalen Apache ausgeliefert und unter http://k4cgrouter.duckdns.org:59468/status.json veröffentlicht.
 
Details siehe Repo https://github.com/k4cg/spacestatus


== JSON Document ==
== JSON Document ==
Zeile 21: Zeile 63:


<pre>
<pre>
{"hosts":
{
        {
    "date": "2018-03-21T10:35:49.759406",
        "10.88.88.53": "e3:34:56:7c:ee:89",
    "door": "closed",
        "10.88.88.218": "e3:34:56:7c:ee:89",
    "humidity": "31.26",
        "10.88.88.99": "e3:34:56:7c:ee:89"
    "light": 0,
        [...]
    "noise": 1976,
        }
    "online": 0.0,
  "online": 10
    "sound": 1955,
    "temperature": 13.37
}
}
</pre>
</pre>


== Schnittstelle zum IRC ==
= Schnittstellen =  


Damit die Rezeptionistin diese Informationen abholen kann, läuft auf Heimat auch ein kleiner Webserver (OpenHTTPD), der das JSON File ausliefert.
== Schnittstelle IRC ==
Gesichert ist der Zugriff mit IP Limitierung und htaccess.


Das Plugin in Rezeptionistin verbindet sich also auf dem Webserver der Heimat, holt das json File ab und gibt die Informationen im IRC Channel wieder.
Das Plugin in Rezeptionistin verbindet sich also auf dem Webserver [[Host:mqtt.intern.k4cg.org]] das json File ab und gibt die Informationen im IRC Channel wieder.


== Schnittstelle zu graphs.k4cg.org ==
== Schnittstelle graphs.k4cg.org ==


Damit wir auch ein bisschen Zucker auf die Augen bekommen wird das oben genannte JSON File auch von https://github.com/k4cg/sensor-fetcher/ genutzt um die Daten
Damit wir auch ein bisschen Zucker auf die Augen bekommen wird das oben genannte JSON File auch von https://github.com/k4cg/sensor-fetcher/ genutzt um die Daten
Zeile 46: Zeile 88:
Siehe auch [[Projekt:graphs.k4cg.org]]
Siehe auch [[Projekt:graphs.k4cg.org]]


== cron ==
== Schnittstelle Wiki ==
*/5     *      *      *      *      /usr/local/bin/python2.7 /usr/local/bin/openstatus/openstatus.py
 
Das Wiki holt sich den door-status (linker roter/grüner Kasten) ebenfalls aus diesem JSON File ab und stellt dann dem Besucher der Webseite dar ob die CG im Moment offen oder geschlossen ist.
 
 
= Misc =
 
== ICH WILL LIVEDATEN ==
 
Ich auch. In der Realtiät stellt sich aber heraus das das instabile Internet und die nicht statische v4 IP, die unfähigkeit von Libraries von mediawiki, BRICKD und die Unfähigkeit von Hardware Herstellern wie Philips Hue es nicht auf die Reihe bekommen eine IPv6 Anbindung sicherzustellen.
 
All diese Probleme haben seit Mitte 2016 immer wieder für Frust und Ausfälle gesorgt, wesegen wir jetzt ein einheitliches Format des Datenaustauschs mithilfe des HTTP+JSON auf der Heimat geschaffen haben.
 
All das führt natürlich dazu das die Daten nichtmehr komplett Live sind sondern mit 5 Minuten delay in [[Projekt:graphs.k4cg.org]] und im IRC auftauchen

Aktuelle Version vom 21. März 2018, 12:04 Uhr

Projekt:SpaceStatus
Betreuer*In noqqe
Jahr 2016
Läuft auf mqtt.intern.k4cg.org
URL https://github.com/k4cg/spacestatus

Was tut diese Dokumentation

Dieses Projekt beschreibt die Situation der Daten die wir in der K4CG sammeln.

  • Wir erheben Daten mittels Sensoren
  • Wir sammeln die erhobenen Daten mittels Collector
  • Wir werten Daten aus mittels der Schnittstellen

Alle Stichwörter sind unten genau erklärt um neue Sensoren und Schnittstellen für Mitglieder zu ermöglichen und zu vereinfachen.

Topologie

Spacestatus.png

Sensoren

Eine Liste aller Sensoren die wir in der CG haben und betreiben.

Sensor door-status

Im Projekt door-status wurde ein Sensor am Türschloss angebracht der es uns erlaubt abzufragen, ob gerade abgesperrt oder offen ist. Details bitte hieraus entnehmen.

Sensor The famous "Tennisschläger"

Die ehemaligen Sensoren von organic-entropy.org wurde ans Kreuz^Wdie Wand genagelt und ist mit Host:tennis.intern.k4cg.org verbunden

Die Sensoren liefern Daten über folgendes:

  • Temperatur (schon wieder...)
  • Licht Intensität (i.e. Helligkeit)
  • Geräusch Pegel (KEIN Aufnahmegerät)
  • Accelerometer (pretty much useless, weil an die Wand gehängt)

Sensordaten gelangen über brickd2mqtt proxy in MQTT siehe für mehr details Host:tennis.intern.k4cg.org

Sensor WLAN AP

Dieser Sensor liefert die Daten wie viele WLAN Geräte gerade in der CG sind.

Momentan wird das Admin Webinterface via Python requests.POST eingeloggt und aus der status.cgi das JSON Dokument abgeholt und daraus das online-count Feld ausgelesen. Dieses wird dann in MQTT published.

Auf Projekt:wifi2mqtt steht beschrieben wie genau das funktioniert.

Collector

Auf Host:mqtt.intern.k4cg.org läuft ein Daemon der allen Sensor Topics in MQTT Subscribed ist uns Daten dort ausließt und dann in status.json persistiert. status.json wird von einem lokalen Apache ausgeliefert und unter http://k4cgrouter.duckdns.org:59468/status.json veröffentlicht.

Details siehe Repo https://github.com/k4cg/spacestatus

JSON Document

Zum Beispiel

{
    "date": "2018-03-21T10:35:49.759406",
    "door": "closed",
    "humidity": "31.26",
    "light": 0,
    "noise": 1976,
    "online": 0.0,
    "sound": 1955,
    "temperature": 13.37
}

Schnittstellen

Schnittstelle IRC

Das Plugin in Rezeptionistin verbindet sich also auf dem Webserver Host:mqtt.intern.k4cg.org das json File ab und gibt die Informationen im IRC Channel wieder.

Schnittstelle graphs.k4cg.org

Damit wir auch ein bisschen Zucker auf die Augen bekommen wird das oben genannte JSON File auch von https://github.com/k4cg/sensor-fetcher/ genutzt um die Daten in eine schönen Grafana Graphen zu laden.

Siehe auch Projekt:graphs.k4cg.org

Schnittstelle Wiki

Das Wiki holt sich den door-status (linker roter/grüner Kasten) ebenfalls aus diesem JSON File ab und stellt dann dem Besucher der Webseite dar ob die CG im Moment offen oder geschlossen ist.


Misc

ICH WILL LIVEDATEN

Ich auch. In der Realtiät stellt sich aber heraus das das instabile Internet und die nicht statische v4 IP, die unfähigkeit von Libraries von mediawiki, BRICKD und die Unfähigkeit von Hardware Herstellern wie Philips Hue es nicht auf die Reihe bekommen eine IPv6 Anbindung sicherzustellen.

All diese Probleme haben seit Mitte 2016 immer wieder für Frust und Ausfälle gesorgt, wesegen wir jetzt ein einheitliches Format des Datenaustauschs mithilfe des HTTP+JSON auf der Heimat geschaffen haben.

All das führt natürlich dazu das die Daten nichtmehr komplett Live sind sondern mit 5 Minuten delay in Projekt:graphs.k4cg.org und im IRC auftauchen