Datenverarbeitung
Diese Seite beschreibt den Datenfluss, von den Sensoren bis zum finalen Dashboard.
Übersicht
Datentransfer Sensor → TTN
Die Messwerte der einzelnen Counter werden über das LoRa Funkprotokoll an das The Things Network (TTN) übermittelt.
Im Oberlab Account bei TTN ist die Applikation oberlab-counter-sandbox dafür eingerichtet worden. DeviceIDs für insgesamt 15 Geräte (5 jeweils für Schwaz/Geretsried/Miesbach) wurden angelegt. Die Liste ist unter /Projekte/connecting-peaks/Sensor_Code/TTN_EIDs.ods in der OberCloud abgelegt.
Der Payload Formatter setzt die 10 Bytes Daten in folgende felder um:
data.wifi = (input.bytes[1] << 8) + input.bytes[0];
data.ble = (input.bytes[3] << 8) + input.bytes[2];
data.battery = (input.bytes[5] << 8) + input.bytes[4];
data.wifi_new = (input.bytes[7] << 8) + input.bytes[6];
data.ble_new = (input.bytes[9] << 8) + input.bytes[8];
Die fertigen Datenpakjete stehen anschließend am MQTT Server von TTN zur Verfügung und können prinzipiell dort unter dem Topic v3/oberlab-counter-sandbox@ttn/
abgegriffen werden.
Ober-MQTT Server
Der zentrale MQTT Server vom Oberlab spiegelt die Sensordaten jedoch nochmal in's Oberlab, wo sie unter dem Topic connecting_peaks/sandbox/
verfügbar sind.
Ablage in der Datenbank
Die Abfrage vom MQTT Server und die Übermittlung in die Influx Datenbank erfolgt über den Dienst Telegraf. Folgender Teil der telegraf.conf
ist dafür relevant (wobei die Renames nicht vollständig sind - geht aber trotzdem…):
[[inputs.mqtt_consumer]]
## Topics that will be subscribed to.
topics = [
"connecting_peaks/sandbox/#",
]
data_format="json_v2"
## Enable extracting tag values from MQTT topics
## _ denotes an ignored entry in the topic path
[[inputs.mqtt_consumer.topic_parsing]]
topic = "connecting_peaks/sandbox/devices/+/+"
measurement = "_/_/_/_/measurement"
tags = "_/_/_/device/_"
[[inputs.mqtt_consumer.json_v2]]
[[inputs.mqtt_consumer.json_v2.object]]
path = "[@this]"
timestamp_key = "epoch"
timestamp_format = "unix"
[inputs.mqtt_consumer.json_v2.object.renames]
battery = "uplink_message.decoded_payload.battery"
ble = "uplink_message.decoded_payload.ble"
wifi = "uplink_message.decoded_payload.wifi"
Die Daten werden in die InfluxDB Datenbank sandbox abgelegt.
Visualisierung in Grafana
Grafana dient der Anzeige der Daten aus der InfluxDB. Somit können nur Datensätze angezeigt werden, die die gesamte Übertragungskette LoRa→TTN→MQTT→MQTT→Telegraf→InfluxDB durchlaufen sind.
Es können verschiedene Dashboards erstellt werden, um unterschiedliche Darstellungen anzubieten.
Das Hauptdashboard ist unter https://connectingpeaks.oberlab.de/d/FN8cHh8Vz/sandbox?orgId=1&refresh=1m&from=now-24h&to=now öffentlich erreichbar.
Eine Vor-Selektierung der Sensoren kann in die URL eingebunden werden, z.B. für Schwaz: https://connectingpeaks.oberlab.de/d/FN8cHh8Vz/sandbox?orgId=1&refresh=1m&var-Sensors=schwaz-pxc-01&var-Sensors=schwaz-pxc-02&var-Sensors=schwaz-pxc-03&from=now-24h&to=now
Folgende Messgrößen sind in den jeweiligen Graphen ersichtlich:
- WIFI: Anzahl der erfassten WiFi Geräte
- BLE: Anzahl der erfassten Bluetooth Geräte
- WIFI New: Anzahl der erfassten WiFi Geräte, die an diesem Tag noch nicht gezählt wurden
- BLE New: Anzahl der erfassten Bluetooth Geräte, die an diesem Tag noch nicht gezählt wurden
- WIFI new 24h: Gesamt Zahl der WiFi Geräte, die an dem Tag erfasst wurden
- BLE New 24h: Gesamt Zahl der Bluetooth Geräte, die an dem Tag erfasst wurden
- Voltage: Spannung der internen Batterie – Paxcounter läuft im Normalbetrieb solange die Spannung über 3.7V bleibt
Ein Punkt auf dem jeweiligen Graphen entspricht einer übertragenen Messung. Die Kurven der 3 Counter sind farblich unterschiedlich dargestellt.
Projektspezifische Dienste
Die Dienste Telegraf, InfluxDB und Grafana laufen in einer projektspezifischen VM (pconnectingpeaks) auf dem Oberlab-Server. Damit ergibt sich eine logische Abgrenzung zu anderen Oberlab-Projekten.