Hochwasserpegel - LoRaWAN und Datenvisualisierung

LoRa-Kommunikation

KI-generiert mit pipio.ai und ChatGPT

Bitte beachten Sie: Sobald Sie sich das Video ansehen, werden Informationen darüber an Youtube/Google übermittelt. Weitere Informationen dazu finden Sie unter Google Privacy.

TheThingsNetwork-Konfiguration

TTN-Anwendung und Gerät anlegen

Unsere Platine soll im nächsten Schritt per LoRaWAN unsere Messdaten an das nächstmögliche LoRa-Gateway senden, da wir kein WLAN am Bach zur Verfügung haben. Über diesen Weg können die Daten in "TheThingsNetwork" (TTN) empfangen, verarbeitet und an eine Vielzahl von Plattformen weitergeleitet werden, wo sie wiederrum weiterverarbeitet werden könnten.

Um das OTAA-Blöckchen im nächsten Schritt überhaupt nutzen zu können, müssen wir in TheThingsNetwork einen kostenfreien Account, eine neue Applikation und ein Gerät anlegen.

Die Applikation lässt sich ohne weitere Umwege mit einem beliebigen Namen anlegen. 

Deim Anlegen des Gerätes beachten wir folgende Einstellungen:

  • Frequency plan: Europe 863-870 MHz (recommended)
  • LoRaWAN Specification: 1.0.3
  • JoinEUI: mit Nullen auffüllen

Die Device address und sonstige Keys können generiert und kopiert werden, wir brauchen diese Daten im Pegel-Programm

 

Payload-Formatter

In den Geräteeinstellungen können wir unter "Payload-Formatters" ein eigenes Java-Script einbinden. Die folgende Uplink-Vorlage kann auf eigene Bedürfnisse angepasst werden. Letztendlich definiert sie, was wir mit den gesendeten Rohdaten (Bytes) machen wollen - wie sie decodiert werden. In unserem Fall wollen wir die empfangene Rohdaten in Variablen speichern, ggf. Umrechnen und auch an weitere Plattformen weiterleiten können. Du kannst den Payload-Formatter auch in deiner Application festlegen - dann gilt die Formatierung für alle Geräte, die du innerhalb der Application anlegst.

function Decoder(bytes, port) {
 // 24-bit signed -> 32-bit signed
 function s24(b, i) {
   var v = (b[i] << 16) | (b[i+1] << 8) | b[i+2];
   if (v & 0x800000) v |= 0xFF000000; // sign extend
   return v;
 }

 // --- Rohwerte dekodieren (je 3 Byte, /1000) ---
 var distance_cm = s24(bytes, 0) / 1000.0;  // Abstand in cm
 var battery_v   = s24(bytes, 3) / 1000.0;  // Batterie in V
 var temp_c      = s24(bytes, 6) / 1000.0;  // Temperatur in °C
 var cycles      = s24(bytes, 9) / 1000.0;  // Zyklen

 // --- Pegelberechnung ---
 var TANK_HOEHE_CM = 158.0; // <- anpassen!
 var level_cm = Math.max(0, TANK_HOEHE_CM - distance_cm);

 // --- Ausgabe / ThingSpeak-Mapping ---
 var out = {
   port: port,
   distance: Number(distance_cm.toFixed(2)), // Abstand in cm
   level:    Number(level_cm.toFixed(2)),    // Pegel in cm
   battery:  Number(battery_v.toFixed(3)),   // V
   temp:     Number(temp_c.toFixed(2)),      // °C
   cycles:   Number(cycles.toFixed(3))
 };

 // ThingSpeak Felder
 out.field1 = Number(level_cm.toFixed(2));   // Pegel (cm)
 out.field2 = Number(battery_v.toFixed(2));  // Batterie (V)
 out.field3 = Number(temp_c.toFixed(2));     // Temperatur (°C)
 out.field4 = Number(cycles.toFixed(2));     // Zyklen
 out.field5 = Number(distance_cm.toFixed(2)); // Abstand (cm)
 out.field6 = Number(temp_c.toFixed(2));      // Temperatur (zweites Feld)

 return out;
}

 

Webhook ThingSpeak

TheThingsNetwork bietet unter “Webhooks” eine Vielzahl an Vorlagen zur Übertragung unserer Pegeldaten auf unterschiedliche Plattformen. Da wir auf TheThingsnetwork zwar unsere Daten sehen, aber nicht visualisieren können, nutzen wir diese Webhooks, um Plattformen zur Visualisierung zu verwenden. 

Eine mögliche Plattform ist ThingSpeak. Dort können wir neben der Visualisierung auch noch MATLAB zur Analyse und Verarbeitung unserer Daten verwenden, falls wir bspw. Durchschnittswerte, historische Daten analysierenu nd darstellen wollen. 

In ThingSpeak:

  • Account erstellen
  • Channel anlegen
  • Channel benennen (ggf. eine Beschreibung hinzufügen)
  • Field 1-8: du kannst maximal 8 Datensätze übertragen. In unserem Fall (siehe Payload-Formatter) übertragen wir 4 Felder. Diese können wir in Thingspeak aktivieren und sinnvoll benennen. Für uns bedeutet das:
    • Field 1: Abstand
    • Field 2: Batterie/Akku
    • Field 3: Temperatur
    • Field 4: Zyklen
  • Speichere den Channel
  • Jeder Channel hat eine Channel ID. Diese benötigen wir, um den Webhook von TheThingsNetwork zu Thingspeak anzulegen. Kopiere ihn.
  • Unter API Keys findest du einen Write API Key. Das ist so etwas wie unser Schlüssel, den wir brauchen, damit niemand sonst mit der Channel ID (diese ist öffentlich) auf unseren Channel schreiben kann. 

In TheThingsNetwork:

  • Unter Webhooks - füge einen neuen Webhook hinzu. Verwende die Vorlage “ThingSpeak”
  • WebhookID: gebe dem Webhook einen beliebigen, aber sinnvollen Namen
  • Unter Channel ID fügst du die kopierte Channel ID aus ThingSpeak ein
  • Unter API Key fügst du den Write API Key aus Thingspeak ein
  • Speichere mit “Create WebhooK”
  • Der Webhook erscheint als “pending” solange, bis das erste Mal erfolgreich Daten übertragen wurden

In ThingSpeak kannst du nun deine Daten einsehen und analysieren. Ein Beispiel, wie die Visualisierung später aussehen kann findest du unter messpegel.de

Webhook Thingsboard

eine weitere Plattform zur Datenvisualisierung bietet Thingsboard. Die Plattform bietet eine kostenlose Testversion als “Thingsboard Cloud”, eine CommunityEdition zur eigenen, lokalen Installation auf einem eigenen Server steht jedoch auch bereit. Wir nutzen eine eigene Instanz, welche unter thingsboard.umwelt-campus.de verfügbar ist. Zur Nutzung benötigst du jedoch einen Account, einen Account zur Einbindung eigener Hochwasserpegel oder DIY-Projekte kannst du auf Anfrage von uns erhalten.

In der Plattform Thingsboard:

  • Unter Geräte: füge über das “+” ein neues Gerät hinzu, bennene es sinnvoll und speichere.
  • Mit einem Klick auf das Gerät öffnen sich die Details zu dem Gerät. Hier kannst du den “Zugangs-Token kopieren”

In TheThingsNetwork:

  • Lege unter “Webhooks” einen neuen Webhook an
  • Benutze einen “Custom WebhooK”
  • Benenne den Webhook beliebig, aber sinnvoll
  • Das Webhook-Format ist JSON
  • Die Base URL ist “http://thingsboard.umwelt-campus.de/api/v1/Dein Zugangs-Token/telemetry” - Füge an der entsprechenden stelle den kopierten Zugangs-Token ein
  • Füge einen neuen Header-Entry “Add Header-Entry” hinzu:
    • Authorization: Content-Type
    • Bearer my-auth-token: application/json
  • Unter “Enable Event Types: aktiviere “Uplink message”, die Pfadangabe bleibt leer
  • SPeichere den Webhook
  • Der Webhook erscheint als “pending” solange, bis das erste Mal erfolgreich Daten übertragen wurden

In Thingsboard kannst du die Daten, die bei dem Gerät ankommen, einsehen, indem du:

  • Auf das Gerät klickst - “Neueste Telemetrie” - hier wird immer der letzte Datensatz angezeigt
  • Unter Dashboards
    • ein neues Dashboard anlegen
    • ein beliebiges Widget hinzufügen: bspw. unter der Kategorie “Charts” - “Line Chart”
    • Als Datasource wählst du dein Gerät aus
    • Als “Key” wird standardmäßig “temperature” angegeben. Klicke auf das “x”, um den Key zu löschen und einen eigenen verfügbaren Datensatz einzufügen. In unserem Fall wird von TheThingsNetwork die Temperatur als “temp” versendet

Ein Beispiel, wie ein Dashboard bei Thingsboard aussehen kann, findest du hier!

 

LoRaWAN™ is a trademark of Semtech Corporation

back-to-top nach oben