Internet of Everything: Thingsboard - Datentransfer und Visualisierungen

generated with Adobe Firefly

Wohin mit meinen Daten?

In verschiedenen Tutorials wie "Schulklima: Daten in der ThingSpeak-Cloud" , "Internet of Everything: Octopus trifft IFTT, MQTT und Alexa" oder "MitmachKlima: LoRaWAN"  haben wir bereits gelernt, dass unsere Octopus- oder Makey-Platine verschiedenste Daten mittels onboard- oder externen Sensoren erfassen und transportieren kann. Es wurden verschiedene Methoden zur Datenübetragung gezeigt und auch schon visualisiert. Was aber, wenn wir nun viele Daten von verschiedenen Sensoren bekommen, die alle überwacht, analysiert und visualisiert werden sollen? Wenn vielleicht noch weitere Sensoren dazu kommen sollen, oder weitere Nutzende? Oder wenn Daten anschließend noch weitergeleitet und -verarbeitet werden sollen?

Wie finden wir uns in dem Daten-Dschungel zurecht, welche Optionen gibt es, wie funktionieren sie und wieso es wichtig ist, Daten zu strukturieren und analysieren.

Thingsboard

Thingsboard ist eine Open-Source-IoT-Plattform, die für fortgeschrittene Visualisierung, Alarmierungen und Automatisierungen entwickelt wurde.


Vorteile

  • Umfangreiche Dashboards: Thingsboard erlaubt interaktive Visualisierungen, bietet flexible Widgets
  • Regel Engines: Automatische Aktionen, wie Benachrichtigungen oder Geräte-Steuerung sind direkt in der Plattform integrierbar
  • Skalierbarkeit: Thingsboard unterstützt große Datenmengen und Geräte-Flotten druch MQTT, HTTP und auch OTA-Updates
  • Multi-Tenancy: Für größere Projekte oder Anwendungen können mehrere Benutzer und Rollen angelegt und verwaltet werden
  • Flexible Integration: Daten können vom Sensor direkt oder indirekt (bspw. erst an TheThingsNetwork und von dort aus) an Thingsboard gesendet werden und von Thingsboard aus an weitere Systeme weitergeleitet werden.

 

Voraussetzungen

Hardware

  • Octopus- oder Makey-Platine (ESP32-basiert)
  • WLAN-Netzwerk (hier testweise mobiler Hotspot eines mobilen Endgerätes)

Software

  • Arduino IDE  mit Ardublock-Plugin (siehe Schnellstart)
  • Thingsboard Cloud Account (kostenlos 30-Tage verfügbar oder kostenlose Community Edition selbst installieren - für dieses Tutorial sind beide Editionen geeignet)

 

Schritt 1: Thingsboard Cloud einrichten

Account erstellen: Besuche Thingsboard und registriere einen kostenlosen Account in der EU-Cloud oder installiere die Community-Edition
Thingsboard-Startbildschirm
Gehe zu "Entities" -> "Devices" und lege dann über das "+"-Symbol ein neues Gerät an ("Add new Device")
Gebe dem Gerät einen beliebigen (aber sinnvollen) Namen und schalte aktiviere "ist ein Gateway". Dann weiter zu den Zugangsdaten ("Credentials")
Kopiere den Zugangstoken und bestätige mit "Add". Das Gerät wird anschließend in der Liste aufgeführt mit dem State "inacitve". Den Zugangstoken findest du später auch jederzeit mit einem Klick auf die Geräte-Zeile - "Copy access token"
Unter "Dashboards" legen wir ein neues Dashoboard an. Hier wollen wir unsere Daten später visualisieren.

Schritt 2: Ardublock-Programm

  • In Ardublock greifen wir uns unter IoT: Wifi unseren WLAN-Block und geben die Zugangsdaten unseres WLANs / mobilen Hotspots ein.
  • Unter IoT:HTTP greifen wir uns den Thingsboard, send data-Block
    • Unter Server geben wir https://eu.thingsboard.cloud ein (falls ihr Thingsboard Community oder Professional-Edition installiert habt und selbst hostet, verwendet entsprechend eure URL und ggf. den richtigen Port)
    • Access Token ist der Token eures Gerätes, welches ihr in Schritt 1 angelegt habt
    • Nun folgen drei mögliche Datenfelder, verwendet sinnvolle Namen. Dazu gehört jeweils Data, also welche Sensordaten ihr gerne zuweisen wollt. Hier der BME280 (onboard beim Octopus). Temperatur und Luftfeuchte sollen übertragen werden, der dritte mögliche Datensatz bleibt hier erst einmal leer
  • Abschließend bauen von den Kontrollstrukturen einen Delay ein, damit unser Octopus nicht permanent Daten erzeugt, sondern energiesparend erst einmal alle 20 Sekunden die geforderten Daten überträgt (im späteren Realfall wollen wir natürlich noch weitaus energiesparender arbeiten mit Abtastraten von bspw 10-15 Minuten)

Schritt 3: Verbinden und Überprüfen!

Die Daten sollten in Thingsboard unter dem Gerät, dessen Access Token wir verwendet haben, nun sichtbar sein. Der Geräte-Status schaltet auf Active um.
Wir klicken auf die Gerätezeile und schauen uns die Daten an unter "Latest telemetry". Der im Ardublock übertragene Name sowie die dazugehörigen Data-Einträge sollten hier nun zu sehen sein

Schritt 4: Visualisierung

Wir gehen nun zu "Dashboards" und wählen unser zuvor angelegtes Dashboard aus. Hier legen wir nun ein neues Widget an. Bspw. aus der Kategorie "analog Gauges" (analoge Messgeräte).
Wir wählen das Gerät, von welchem die Messdaten bezogen werden sollen und welche Datensätze und dazugehörigen Einheiten angezeigt werden sollen.
Wir können auch Linien-Diagramme verwenden, um den Verlauf der Messdaten besser zu visualisieren
Wir visualisieren beide Daten (Temperatur & Luftfeuchte) in einem LineChart, geben unterschiedliche Farben und die jeweilige Einheit an
Zum Verlauf wird auch der Mittelwert berechnet (Avg - Average). Testweise habe ich hier den Sensor angehaucht, um zu überprüfen, dass sich die Daten in Echtzeit ändern und der Verlauf besser erkennbar ist
Du kannst nach eigenem Belieben nun verschiedenste Widgets austesten und verschieben, viel Spaß beim nachbauen! (Vergiss nicht, oben rechts zu speichern)

Schritt 5 (optional): Erweiterung TTN

Voraussetzung

Wir überlegen uns einen Anwendungsfall, beispielsweise die Pegelmessung. Dort werden unsere Sensoren mit Batterien oder Solarpanels versorgt und die Datenübertragung wird durch die Entfernung zu verfügbaren WLAN-Netzwerken über LoRaWAN umgesetzt. Dort nutzen wir LoRaWAN, um die Daten vom Sensor zum TheThingsNetwork (TTN) zu senden. Dort sollen später all unsere Messdaten aller Messstationen zusammenlaufen. Im Beispiel MitmachKlima: LoRaWAN haben wir bereits veranschaulicht, wie wir unsere Platine mit TTN verbinden und das LoRaWAN-Netz nutzen mit unserem OTAA-Blöckchen

In TTN sehen wir unsere Daten ankommen, aber die Visualisierung und Weiterverarbeitung ist recht begrenzt. Zu diesen Zwecken verwenden wir anschließend Webhooks oder MQTT, um unsere Daten an Plattformen wie Thingsboard, Datacake, TargoIO oder sonstige Plattformen weiterzuleiten und dort zu visualisieren. Einmal im TTN angekommen, können die Daten vom TTN-Server an beliebige Adressen weitergeleitet werden, die über eine HTTP API oder einen MQTT-Client verfügen.

 

 

Webhook Thingsboard

Wie im Beispiel oben, wollen wir unsere Daten im Thingsboard visualisieren. Der Unterschied: statt über eine WLAN-Verbindung die Daten direkt vom Ocotopus zum Thingsboard zu senden, senden wir unsere Daten vom Octopus mit dem Feather-Shield per LoRaWAN an TTN, um uns den mobilen Hotspot zu ersparen. Von dort aus nutzen wir die Internetverbindung des TTN-Servers, um die Daten per Webhook an unser Thingsboard zu senden.

Wie zuvor auch legen wir im Thingsboard ein neues Device an und kopieren uns den AccessToken
Dieses mal benötigen wir die URL, über die wir unser Gerät erreichen für den Webhook in TTN. (http://eu.thingsboard.cloud/api/v1/<ACCESS_TOKEN>/telemetry)
In TTN legen wir einen neuen Webhook an - Custom Webhook. Als Base URL geben wir die zuvor kopierte URL und unseren Access Token des zuvor angelegten Thingsboard-Devices an. AUßerdem ergänzen wir einen "header-entry". Wir aktivieren zusätzlich "Uplinke Message" und speichern den Webhook
Nun können wir Daten senden! In Thingsboard kommen die Daten erst einmal "unsortiert" an. Hierzu brauchen wir im nächsten Schritt eine neue Regelkette
Unter Regelketten können wir unsere Root Rule Chain anpassen oder eine neue anlegen (und später als Wurzel verwenden). Diese kann wie folgt aussehen. Achtung: Skript-Inhalt nächstes Bild & LoRa-Filter wird hier nicht benötigt
Das Skript filtert aus den Daten, die von TTN ankommen alles heraus, was unter "decoded_payload" übertragen wird

Weitere Plattformen

Wer Spaß an der Datenvisualisierung hat kann recht simpel auch andere Plattformen neben Thingsboard verwenden. Viele IoT-Plattformen bieten kostenlose Zeiträume an, die ihr zum Austesten der Plattformen nutzen könnt. Für kleinere Projekte gibt es bei einigen Plattformen auch kostenlose Angebote mit begrenzter Anzahl Geräte, die verbunden werden können.

Datacake Achtung: simulierte und unrealistische Daten zu Testzwecken verwendet 5 Devices kostenfrei, unbegrenzte Dauer
AllThingsTalkMaker Achtung: simulierte und unrealistische Daten zu Testzwecken verwendet Ein Dashboard kostenfrei
TagoIO Achtung: simulierte und unrealistische Daten zu Testzwecken verwendet 5 Devices, 5 Dashboards kostenfrei
ThingSpeak Achtung: simulierte und unrealistische Daten zu Testzwecken verwendet kostenfrei, begrenzte Visualisierung
back-to-top nach oben