PHP-Script für LoRaWAN Sensordaten
07.07.2024
Elektronik | Funk | Software
Der Technik-Blog
Der LHT65 ist ein Gerät (Thing) für das LoRaWAN und TTN. Es handelt sich dabei um eine Temperaturmessstation bestehend aus zwei internen Sensoren und einem externen Temperatursensor. Bei dem externen Sensor handelt es sich um den bekannten DS18B20. Intern befindet sich ein kombinierter Sensor, der die Temperatur und Luftfeuchtigkeit messen kann. Der Sensor eignet sich daher sehr gut, wenn man z. B. die Temperatur von einem See oder Gewässer messen möchte. Aber auch auf hohen Bergen, wo extreme Witterung herrscht, ist der Sensor gut geeignet, da er mit einer Batterie über viele Jahre betrieben werden kann. In diesem Artikel geht es um die Inbetriebnahme des Sensors und um die Verknüpfung mit dem LoRaWAN Netzwerk TTN. Als Gateway wird das Dragino LG-02 verwendet. Grundsätzlich kann aber auch jedes andere Gateway bzw. bereits existierende öffentliche Gateways verwendet werden.
Achtung: Dieser Artikel ist veraltet und nicht mit TTN V3 kompatibel. Ein Update zum Projekt gibt es in diesem Artikel.
Dragino LG-02 LoRaWAN Gateway installieren
Dragino LHT65
Daten vom TTN auf die eigene Webseite senden
So funktioniert die LoRa Payload | Encoder, Decoder & Best Practice
Der Sensor hat eine eingebaute, offiziell nicht austauschbare Batterie, die laut Herstellerangabe 8 bis 10 Jahre halten soll. Im inneren befindet sich eine Platine mit einem STM32 Mikrocontroller, der extrem energiesparend ist, sowie der bekannte SX1276 LoRa Chip von Semtech. An der Rückseite befindet sich ein 4-Poliger Anschluss, über den die Firmware aktualisiert werden kann. Außerdem wird über diese Schnittstelle eine serielle Verbindung aufgebaut, worüber der Sensor konfiguriert wird. An der Vorderseite befindet sich eine mehrfarbige Status-LED, ein QR-Code sowie die Typenbezeichnung. An der Unterseite befindet sich ein Taster und ein Klinkenanschluss für den externen Sensor (DS18B20).
Im Auslieferungszustand ist der Sensor bereits vorkonfiguriert mit entsprechenden Schlüsseln. Diese Schlüssel müssen dann im TTN oder einem anderen LoRaWAN Netzwerk eingegeben werden. Anschließend kann der Sensor über den Button durch ein langes drücken aktiviert werden. Der Sensor startet mit einem JOIN-Request und versucht über OTAA mit dem LoRaWAN Netzwerk zu kommunizieren. Achtung: OTAA wird von einigen Gateways nicht direkt unterstützt, da diese oft nur auf einer Frequenz (Single Channel Gateway) bzw. zwei statischen Frequenzen (Bsp. Dragino LG-02) arbeiten. Entweder wird der Sensor entsprechend für diese Gateways konfiguriert, oder man wechselt in den ABP-Mode und erhöht dadurch die Kompatibilität. Hinweis: In diesem Artikel wird der Sensor über ABP mit dem TTN verbunden, was im Gegensatz zu OTAA einfacher ist, da man sich den gesamten JOIN-Request Ablauf erspart. ABP hat gegenüber OTAA auch Nachteile bei der Sicherheit, was aber bei einem einfachen Sensor, der keine sensiblen Daten überträgt, vernachlässigbar ist.
Der Sensor kann über die serielle Schnittstelle konfiguriert werden. Ein entsprechendes Kabel vom Sensor auf den Jumper-Wire-Anschluss liegt ebenfalls bei. Um eine Verbindung mit dem Computer herzustellen, wird ein TTL Adapter (USB -> RS232) benötigt. Außerdem wird über dieses Kabel die Firmware aktualisiert (ST-Link Programmer erforderlich). Alternativ kann auch der Arduino als serielle Brücke verwendet werden. Die folgende Grafik zeigt die Pinbelegung zwischen Sensor und RS232 Adapter:
Als Erstes muss man sich bei TTN (The Things Network) registrieren. Für den Betrieb des Sensors ist ein Gateway erforderlich. Dieses muss jedoch nicht zwingend selbst betrieben werden, aber gerade für den Einstieg und die erleichtere Fehlersuche ist ein eigenes Gateway durchaus empfehlenswert. Ansonsten können die meisten öffentlichen Gateways in der Nähe verwendet werden. Grundsätzlich kann ein registrierter Sensor bzw. Applikation auf jedes Gateway zugreifen, was mit TTN Verbunden ist und auf die gleichen Konfigurationsparameter (SF, Coding Rate, Bandbreite, Frequenz etc.) eingestellt ist.
Im ersten Schritt muss im TTN eine neue Applikation erstellt werden. In dieser Applikation werden anschließend erst ein oder mehrere Geräte (Things) registriert. Hier müssen zwei frei wählbare Parameter (Application ID, Description) vergeben werden. Diese Parameter haben keinen weiteren Einfluss auf die Endgeräte bzw. Gateways.
Die Schlüssel können entweder vom beiliegenden Sticker abgelesen und bei TTN entsprechend eingegeben werden oder direkt vom Sensor über einen Terminal-Client ausgelesen werden. Da die Schlüssel sehr lange sind und der kleinste Fehler bereits zu einem Verbindungsabbruch führt, ist es recht praktisch, wenn man sich die Parameter einfach aus dem Terminal herauskopiert. Da später die "Device Address" sowieso geändert werden muss, ist eine serielle Verbindung und Konfiguration in diesem Fall immer notwendig. Wie im oberen Bild gezeigt, wird der Sensor an den USB-Adapter angeschlossen. Über eine Terminal-Software wie Putty wird am entsprechenden COM-Port eine Verbindung mit einer Baud-Rate von 9600 aufgebaut. Anschließend tippt man im Terminal folgenden Zeichen ein und drückt Enter:
123456Antwort: Correct Password
AT+CFGMit diesem Befehl wird die gesamte Konfiguration inkl. aller Schlüssel ausgeben. Wie im folgenden Screenshot gezeigt, kopiert man sich die rot markierten Schlüssel ein einem Texteditor:
Nachdem alle notwendigen Schlüssel ausgelesen wurden und eine Applikation erstellt ist, kann dort das erste Gerät registriert werden. Die Device-ID ist wieder frei wählbar und hat keine direkte Auswirkung auf das Endgerät. Anschließend muss die Device EUI (DEUI) und der App Key (APPKEY) vom Gerät in TTN eingeben werden. Beide Schlüssel können direkt aus dem Terminal in das Eingabefeld kopiert werden. Die App EUI wird vorerst von TTN automatisch generiert und kann nach dem Anlegen des Sensors geändert werden.
Nachdem die ersten Schlüssel und Bezeichnungen eingegeben wurden, ist der Sensor im TTN hinterlegt und wird in der Device Overview entsprechend angezeigt.
Unter Applications -> APP_NAME -> Devices -> DEVICE_ID -> Settings kann dem neu hinzugefügten Gerät eine Beschreibung vergeben werden. Anschließend muss wie im nächsten Screenshot zu sehen die Activation Method von OTAA auf ABP geändert werden. Zusätzlich muss im ABP-Mode noch der Network Session Key (NWKSKEY) und der App Session Key (APPSKEY) eingeben werden. Beide Schlüssel können auch hier wieder aus dem Terminal kopiert werden.
Damit die Sensordaten auch in die richtige Applikation kommen, muss die entsprechende EUI hinzugefügt werden. Unter Applications -> APP_NAME -> Settings -> EUIS kann der Applikation eine weitere EUI hinzugefügt werden. Auch hier wird wieder die APPEUI aus dem Terminal in das Eingabefeld kopiert. Anschließend sollten in TTN zwei EUIS angezeigt werden. Die zweite bereits vorhandene EUI, welche im Schritt 3 automatisch von TTN generiert wurde, kann gelöscht werden. Alternativ kann aber auch die von TTN generierte EUI im Sensor geändert werden, was diesen Schritt ersparen würde.
Nachdem die Application EUI hinzugefügt wurde, muss diese auch dem Sensor zugewiesen werden. Unter Applications -> APP_NAME -> Devices -> DEVICE_ID -> Settings wird die zuvor eingegebene richtige EUI dem Gerät zugewiesen und gespeichert.
Im gleichen Fenster wie bei Schritt 7 wird anschließend die Device Address in die Zwischenablage kopiert. Diese kurze Adresse wird im nächsten Schritt über das Terminal auf das Gerät kopiert.
Im letzten Schritt muss der Sensor über das Terminal auf den ABP-Mode umkonfiguriert werden. Außerdem muss die Device Address geändert werden. Über das Terminal werden folgende Befehle an den Sensor gesendet:
1. Passwort eingeben:
123456
2. Wechsel in den ABP-Mode:
AT+NJM=0
3. Adaptive Data Rate deaktivieren:
AT+ADR=0
4. Data Rate einstellen (5 = EU Band):
AT+DR=5
5. Sendeintervall einstellen (600 000 millis = 10 min):
AT+TDC=600000
6. Sendefrequenz einstellen auf 868,1 MHz:
AT+CHS=868100000
7. Device Address ändern auf TTN Vorgabe:
AT+DADDR=11 22 33 AA
*11 22 33 AA muss auf die im Schritt 8 ermittelte Adresse geändert werden
8. Controller neu Starten:
ATZ
Das folgende Bild zeigt einen Screenshot vom Terminal. Nach jeder der vorherigen Eingabe muss ein OK vom Sensor ausgegeben werden.
Nachdem alle Parameter sowohl in TTN als auch am Sensor richtig eingestellt wurden, sollte unmittelbar nach dem letzten Befehl (ATZ) ein Datenpaket im TTN ankommen. Im unteren Screenshot sieht man das empfangene Paket mit der Payload. Die Payload beinhaltet alle Messwerte, Batteriespannung etc. bereits entschlüsselt in Hexadezimalen Paketen. Um aus der Payload die einzelnen Messwerte zu bekommen, wird ein entsprechender Decoder benötigt.
Der Encoder wandelt die empfangene Payload in die einzelnen Werte um. Bei LoRaWAN versucht man die Größe der zu übertragenden Daten (Payload) so gering wie möglich zu halten. JSON oder eine Klartext-Übertragung sollte daher vermieden werden. Je nach Sensor gibt es in der Regel einen bereits fertigen Code vom Hersteller, der in das Decoder-Feld kopiert wird. Der Code ähnelt einer C++ Programmierung, wie man Sie aus der Arduino-Welt kennt. Durch das decodieren der Werte können die einzelnen Datensätze vom TTN zum Beispiel im JSON-Format an den entsprechenden Applikation-Server weitergeben werden. Den Decoder für den LHT65 Sensor gibt es hier: LHT65 Payload Decoder
Nachdem der Decoder in die TTN-Applikation integriert wurde, werden ab sofort alle empfangenen Werte wie im unteren Screenshot zu sehen, im Klartext angezeigt. An dieser Stelle ist die Einrichtung vom Sensor erfolgreich abgeschlossen und kann über die verschiedenen Schnittstellen von den weiteren Servern/Anwendungen verarbeitet werden.
Einstieg in das LoRaWAN (TTN) mit dem Heltec LoRa32 V3 und Einrichtung vom Board in der Arduino IDE
WeiterlesenStarthilfe LoRaWAN - Diese Seite richtet sich an alle Einsteiger, die mit LoRaWAN starten wollen und ihre Sensoren in das IoT-Netzwerkt TTN integrieren wollen
WeiterlesenAEQ-WEB © 2015-2024 All Right Reserved