Thingsboard als IoT-Dashboard

Zielsetzung

In diesem Projekt übertragen wir Umweltdaten (z. B. Temperatur, Luftfeuchte) in die Cloud-Plattform Thingsboard. So können wir die Daten jederzeit und weltweit im Web-Browser anschauen. Ähnlich wie Thingspeak ist Thingsboard eine weitere Cloud-Plattform mit professionellen Einsatzmöglichkeiten. Hier nehmen wir die öffentlich zugängliche www.thingsboard.cloud als Beispiel. Bei Bedarf kann die Plattform in der Community-Edition aber auch auf einem eigenen Server lokal installiert und betrieben werden (Github).

So kann die Community-Edition aussehen: Ein Beispiel unserer Thingsboard-Instanz am Umwelt-Campus findest du hier.

Weitere Ziele:

  • Dasboard Konzept kennenlernen. Ein Dashboard ist eine übersichtliche Benutzeroberfläche (quasi ein Cockpit), auf der wichtige Informationen visuell dargestellt werden – z. B. in Form von Diagrammen, Karten, Tabellen, Anzeigen, Widgets usw.
  • Übertragung von Daten über Internet (WLAN) per HTTP-Blöckchen.
  • Visualisierung von LoRa-Daten durch Webhook-Kopplung Thingsboard und TTN. 
  • Regelketten zur Verarbeitung der Daten kennenlernen.
Problemstellung

Wohin mit meinen Daten?

In verschiedenen Tutorials wie "Schulklima: Daten in der ThingSpeak-Cloud" , "Internet of Everything: Octopus trifft IFTTT, MQTT und Alexa" oder "MitmachKlima: LoRaWAN"  haben wir bereits gelernt, dass unsere Octopus-Platine verschiedenste Daten mittels onboard- oder externen Sensoren erfassen und transportieren kann. Es wurden verschiedene Methoden zur Datenübertragung 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.

Was ist 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 durch 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.

Thingsboard Cloud einrichten

1. Account erstellen: Besuche thingsboard.cloud und registriere einen kostenlosen Account in der EU-Cloud oder installiere dir die Community-Edition auf deinem Rechner.
Thingsboard-Startbildschirm
2. Ein neues Gerät hinzufügen: "Entities" -> "Devices" -> "+"-Symbol
Gebe dem Gerät einen beliebigen (aber sinnvollen) Namen. 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 "inactive". Den Zugangstoken findest du später auch jederzeit mit einem Klick auf die Geräte-Zeile - "Copy access token"

Das 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://thingsboard.umwelt-campus.de 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. (Zugriff auf unsere Instanz gibt es auf Anfrage!)
    • Nun folgen drei mögliche Datenfelder, verwendet sinnvolle Namen. Dazu gehört jeweils Data, also welche Sensordaten ihr gerne zuweisen wollt. Hier der BME680 (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)

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 "Neueste Telemetrie". Der im Ardublock übertragene Name sowie die dazugehörigen Data-Einträge sollten hier nun zu sehen sein!

Visualisierung

Wir gehen nun zu "Dashboards" und legen dort über das "+" ein neues Dashboard an. 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)

Erweiterung mit LoRaWAN und TTN

Voraussetzung

In vielen Fällen können wir die Daten mangels erreichbarem Internetzugang nicht per WLAN und HTTP-Protokoll in die Cloud übertragen. Insbesondere bei Outdoor-Anwendungen wie unserer Pegelmessung benötigen wir alternative Kommunikationsmöglichkeiten. In diesem Anwendungsfall werden unsere Sensoren mit Batterien oder Solarpanels versorgt und die Datenübertragung über LoRaWAN umgesetzt. Dabei nutzen wir die Infrastruktur von TheThingsNetwork (TTN) um die Messdaten aller Messstationen zu sammeln. Im Beispiel MitmachKlima: LoRaWAN haben wir veranschaulicht, wie wir unsere Platine mit TTN verbinden und unser OTAA-Blöckchen zur Kommunikation nutzen.

In TTN sehen wir unsere Daten in Echtzeit, aber die Visualisierung und Weiterverarbeitung ist recht begrenzt. Zu diesen Zwecken verwenden wir Webhooks oder MQTT zur Weiterleitung an andere Plattformen (wie Thingsboard, Datacake, TargoIO). Der TTN-Server kann unsere Daten damit an Plattformen weiterleiten, die über eine HTTP API oder einen MQTT-Client verfügen.

Webhook Thingsboard

Im folgenden verwenden wir einen Webhook zur Verknüpfung von TTN und Thingsboard. Ein Webhook ist eine automatische Benachrichtigung, die ein System an ein anderes System sendet, sobald ein bestimmtes Ereignis (hier neue Daten über LoRaWAN eingetroffen) eingetroffen ist. Dieses Ereignis verarbeiten wir im Thingsboard mit Hilfe einer Regelkette. Eine Regelkette ist wie ein Flowchart, das automatisch entscheidet:

    „Wenn dieses Ereignis passiert, mach das. Und danach mach jenes …“

Man baut also Regeln aus einzelnen Blöcken (Nodes), die miteinander verbunden werden. Bei uns wertet die Regelkette die per Webhook übermittelten Informationen aus.

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 anschließend 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 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. Hier einige Beispiele mit simulierten Daten:

Datacake https://datacake.co/ Hier sind fünf Devices kostenfrei, unbegrenzte Dauer
AllThingsTalkMaker https://www.allthingstalk.com/maker Ein Dashboard kostenfrei
TagoIO https://tago.io/ Hier sind fünf Devices und fünf Dashboards kostenfrei
ThingSpeak https://thingspeak.mathworks.com/ kostenfrei, begrenzte Visualisierung
back-to-top nach oben