LoraWAN: Temperaturdaten senden mittels LORA

Cookies ermöglichen eine bestmögliche Bereitstellung dieser Webseite. Mit der Nutzung von test-wetterstation.de erklären Sie sich damit einverstanden, dass wir Cookies verwenden.

Wie man Temperaturdaten mittels Raspberry oder Arduino ermittelt, haben wir bereits ausführlich getestet. Was aber tun, wenn der Ort der Datenerhebung entfernt der eigenen Wohnung bzw. des nächsten Internet-Anschlusses liegt? LoraWAN kann eine Lösung sein, mit der die erhobenen Wetterdaten über weite Strecken gesendet werden.

LoRa Network und IoT: Schnell erklärt

Im aktuellen Projekt möchten wir in unterschiedlichen Räumen die Temperatur und vor allem die Luftfeuchtigkeit kontinuierlich messen. Wenn diese bestimmte Grenzwerte überschreiten (Feuchtigkeit), soll eine Alarmmeldung abgegeben werden. Aber auch eine kontinuierliche Protokollierung soll gewährleistet sein. Dies ist per DHT22-Sensoren und einem Arduino möglich. Doch leider stellt und die Datenübertragung vor ein Problem: Es liegt kein LAN-Kabel. Auch Versuche per PowerLAN (LAN über Stromkabel) sind gescheitert (Strecke zu lang). Eine Lösung: Die Lora Alliance mit ihrem Lora Network.

HINWEIS: Der gesamte Lora-Test ist derzeit bei uns noch im Aufbau. Der Artikel ist noch nicht vollständig und wird fortlaufend mit den aktuellen Ergebnissen angepasst.

Zwei verschiedene Shields bietet die Firma Dragino für den Arduino an. Links die Version „Dragino LoRa Bee V1.1“ mit GPS-Modul, rechts die Version „Dragino Lora Shield 868 MHz“, bereits auf einen Arduino gesteckt. Diese Shields vereinfachen die ersten Versuche mit LoRa ungemein. Achtung beim Kauf: Für die Nutzung in Europa immer die Version mit 868 MHz kaufen!

Was ist LoRa und was ist LoRaWAN?

m

Bei LoRa geht es um das energieeffiziente Senden von Daten über lange Strecken. Hierbei sollen keine große Datenpakete geschickt werden, sondern nur einzelne Daten, wie sie bei Sensoren anfallen. Gerade für das Internet of Things (IoT) ist LoRa eine wichtige Kommunikationsmöglichkeit.
LoRa bezeichnet also die von der Firma Semtech entwickelte Funktechnik zwischen einem Sensor (Node) und einem Gateway. Unter LoRaWAN versteht man den gesamten Netzwerkaufbau sowie die Kommunikation der Nodes untereinander.

Und was ist The Things Network (TTN)?

TODO

Arduino basierender LoRa GPS Tracker

In diesem Abschnitt werden wir einen GPS-Tracker-Node einrichten und mit unserem Dragino-Gateway (LoRa Gateway, siehe unten) verbinden. Angezeigt werden die anfallenden GPS Daten über The Things Network (TTN). Für den GPS Tracker verwenden wir einen Arduino Uno und einem Dragino LoRa Bee V1.1, das über einen Onboard-GPS-Chip verfügt.

Bevor wir unseren GPS Tracker mit dem Dragino Gateway verbinden können, müssen wir das Gateway mit TheThings Network einrichten und konfigurieren.
### Prozessbeschreibung??? ###

Da das Dragino Shield mit GPS ausgestattet ist, kann man daraus auch einen mobilen GPS-Sender bauen. Die GPS-Daten werden in diesem Versuch mittels LoRa an TTN übermittelt. Die notwendige Spannung für den Arduino wird mittels 18650-Akku bereitgestellt. Das hier verwendete Board liefert eine konstante Spannung von 5 Volt.

Obwohl wird das Dragino LoRa Bee als Shield auf den Arduino stecken, benötigen wir noch zwei weitere Jumperkabel. Entfernen Sie die zwei Jumper auf “GPS-Rx” und “GPS-Tx” und stecken jeweils ein Jumperkabel auf den linken Pin (siehe nachfolgendes Bild). Die beiden Kabel werden dann mit den Digital-Pins 3 und 4 verbunden.

Wichtig: Es müssen die zwei gelben Jumper (GPS-RXi und GPS-Tx) entfernt werden. Der jeweils linke Pin wird mittels Kabel wird mit den Digital-Pins 3 und 4 verbunden (GPS_RXi (hier: grün) mit Port xx ….

Der notwendige Code für den Arduino steht auf GitHub zum Download bereit. Rufen Sie das Github-Repository auf und laden die Datei „Arduino LoRaWAN GPS Tracker.ino“ herunter. Fügen Sie den Code in Ihre Arduino-IDE ein.

Gehen Sie zur The Things Network-Konsole. Erstellen Sie hier eine neue Application und vergeben eine beliebige Anwendungs-ID und eine Beschreibung. Klicken Sie danach auf die Schaltfläche „Anwendung hinzufügen“. Sobald die Anwendung hinzugefügt wurde, gehen Sie auf die Registerkarte „Geräte“.

Nun müssen Sie ein Gerät registrieren. Vergeben Sie eine eindeutige Geräte-ID für das Gerät. Generieren Sie eine zufällige Geräte-EUI und App-EUI und klicken Sie auf die Schaltfläche „Registrieren“.

Sobald dies erledigt ist, müssen Sie zu den Einstellungen gehen und die Aktivierungsmethode von OTAA auf ABP umstellen und danach auf die Schaltfläche „Speichern“ klicken.

Kopieren Sie von der Geräteübersichtsseite die Geräteadresse und fügen Sie diese in den Code ein, der in der Arduino IDE an der entsprechenden Stelle steht. Kopieren Sie danach den Network Session Key und den App Session Key im codierten Format und fügen Sie sie ebenfalls in den Code ein.

Sobald das erledigt ist, verbinden Sie den Arduino mit Ihrem PC. Wählen Sie den richtigen COM-Port und drücken Sie die Upload-Taste. Sobald der Code hochgeladen ist. Öffnen Sie den seriellen Monitor mit einer Baudrate von 9600. Nun sollten Sie Daten auf dem seriellen Monitor sehen. Gehen Sie danach zurück zur The Things Network-Konsole und öffnen Sie die Application, die wir erstellt haben. Klicken Sie dort auf die Schaltfläche „Payload Formats“. Gehen Sie zurück zum Github-Repository, dort sehen Sie eine Datei namens „Payload Format“. Öffnen Sie diese Datei und kopieren Sie den Code und fügen Sie diesen unter den Payload-Formaten ein. Danach speichern Sie die Payload-Funktionen. Diese Payload-Funktion wird verwendet, um die vom GPS-Knoten gesendeten Daten zu dekodieren.

Die Payload in TTN kann durch ein Skript lesbar umgesetzt werden. Das Skript erzeugt die Ausgabe „location.latitude“ und „location.longitude“ rechts neben dem LoRa Payload.

Wenn Sie auf die Registerkarte „Data“ gehen, wird es einige Zeit dauern, bis Sie vernünftige Daten sehen. Nach ein paar Minuten sollte Ihr Längen- und Breitengrad zu sehen sein. Wenn auch nach einigen Minuten hier keine vernünftige Daten erscheinen, verwenden Sie das Shield unter freiem Himmel. Um die GPS-Funktion zu verbessern, können Sie eine zusätzliche Antenne anschließen.

Fehlersuche: Wenn keine korrekten Daten in TTN angezeigt werden, ist zunächst die korrekte Positionierung der Jumper zu prüfen. Dann sollte ein Blick auf die LED fallen. Die rote LED leuchtet und zeigt die Bereitschaft an. Zudem muss eine weitere LED in regelmäßigen Abständen blinken. Wenn dies nicht der Fall ist, testen Sie den GPS-Sender unter freiem Himmel.

Ein eigenes LoRa Gateway aufsetzen und mit The Things Network (TTN) verbinden

Da die Lora-Abdeckung nach einem Test sich doch als zu schlecht erwiesen hat, haben wir ein eigenes Lora-Gateway installiert. Eine Übersichtskarte über alle registrieren Lora Getways kann bei der Lora Community eingesehen werden. Um das Netzwerk zu stärken, aber auch, um vielleicht einen besseren und stabileren Empfang zu haben, ist ein eigenes Gateway, welches man der Öffentlichkeit bereitstellt, sehr sinnvoll.

Als Basis dient ein alter Raspberry. Für die Aufgabe als Gateway muss kein neues Modell angeschafft werden. Aufgrund der Strom-Sparsamkeit ist ein älteres Modell sogar zu bevorzugen. Des Weiteren wird ein Lora WAN Shild benötigt. Wir haben uns für den „SX1301 LoRa WAN Concentrator für RPi“ ( https://www.dragino.com/products/lora/item/149-lora-gps-hat.html ) entschieden. Nachdem das Shild eingetroffen war, konnte die Installation in knapp zwei Stunden abgeschlossen werden. Linux bzw. Raspberry-Kenntnisse sind in jedem Fall von Vorteil. So richtet sich diese Anleitung hier auch eher an fortgeschrittene Raspberry-Fans.

Mittes eines SX1301 LoRa WAN Concentrator und einem alten Raspberry haben wir unser LoRa Gateway realisiert. Leider ist das SX1301-Board nicht preisgünstig. Für erste Experimente sollte man testen, ob man nicht ein LoRa Gateway in der Umgebung ansprechen kann.

Howto: LoRa WAN Gateway mit einem Raspberry installieren.

Zuerst wird ein aktuelles OS-Image auf einer SD-Karte (hier langen 4 GB) benötigt. Das Image wird auf die SD-Karte geschrieben, SSL wird aktiviert und der Raspberry wird im eigenen Netz mittels Putty aufgerufen.

Diese Schritte haben wir bereits mehrfach beschrieben. Wie man ein aktuelles Basis-Image auf eine SD-Karte unter Windows schreibt, kann hier nachgelesen werden: https://test-wetterstation.de/pywws-wettersoftware-fuer-usb-wireless-wetterstationen (Abschnitt „Basis-Image auf SD-Karte schreiben (unter Windows)“).

Daran denken, die Datei „ssh“ vor dem ersten Start des Raspi auf die Karte zu schreiben. Weitere Infos (ssh) gibt es hier:  https://babyphone-experte.de/raspberry-pi-handy-ueberwachungskamera/

IP Adresse des Rapsberry über die Fritzbox herausfinden
Wenn der Raspberry erstmalig gestartet wird, kann bei einer FritzBox über den Punkt HEIMNETZ/NETZWERK seine IP-Adresse herausgefunden werden (hier: 192.168.0.29). Mittels Putty kann dann Kontakt mit dem Raspi aufgenommen werden.

Wir die erste Kontaktaufnahme mit einem Raspberry und einer Fritzbox erfolgt, ist im Abschnitt „Erste Kontaktaufnahme mit pywws“ hier (https://test-wetterstation.de/pywws-wettersoftware-fuer-usb-wireless-wetterstationen ) beschrieben. Wenn der Raspberry sich mittels Putty meldet (User: „pi“, Passwort: „raspberry“) sollte zuerst das Betriebssystem aktualisiert und die Timezone eingestellt werden:

sudo apt-get update
sudo apt-get upgrade
sudo timedatectl set-timezone Europe/Berlin

Nun kann die Raspberry Config aufgerufen warden:

sudo raspi-config

Das Tool raspi-config ermöglicht Änderungen am Raspberry
Das Tool „raspi-config“ ermöglicht einige Änderungen am Raspberry, ohne dass man die genauen Linux Befehle kennen muss. So kann zum Beispiel auch der Hostname des Raspi ganz einfach über die Config geändert werden.

Ändern Sie den Namen des Raspberry nach Ihren Wünschen („loragateway“?) und ändern Sie das Passwort des Benutzers „pi“. Sofern noch nicht geschehen, sollten Sie den Raspi herunterfahren und das Shield auf den Raspi montieren und den Raspberry neu starten. Nun gilt es, die MAC-Adresse herauszufinden. Notieren Sie sich diese!

ifconfig eth0

MAC Adresse für Lora herausfinden
Notieren Sie sich Ihre „ether“-Adresse (hier: „b8:27:eb:d6:5b:7d“). Wir benötigen diese Adresse mehrfach.

Nun loggen Sie sich bei TheThingsNetwork ein. Wenn Sie noch kein Konto haben, erstellen Sie eines. Wählen Sie den Punkt „Gateways“ Register Gateway https://console.thethingsnetwork.org/gateways

Lora Gateway bei The Things Network
Sie benötigen für Lora ein kostenloses Konto bei „The Things Network“ (TTN). Wenn Sie noch keines haben, legen Sie sich ein Konto an. Um ein Gateway zu registrieren, klicken Sie an dieser Stelle auf „GATEWAYS“.

Legen Sie nun ein neues Gateway an. Im Feld „Gateway ID“ ist Ihre MAC-Adresse einzutragen. Entfernen Sie die Doppelpunkte aus Ihrer MAC-Adresse und stellen dem String noch „ffff“ hintenan. So wurde aus unserer MAC-Adresse („b8:27:eb:d6:5b:7d“) die Gateway-ID „b827ebd65b7dffff“, die im Feld „Gateway EUI“ hinterlegt wird.

Lora Gateway Status: not connected
Das Gateway ist registriert. Doch noch besteht keine Verbindung („Status: not connected“).

Dann wird der „Frequency Plan“ auf 868MHz für Europa gestellt. Im Feld „Router“ sollte nun „ttn-router-eu“ stehen. Die Location kann nun noch anhand der Karte optimiert werden. Danach sollte  im Fenster „Gateway overview“ das Getway erscheinen. Im Status ist jedoch noch „not connected“ ersichtlich. Erst jetzt wird der Raspberry weiter konfiguriert. Mittels einer Putty-Verbindung wird erneut der Befehl „sudo raspi-config“ aufgerufen.

Interface Options P4 SPI aktivieren
Nun muss auf dem Raspberry über den Punkt „3 Interface Options“ „P4 SPI“ aktiviert werden. Dies geschieht wieder über die raspberry-config

Wählen Sie die „Interface Options“, „P4 SPI“. Aktivieren Sie diese. Wenn das Interface aktiviert ist und das Config-Tool beendet ist, wird die Software mit folgendem Befehl installiert:

wget http://www.dragino.com/downloads/downloads/LoRa_Gateway/PG1301/software/lorapktfwd.deb

Dann folgender Befehl:

sudo dpkg -i lorapktfwd.deb

Im Ordner “/etc/lora-gateway” ist die Datei „local_conf.json“ zu finden. Dieser muss mittels eines Texteditors Änderungen vorgenommen werden.

nano local_conf.json

In dieser Datei wird die Gateway ID (ohne „eui-“) eingetragen.

In der Datei „global_conf.json“ wird erneut die GatewayID und die „server_adress“ von „localhost“ auf „router.eu.thethings.network“ ersetzt.

Anpassen der Datei local_conf.json und global_conf.json
Links: In der Datei local_conf.json muss die GatewayID eingetragen werden. Dies kann über den Editor nano geschehen. Rechts: auch in der Datei global_conf.json müssen Änderungen vorgenommen werden. Hier muss die GatewayID ebenfalls angepasst werden sowie in der Folgezeile die server_adress von „localhost“ auf „„router.eu.thethings.network“ ersetzt werden.

Hier sind noch weitere Infos: https://www.thethingsnetwork.org/docs/gateways/packet-forwarder/semtech-udp/index.html#connect-a-gateway_server-addresses

Nun sollte der Dienst neu gestartet werden:

sudo systemctl stop lorapktfwd
sudo systemctl start lorapktfwd

Wenn alles korrekt ist, sollte auf der Gateway-Seite von TTN der Status sich auf „connected“ ändern.

TTN Gateway Overview
Wenn alles korrekt übernommen wurde, sollte sich der Status im Feld „Gateway Overview“ bei The Things Network auf „connected“ ändern. Nun arbeitet das Lora Gateway.

Gateway Migration TTN von V2 auf V3

Die oben beschriebene Anlage eines Gateways bei TTN bezieht sich auf die Version V2, die nur noch bis Dezember 2021 gültig ist. Unter der V3 von TTN erfolgt die Neuanlage ähnlich. Erklärungsbedarf gibt es jedoch bei der Migration eines Gateways von V2 auf V3. Hierzu muss in der V3 das Gateway neu angelegt werden. Die Gateway-ID wird aus der V2 übernommen (ohne „eui-„, rechts) und im Feld „Gateway ID“ einkopiert. Dann muss noch der Frequency plan eingestellt werden. Dieser ist in Deutschland „EU_863_870_TTN“.

Wenn das Gateway so angelegt wurde, muss leider noch die Gateway Server address am Gateway selbst geändert werden. Hierzu wird mittels Putty eine Verbindung zum Server aufgebaut. Im Order “/etc/lora-gateway” wird nun die global mittels eines Texteditors aufgerufen:

sudo nano global_conf.json

Ziemlich am Ende der Config-Datei wird nun die Server-Adresse ausgetauscht. In unserem Fall von „router.eu.thethings.network“ in „eu1.cloud.thethings.network“. Die Datei wird gespeichert und der Dienst wird neu gestartet:

sudo systemctl stop lorapktfwd
sudo systemctl start lorapktfwd

Gateway Migration TTN von V2 auf V3
Die Gateway-Migration ist relativ einfach. Es wird in der V3 von TheThingsNetwork ein neues Gateway angelegt (links). Die Gateway EUI wird von der V2 übernommen (ohne „eui-„) und der Frequency-Plan eingestellt. Wichtig: Danach muss am Gateway selbst die neue Server-Adresse in die global_conf eingetragen werden.

API Anprogrammierung: Daten speichern

Die übertragenen Daten (Payload) können jederzeit online über den Application-Bereich bei „The Things Network“ (TTN) abgerufen werden. Die Webseite refreshed sich selbst, so dass die neusten Daten ständig angezeigt werden. Leider kommt es häufig zu einem Fehler beim erneuten Laden der Webseite. Ein eigenes Programm, welches die Daten selbstständig via API abholt und anzeigt, ist eine Lösung. Dann könnte man die Daten auch selbst in einer Datenbank speichern.

the things network there was a fatal error something went wrong refreshing the token
„There was a fatal error“ – die Webseite von TTN zeigt nach längerer Laufzeit Fehler an. Die Abfrage der Daten per API wäre eine Alternative.

Unter dem Bereich APPLICATIONS findet man auf der Seite von TTN den Bereich INTEGRATIONS. Hier gibt es einige Dienste, die man hinzufügen kann. Die Integration „Data Storage“ von The Things Industries B.V. ermöglicht das Speichern der Daten auf unterschiedlichen Systemen. Diese sind jedoch meist kostenpflichtig.
Kostenfrei ist jedoch die REST-API Schnittstelle, die der Dienst zur Verfügung stellt. So sind via REST API Querys möglich, um auf die eigenen Daten zuzugreifen.

Weiteres folgt ….

Daten von TTN mit c# auslesen

Es ist möglich, mittels API die übermittelten Sensordaten von The Things Network (TTN) auszulesen und in eigenen Programmen oder einer Datenbank zu speichern. In unserem Fall lesen wir sechs Sensordaten aus. Da die Luftfeuchtigkeit überwacht werden soll, werden diese Daten speziell visualisiert.

folgt

Dragino LHT65 Temperatursensor mit TTL (V3) verbinden

Einige Hersteller bieten bereits fertige Sensoren an, die sich prima mit LORA und The Things Network (TTN) verbinden lassen. Hierzu gehört auch der LHT65 „Temperatur and Humidity Sensor“ von Dragino. Dieser besitzt einen eingebauten Temperatur- und Feuchtigkeitssensor. Zudem liegt ein kabelgebundener DS18B20 Sensor mit 3,5mm Klinkenstecker bei. Die Kabellänge beträgt einen Meter. Mit dem wasserdichten Sensor kann eine weitere Temperaturmessung durchgeführt werden.
Der Sensor verfügt über eine eingebaute und nicht wechselbare Batterie. Diese soll bei zehnminütiger Messung rund zehn Jahre halten. Zu gegebener Zeit werden wir den Sensor gewaltsam öffnen und prüfen, ob die Batterie nicht doch wechselbar ist.

Der LHT65 besitzt einen eingebauten Temperatur- und Feuchtigkeitsmesser. Zusätzlich kann man noch einen DS18B20-Sensor anschließen, um Temperaturmessungen in 1m Entfernung oder in Flüssigkeiten durchzuführen. Die Sensordaten werden mittels LORA WAN übertragen.

Schlüssel auslesen

Nicht inklusive: Der USB-Adapter und drei Jumper-Kabel, die jedoch zwingend notwendig sind. Der hier verwendete DSD TECH Seriell Konverter mit FTDI FT232RL Chip kostet rund 10 Euro.
Das dem LHT65 beiliegende Kabel kann nicht direkt an den USB-Adapter angeschlossen werden. Mittels drei Jumper-Kabel muss die Verbindung zwischen dem mitgelieferten Kabel (links) und dem Adapter (rechts) hergestellt werden. Das schwarze Kabel wird mit GND, das grüne Kabel mit RXD und das weiße Kabel mit TXD verbunden. Das rote Kabel bleibt frei.