Über openSenseMap

openSenseMap ist eine offene Web-Plattform für den Austausch von Sensordaten, die jeder nutzen kann. Dieses Tutorial beschreibt, wie man aktuelle Messwerte von Querx an diese Plattform übermitteln kann. Unabhängig von der ausgewählten Cloud zeigt das Tutorial, wie man Querx an neue Cloud-Dienste anpassen kann.

openSenseMap

 

openSenseMap

Registrierung bei openSenseMap

 

Zunächst muss das Gerät bei openSenseMap registriert werden. Dazu ist eine gültige E-Mailadresse erforderlich.

openSenseMap

Während die Eingangsseite zur Registrierung noch in Deutsch erscheint, geht es danach in Englisch weiter. Diese sollte aber kein Problem darstellen. Durch Aktivieren der Bestätigung "I agree" stimmt man zu, dass der angegebene Standort des Geräts veröffentlicht wird. Die eingegebene E-Mailadresse wird nur genutzt, um über Aktualisierungen zu informieren und wird nicht an Dritte weitergegeben.

openSenseMap

Anschließend vergibt man einen Namen für das Gerät, z.B. "Querx" und gibt an, ob sich die Sensoren im Innenraum (indoor) oder im Freien (outdoor) befinden, oder ob diese mobil sind.

openSenseMap

Im nächsten Schritt wird der Standort des Geräts bestimmt. Dies funktioniert intuitiv mit Hilfe einer Straßenkarte.

openSenseMap

Zuletzt wird noch die verwendete Hardware abgefragt. Da Querx nicht direkt unterstützt wird, wählt man hier die manuelle Konfiguration. Durch Klicken auf "Add sensor" kann ein Sensor eingerichtet werden.

openSenseMap

Auf der letzten Seite erhält man nochmal eine Zusammenfassung und bestätigt, dass die vom Sensor gesendeten Daten von jedermann frei genutzt werden dürfen.

Man erhält in den nächsten Minuten eine E-Mail-Bestätigung, in der als Anhang ein Quellcode für Arduino-basierte Geräte zu finden ist. Diesem entnimmt man zwei Identifikatoren, einen für das Gerät (SENSEBOX_ID ) und einen für den Sensor (SENSOR1_ID). Diese werden bei der Konfiguration des Querx benötigt.

//senseBox ID
#define SENSEBOX_ID "000000000000000000000000000"
//Sensor IDs
// Temperatur
#define SENSOR1_ID "000000000000000000000000000"

 

Konfiguration des Querx

 

Seit der Firmwareversion 4.2 ist es möglich, das Format für den Datenexport über eigene Template-Dateien anzupassen. Dadurch ist man nicht mehr darauf angewiesen, dass die Firmware eine bestimmte Cloud direkt unterstützt, sondern kann Querx flexibel an die Anforderungen der Cloud anpassen.

openSenseMap erwartet einen JSON-String in folgender Form:

{"value": Messwert}

Dieser wird dann per POST an die folgende URL geschickt, wobei ID1 und ID2 die beiden Identifikatoren sind, die wir bei der Registrierung erhalten haben:

ingress.opensensemap.org/boxes/ID1/ID2

Nun benötigt Querx noch eine einfache Textdatei, ein sogenanntes Template, mit folgendem Inhalt:

add=/tpl/j/osem.tpl

Content-Type: application/json
{# #}
{"value": {{sensortab_value.0}}}

Wir erstellen diese Datei unter dem Namen osem.tpl mit einem Texteditor (Notepad, vi etc.) auf dem PC. Die erste Zeile bestimmt, unter welchem Pfadnamen die Datei im Speicher des Querx abgelegt wird. Danach muss eine Leerzeile folgen. Die nächsten Zeilen bestimmen den Inhalt der Daten, die an die Cloud geschickt werden und gestatten es, zusätzliche Kopfzeilen zu dem HTTP-POST hinzuzufügen. Hier verwenden wir nur eine Kopfzeile (Content-Type) zur Bestimmung des Datentyps JSON.

Kopfzeilen werden bei HTTP durch eine Leerzeile vom Inhalt getrennt. Im Querx wird die Datei später vom Template-Interpreter umgesetzt, der aber einfache Leerzeilen entfernt. Mit einer Kommentarzeile gelingt aber die Erzeugung einer Leerzeile. Der Kommentar {# #} wird vom Interpreter später entfernt, die Zeile selbst bleibt aber erhalten. Die letzte Zeile enthält dann den von openSenseMap erwarteten JSON-String, wobei der Template-Interpreter im Querx den Teil {{sensortab_value.0}} durch den aktuellen Messwert des ersten Sensors ersetzt.

Querx

Wenn die Datei auf dem PC gespeichert wurde, kann Sie über das Webinterface von Querx unter Konfiguration / Wartung / Firmware / Content installieren auf dem Gerät installiert werden.

Querx

Nun kann Querx so eingestellt werden, dass der Sensorwert in regelmäßigen Abständen an openSenseMap gesendet wird. Dies geschieht auf der Konfigurationsseite Schnittstellen / HTTP Push. Eigentlich werden die beiden Variablenfelder nicht benötigt, da man die beiden Identifikatoren direkt in der URL angeben kann. Leider überschreitet die Länge der URL dabei das Limit des Eingabefeldes von 63 Zeichen. Dies Problem wird dadurch gelöst, dass wir in der URL die Platzhalter (Variablen) $1 und $2 verwenden und die langen Identifikatoren als Variableninhalte eingeben.

Querx

Mit der Schaltfläche Test kann eine erste Übertragung manuell ausgelöst werden. Unter Schnittstellen / Syslog kann das Ergebnis überprüft werden.


 

Ergebnis

Wenn alles wie vorgesehen funktioniert, können wir die Daten von openSenseMap unter der URL

https://opensensemap.org/explore/ID1

abrufen, wobei ID1 wieder durch den Identifikator des Gerätes zu ersetzen ist.

openSenseMap

Damit wurde erfolgreich demonstriert, wie sich Querx in neue Cloud-Umgebungen integrieren lässt, ohne dass diese direkt vom Gerät unterstützt werden.

Dabei treten aber auch Probleme auf. Die lange URL konnte über den Umweg mit den Platzhaltern implementiert werden. Keine Lösung gibt es bisher für die Übermittlung von Messwerten mehrerer Sensoren innerhalb eines Geräts. openSenseMap fordert für jeden Sensor eine eigene URL, während sich im Querx nur eine URL konfigurieren lässt. Möglicherweise bietet hier die Anbindung von openSenseMap an MQTT oder TheThingsNetwork eine Lösung. Andererseits ist mittelfristig geplant, Querx für HTTP Push um mehrere URLs zu erweitern.