i

Datenformate

Datenformate für LoRa

Während der Programmierung hast du vielleicht schon festgestellt, dass es z.B. für Temperaturwerte einen eigenen Befehl "Füge Temperatur hinzu" gab. Damit ist es möglich, nicht nur den Sensorwert zu übertragen, sondern auch die Information, dass es sich um einen Temperaturwert handelt.
LoRaWAN verwendet hierfür zur Übertragung ein eigenes, hexadezimales Datenformat.

TTN-Temperatur-Data[1]
Die Daten werden als HEX-Werte zusammen mit ihrer Kanalnummer und einer Inputkennung gesendet. Das erleichtert dann in einem nächsten Schritt die automatisierte graphische Darstellung der Messwerte.

Beispieldaten aus dem vorigen Abschnitt:

MAC payload 01 67 01 36 bedeutet:
Kanal 01 : der Kanal 1 wurde im Calliope-Programm so gesetzt - jeder Kanal kann später getrennt graphisch dargestellt werden (datenbyte[0]).
Datentyp 67: es handelt sich bei den Daten um einen Temperaturwert - der Wert 67 wird durch Verwendung des entsprechenden Makecode-Befehls für Temperaturwerte automatisch gesetzt (datenbyte[1]).
Datenwert 0136: das ist der aktuelle hexadezimale Sensorwert, entspricht dezimal 310, also 31,0 Grad Celsius (datenbytes[2] und [3]).

Weitere Informationen zu LoRa-Datenformaten findest du z.B. in der Cayenne Community.

Damit die Daten lesbar angezeigt werden, müssen sie entsprechend umformatiert werden.

Umrechnung der Hexadezimalwerte

Die Messwerte (payload) werden durch Angabe eines „Payload formatters“ links im TTN-Menu für die spätere Anzeige vorbereitet. Du musst für den Uplink in Javascript die Werte entsprechend wie abgebildet umrechnen. Der Downlink bleibt leer (None).

TTN-Formatter[2]

Schauen wir uns den Javascript-Code etwas genauer an:


function Decoder(datenbytes, port) 
{
  var temperatur = (datenbytes[2] * 256 + datenbytes[3]) / 10 ;
  var luftfeuchte = (datenbytes[6]* 256 + datenbytes[7]) / 100;
  return { field1: temperatur,
           field2: luftfeuchte}

TTN-Data[3]
Der Calliope hat in diesem Fall die Temperatur und die Luftfeuchte eines AHT20-Sensors gesendet. Wie oben beschrieben sind die ersten beiden Bytes (datenbytes[0] und [1]) die Kanalkennung und die Sensorart. Danach kommen 2 Bytes Temperaturdaten (datenbytes[2] und [3]), die entsprechend umgewandelt und durch 10 geteilt werden. Genauso wird mit den Daten der Luftfeuchtigkeit verfahren. Die Bezeichner field1 und field2 werden exakt so benötigt, da sie im nächsten Schritt zur Weiterleitung der Daten an den Thingspeak-Server gebraucht werden und dort die Feldnummern ergeben.

Jetzt sollten die Messerte unter "Live data" auch schon in TTN lesbarer und mit Feldangabe erscheinen.

Quellen

Suche

v
13.4.8.1.6
inf-schule.de/informatiksysteme/calliope/lernstrecke_lora/lernstrecke/formatierung
inf-schule.de/13.4.8.1.6
inf-schule.de/@/page/LMpckTJW8KponCOf

Rückmeldung geben