Spätestens seit einem der Vorträge auf dem 33C3 interessiere ich mich für Kommunikation in und mittels LoRa. Eng damit in Zusammenhang steht mein Interesse für The Things Network (TTN). Nunmehr habe ich erste praktische Versuche gestartet.
Ich habe bereits vor einiger Zeit festgestellt, dass ich nicht einfach so mit eigenen Sensoren am TTN teilnehmen kann - rund um meinen gewöhnlichen Aufenthaltsort ist auf der Abdeckungskarte des TTN ein großer weißer Fleck. Das bedeutet, dass ich ein eigenes Gateway aufstellen muss, um am TTN teilzunehmen. Diese Teile sind aber teuer - und aus meiner Sicht so teuer, das ich davor zurückschrecke, eines für einen kleinen Test anzuschaffen.
Nun gibt es aber im Internet Berichte und Anleitungen zur Erstellung eines simplen Packet-Forwarders, der im Prinzip aus einem Breakout-Board eines RFM95 und ein paar Drähten besteht.
In der vergangenen Woche habe ich Zeit gehabt, mich hinzusetzen und das einmal auszuprobieren. Bis auf einen kleinen Schluckauf bei der Registrierung des Gateways (oder treffender: Legacy Packet Forwarders) lief alles genau wie in den Aleitungen beschrieben: Ich konnte das Gateway in Betrieb nehmen und es hat sich mit dem TTN verbunden.
An dieser Stelle sei eine kleine Abschweifung erlaubt: Das, was ich da gebaut hatte, trägt "legacy" aus guten Gründen im Namen: Zunächst erst einmal wird davon nur ein Kanal von insgesamt 8 abgedeckt - das bedeutet, dass Geräte, die auf den 7 anderen senden mit meinem Forwarder nichts anfangen können. Beispielcode für ESP8826 und andere umgehen ein solches Problem, indem sie für jedes Paket ein anderes Band verwenden. Das würde aber im Bereich meines Forwarders bedeuten, dass nur jedes 8. Paket durchkommt. Ich habe das getestet und konnte genau dieses Resultat bestätigen.
Eine weitere wichtige Einschränkung ist die Tatsache, dass ein solcher Packet Forwarder eine Einbahnstraße ist: Ich kann darüber keine Informationen an die Node funken - es ist lediglich möglich, Signale der Node zu empfangen und an TTN weiterzuleiten. Es gibt natürlich viele Anwendungsfälle - und mein angestrebter ist einer davon - wo es nicht nötig ist, Daten an die Node zu senden und in solchen Fällen bedeutet dieser Fakt dann auch keine Einschränkung.
Den Packet Forwarder habe ich mit einem Raspberry Pi 3B realisiert und anschließend mit einem Wemos D1 Mini eine SensorNode aufgebaut. Die Software bestand aus Beispielcode, der der Bibliothek beilag und den ich geringfügig angepasst habe. Damit konnte ich auch die oben ausgeführte Tatsache validieren, dass im TTN nur jedes achte Paket ankam.
Wichtig dabei ist noch zu wissen, dass nach Einschalten die Pakete im FrameCounter wieder bei 0 beginnen zu zählen. TTN hat eine Sicherheitsmaßnahme, die verhindert, dass Pakete weitergeleitet werden, deren FrameCounter kleiner oder gleich ist als der des zuletzt weitergeleiteten Pakets. Das führte dazu, dass mir schien, dass nur der erste Test - dessen Pakete ich sehen konnte - erfolgreich war und alle weiteren nicht. Dieses Feature lässt sich glücklicherweise ausschalten, denn wenn man in meinem Beispiel den Deep Sleep des ESP nutzt beginnt das Programm wieder von vorn und zählt natürlich auch die PacketCounter wieder von 0.
Ich habe noch keine Möglichkeit gefunden, den Startwert dieses Zählers zu setzen - ginge das, könnte ich mir vor dem einschlafen den aktuellen Wert im Flash oder EEPROM merken und nach dem Aufwachen von dort holen und dann damit weiterarbeiten.
Ich habe mir die Nachrichten natürlich nicht nur in der Web-Konsole von TTN angesehen, sondern sie auch per MQTT empfangen - etwas, das ganz wunderbar und zuverlässig funktionierte.
Die nächsten Schritte sind jetzt die Bestimmung der Reichweite meines Packet Forwarders und ein Test (wahrscheinlich kombiniert mit einem GPS-Empfänger) des Übergangs zwischen mehreren Gateways.
Ich habe hier die Links zusammengestellt, die mir letztlich halfen, zu einem funktionierenden System zu kommen:
günstiger 1ch LoRa Gateway: RFM95W direkt zu Raspberry verkabelt
RFM95 LoRa Module - 868MHz (10 pack)
lukastheiler/ttn_moteino
The Thing Network
tftelkamp/single_chan_pkt_fwd
Communication LoRa ESP8266 & Radio RFM95
LoRaWAN Gateway ESP8266 RFM95 Arduino
hallard/WeMos-Lora
Wemos D1 Node ins LoRaWAN bringen mit Arduino
How should I wire an RFM95 to an ESP8266/WeMos D1 mini?
LoRa Single Channel Gateway
Build your own simple LoRaWAN Gateway with Wemos D1 R2 and LoRa shield
things4u/LoRa-Thing
LoRaWAN
esteoh/ttn-abp-8ch-nd-wemos-wifigeo
mcci-catena/arduino-lmic
The Things Network mit RFM95 und ESP8266 nutzen
Arduino-LMIC library with low power mode
Quick Start
SensorsIot/LoRa
19.09.2021
Ich berichtete vor einiger Zeit über meine ersten Versuche der Beschäftigung mit LoRaWAN und The Things Netzwork.
Multi-User-WebDAV, Docker, GitHub
17.11.2019
Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...
Weiterlesen...Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Go GUI Gui Hardware Java Jupyter Komponenten Links Linux Markdown Markup Music Numerik OpenSource PKI-X.509-CA Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
In eigener Sache...
Weiterlesen...Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.
Weiterlesen...Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.
Weiterlesen...Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.
Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.
Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...
PS: Meine öffentlichen Codeberg-Repositories findet man hier.