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:
Die Device address und sonstige Keys können generiert und kopiert werden, wir brauchen diese Daten im Pegel-Programm
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.
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 = 133.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;
}
Thingsboard - Custom Webhook
Thingspeak - Vorlage Webhook
Voraussetzung: Du hast ein TTN-Gerät verbunden, hast den Payload-Formatter eingefügt und empfängst Daten von deiner Platine
Thingsboard: Lege einen kostenfreien Thingsboard-Cloud-Account an
Custom Webhook
Zur Visualisierung der Daten gibt es verschiedenste Optionen
Falls du deine Daten per WLAN übertragen kannst, kannst du deine Daten mit einem passenden Blöckchen direkt an IoT-Dashboards wie Thingspeak oder Thingsboard senden oder an einen eigenen Server - Nutze ein Blöckchen aus der HTTP-Kategorie, auch MQTT ist möglich
In unserem Fall (wahrscheinlich auch in deinem Fall) senden wir die Daten an TTN. Von dort aus leiten wir die Daten per Webhook weiter. In THingsboar
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.
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.
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.
LoRaWAN™ is a trademark of Semtech Corporation
Sie verlassen die offizielle Website der Hochschule Trier