IoT-Kartografie
LoRaWAN-Abdeckung mit dem Webdienst TTN Mapper darstellen
Egal ob bei LTE, WLAN oder LoRaWAN: Die tatsächliche Reichweite von Funknetzen kann stark von Modellrechnungen und Schätzungen abweichen. Bei LoRaWAN können Sie die Abdeckung Ihres Gateways mit günstiger Hardware einfach selbst ermitteln.
Der Internet-der-Dinge-Funkstandard LoRaWAN (Long Range Wide Area Network) [1] eignet sich hervorragend, um mit geringen laufenden Kosten eigene IoT-Projekte umzusetzen, die sich weit außerhalb der Reichweite eines WLANs befinden oder besonders energiesparend sein sollen. Solange Sie damit im Bereich Ihres Hauses, Hofes und Grundstücks bleiben, wird die Reichweite kein großes Thema sein – ist das Gateway im unisolierten Dachboden oder auf dem Dach platziert, genügt die Abdeckung meist völlig. Doch was, wenn Projekte auf riesigen Flächen funktionieren müssen, etwa in einer ganzen Stadt?
Natürlich können Sie mit Software eine Modellrechnung der Abdeckung erstellen oder das von einem professionellen Anbieter erledigen lassen. Doch die Ergebnisse/Berechnungen erreichen kaum die Genauigkeit einer örtlichen Messung. Genau und kostengünstig messen können Sie mit dem Webdienst TTN Mapper (ttnmapper.org) und unseren Tracker-Bauvorschlägen: Die Webseite schließt an das kostenfreie LoRaWAN „The Things Network“ (TTN) an, nimmt über eine mit wenigen Klicks aktivierbare Erweiterung Positionsdaten von LoRaWAN-Geräten mit GNSS-Empfänger (Global Navigation Satellite System) entgegen und speichert diese zusammen mit den Empfangswerten des Datenpakets in einer Datenbank. So wächst nach und nach eine Punktwolke, die die Abdeckung leicht abrufbar auf der Webseite darstellt. Wichtig ist: Alle aufgezeichneten Daten sind auf ttnmapper.org für jedermann einsehbar – es gibt keine Möglichkeit, sie vor der Öffentlichkeit zu verbergen.
Damit sich die Karte füllt, muss die Tracking-Hardware von möglichst vielen Orten aus senden. Das bedeutet nicht zwangsläufig, dass Sie durch die Gegend fahren müssen: Wenn Sie den Ausbau für eine Stadt oder einen Landkreis planen, können Sie – nach Klärung der datenschutzrechtlichen Lage – zum Beispiel Müll-, Rettungs-, Feuerwehr- oder andere Dienstfahrzeuge einsetzen, um die Abdeckung schrittweise und ohne unnötige Fahrten zu ermitteln. Auch befreundete Taxifahrer oder umtriebige Reitsportler können unter Umständen helfen. Den Helfenden sollte klar sein, dass ihre Standorte zusammen mit Zeitangaben gespeichert werden.
Voraussetzungen
Sie sollten bereits grundlegendes Wissen und erste Erfahrungen mit dem Thema LoRaWAN haben, um mit dem TTN Mapper loszulegen. Wenn Ihnen Spreading Factor, OTAA und ABP nichts sagen, lesen Sie zunächst unseren Einsteigerartikel zum Thema [1].
Theoretisch kann jedes LoRaWAN-fähige Gerät in Verbindung mit einem Smartphone zum TTN-Mapper-Messsender werden. Da das jedoch wenig praktikabel für den automatischen Betrieb in Fahrzeugen oder im Rucksack ist, geht dieser Artikel nicht näher darauf ein.
Ein LoRaWAN-Gerät mit eigenem GNSS-Empfänger (GPS, GLONASS usw.) eignet sich am besten für die kontinuierliche Aufzeichnung der Abdeckung. Prinzipiell können Sie dafür jeden üblichen LoRaWAN-Tracker verwenden, für den Sie einen JavaScript-Paket-Dekoder liefern können – sollte Ihnen das nichts sagen: für die Tracker-Bauvorschläge wird es im Artikel erklärt. Sobald die TTN-Erweiterung des TTN Mappers aktiviert ist, prüft sie die JSON-Pakete auf die Parameter „latitude“ (Breitengrad), „longitude“ (Längengrad) und „hdop“ (Messwertstreubreite) sowie „accuracy“ oder „sats“. Viele Hersteller bieten fertige Dekoder-Skripte in der Dokumentation ihrer Hardware an. Wenn Sie das Skript bereits haben und keine zusätzlichen Tracker benötigen, können Sie direkt zum Abschnitt „TTN Mapper einrichten“ weiter unten springen. Finden Sie das Skript nicht beim Hersteller, suchen Sie im Netz etwa nach „<Gerätebezeichnung> TTN decoder“. Da das TTN beliebt ist, sind Sie meist nicht der Erste, der eines benötigt.
Abgesehen von fertigen LoRaWAN-Trackern gibt es zwei günstige, fast fertige Hardware-Optionen: Der T-Motion von Lilygo – eine Bastelplatine – kombiniert ein LoRa-Modem, einen GNSS-Empfänger und einen STM32-Mikrocontroller im USB-Stick-Format. Derzeit kann man ihn nur aus Fernost bestellen; er kostet rund 25 Euro. Der große Vorteil: Er hat keine Bedienelemente, an denen Nutzer Fehler machen können und schaltet sich automatisch ein, wenn er per USB mit Strom versorgt wird. So kann er etwa im Auto an einen freien USB-Port angesteckt und künftig ignoriert werden. Ein Programmieradapter ist auch nicht notwendig, der Firmware-Upload läuft ebenso per USB. An Powerbanks mit automatischer Abschaltung arbeitet er indes schlecht; er benötigt so wenig Strom, dass viele Powerbank-Schaltungen ihn nicht mehr als angeschlossenen Verbraucher detektieren und den Port abschalten.
Der T-Beam – auch eine fertig bestückte Bastelplatine – kommt ebenfalls von Lilygo, nutzt jedoch einen ESP32-Mikrocontroller mit gesondertem GNSS-Empfänger und LoRa-Modem. Er ist in Versionen mit und ohne rückseitiger 18650-Halterung verfügbar – einem Akku-Rundzellen-Format. Bei europäischen Händlern zahlt man rund 35 Euro, bei chinesischen etwa 20 bis 35 Euro, je nachdem, ob ein Infodisplay dabei ist und ob der SMA-Anschluss fest verlötet oder als kurzes Kabelende ausgeführt ist. Auf der Platine sitzt ein Akkumanagement-IC, sodass die 18650-Zelle per USB geladen und das Gerät per Tastendruck ein- und ausgeschaltet werden kann. Die Programmierung läuft ebenso per USB.
Fleißigen Open-Source-Entwicklern ist zu verdanken, dass es sowohl für den T-Motion als auch für den T-Beam fertigen Arduino-Programmcode gibt, den Sie unkompliziert verwenden können.
Gateway-Konfiguration
Damit der TTN Mapper die Daten erhält, müssen alle zu messenden LoRaWAN-Gateways ins TTN eingebucht sein. Ist das bereits der Fall, lesen Sie bei „TTN einrichten“ weiter. Wenn Sie ein privates LoRaWAN betreiben, schauen Sie zunächst, ob Sie in der Gateway-Konfiguration mehrere Server eintragen können, sodass ihr Gateway die Daten außer an Ihren Server auch ans TTN weiterleitet. Wenn ja, können Sie das oder die Gateways einfach im TTN registrieren und parallel betreiben. Alternativ können Sie die Gateways zeitweilig umtragen oder den Multiplexer von Chirpstack einsetzen (nur für UDP, verlinkt unter ct.de/y4jc). Ein Sicherheitsnachteil ist beides nicht, da Gateways im LoRaWAN lediglich eine Durchleitungsfunktion erfüllen und auch andere Gateways die Pakete Ihrer Geräte empfangen und weiterleiten; erst der verbundene Server kann mit den richtigen Schlüsseln etwas damit anfangen.
Das The Things Network existiert aktuell in zwei Versionen: Es gibt das ältere v2-Netz und das neue v3-Netz. Pakete von im v2-Netz eingebuchten Gateways werden auch an das v3-Netz weitergeleitet. Wenn Sie bestmöglich etwas zur Erweiterung des TTN beitragen wollen, tragen Sie das Gateway im v2-Netz ein. Temporäre TTN-Mapper-Experimente können Sie auch direkt über v3 durchführen. Sofern Sie schon einen TTN-Account haben, funktioniert dieser auch in der TTN-v3-Konsole – wenn nicht, benötigen Sie zur Registrierung im Netz nur eine E-Mail-Adresse. Informationen zur Eintragung finden Sie über ct.de/y4jc.
TTN einrichten
Die Tracker sind im The Things Network typische LoRaWAN-Geräte und benötigen somit eigene Zugangsdaten, die mit der Firmware auf das Gerät geschrieben werden müssen. Damit die Tracker auch nach Abschaltung des TTN-v2-Netzes Ende 2021 funktionieren, sollten Sie die Geräte direkt im v3-Netz registrieren. Das funktioniert auch, wenn die Gateways im v2-Netz registriert sind, da die Daten von v2 nach v3 geroutet werden, aber nicht umgekehrt.
Öffnen Sie die TTN-v3-Konsole (https://eu1.cloud.thethings.network) im Browser und melden Sie sich mit den Zugangsdaten an, die Sie auch auf den v2-Websites einsetzen („The Things ID“). Wechseln Sie in das „applications“-Menü und klicken Sie auf „Add application“. Vergeben Sie eine „Application ID“, etwa „<IhrBenutzername>-ttntracker“ und optional Namen und Beschreibung, dann klicken Sie auf „Create application“. Im folgenden Menü klicken Sie links auf „End devices“ und dann auf „Add end device“, um ein neues Gerät hinzuzufügen. Wechseln Sie in den Reiter „Manually“ und wählen Sie „ABP“ als „Activation mode“ aus; die LoRaWAN-Version ist 1.0.2 (REV B), alle anderen Parameter bleiben unverändert. Bestätigen Sie mit „Start“. Im nächsten Menü müssen Sie nur eine „End device ID“ vergeben; die DevEUI generiert das TTN automatisch und die restlichen Felder sind optional. In den „Network layer settings“ wählen Sie „Europe 863-870 MHz [..]“ mit SF9 aus, klicken bei „Device address“ und „NwkSKey“ jeweils auf die zwei Pfeile, sodass die Konsole die Werte generiert und setzen in „Advanced settings“ den Haken bei „Reset Frame Counters“. In den „Application layer settings“ generieren Sie gleichermaßen den „AppSKey“ und bestätigen alle Angaben mit „Add end device“. Lassen Sie den Browser-Tab offen, Sie benötigen die Schlüssel später zur Programmierung der Tracker.
Ein LoRaWAN-Paket enthält – um Sendezeit und damit auch Energie zu sparen – keine Auszeichnungen und Parameterbeschreibungen, wie man sie etwa von einer JSON-API kennt. Stattdessen ist festgelegt, an welcher Stelle des immer gleich langen Datenpakets welche Informationen stehen. Das Dekoder-Skript erzeugt aus dem Paket ein menschenlesbares JSON-Objekt direkt im TTN, das man über die APIs und den TTN Mapper direkt verwenden kann. Öffnen Sie die TTN-v3-Konsole in einem weiteren Tab und öffnen Sie Ihre neue TTN-Tracker-Anwendung. Im Untermenü „Payload formatters/Uplink“ wählen Sie „JavaScript“ als „Formatter type“ aus. Über ct.de/y4jc finden Sie den JavaScript-Code und fügen diesen direkt in das Feld ein; klicken Sie „Save changes“, dann ist der Dekoder bereit.
TTN Mapper einrichten
Der TTN Mapper benötigt keine Anmeldung und nutzt eine „Integration“, eine Funktion des TTN, um Daten an Endpunkte im Internet weiterzuleiten. Die Aktivierung fällt leicht, denn für den TTN Mapper gibt es eine Vorlage. Klicken Sie in Ihrer Anwendung links auf „Integrations/Webhooks/Add webhook“ und wählen Sie die Vorlage „TTN Mapper“. Die Webhook ID können Sie beliebig vergeben, die E-Mail-Adresse sollte gültig sein; bestätigen Sie mit „Create ttn mapper webhook“.
Der TTN Mapper ist jetzt einsatzbereit. Falls Sie Ihr Gateway nicht dauerhaft im TTN belassen möchten oder wenn der Gateway-Standort noch nicht final ist, sollten Sie die an den TTN Mapper übertragenen Messwerte als „Experiment“ deklarieren. Klicken Sie dazu in der Webhook-Liste auf die TTN-Integration und fügen Sie unter „Additional headers“ einen neuen „[..] header entry“ hinzu. In das Feld „Authorization“ kommt „TTNMAPPERORG-EXPERIMENT“; ins Feld daneben tragen Sie einen möglichst individuellen Namen ein, mit dem Sie Ihre Messdaten im TTN Mapper wiederfinden können.
Flash-Vorbereitung
Die Anpassung der Parameter und Installation der Firmware läuft in der Arduino-Entwicklungsumgebung „Arduino IDE“. Laden Sie die Software für Ihr jeweiliges Betriebssystem von https://arduino.cc herunter und installieren Sie sie.
Da die Arduino-IDE von Haus aus nur Arduinos kennt, müssen Sie zunächst die Board-Definitionen für den ESP32 (T-Beam) und die STM32-MCUs (T-Beam) hinzufügen. Das klappt mit wenigen Schritten über die interne Boardverwaltung. Öffnen Sie über „Datei“ die Voreinstellungen. Im unteren Teil des Fensters gibt es das Feld „Zusätzliche Boardverwalter-URLs“. Fügen Sie hier „https://dl.espressif.com/dl/package_esp32_index.json“ und „https://github.com/stm32duino/BoardManagerFiles/raw/master/package_stmicroelectronics_index.json“ durch Kommata getrennt hinzu. Anschließend öffnen Sie über Werkzeuge/Board den Board-Verwalter und suchen nach „ESP32“ sowie „STM32 MCU based boards“ und installieren wahlweise einen oder beide. Der T-Motion-Stick benötigt zusätzlich den STM32CubeProgrammer – eine Schnittstellen-Software, um STM32-Mikrocontroller zu programmieren. Den Link zum Download finden Sie über ct.de/y4jc. Starten Sie nach der Installation Ihren Rechner neu.
Damit die Komponenten der Sticks funktionieren, müssen Sie einige Bibliotheken in der Arduino-IDE herunterladen. Öffnen Sie dazu über „Werkzeuge“ das Untermenü „Bibliotheken verwalten“. Suchen Sie nach „mcci catena“ und installieren Sie die „MCCI Arduino LoRaWAN Library“ für das LoRa-Modem. Auch wenn Sie kein Display verbinden, benötigt die Arduino IDE die Bibliothek, um den Code zu kompilieren; geben Sie „esp8266-oled-ssd1306“ in die Suche ein und installieren Sie den „ESP8266 and ESP32 OLED driver for SSD1306 displays by ThingPulse,...“.
Die Bibiotheken für den GNSS-Empfänger und das Akkumanagement gibt es zwar nicht direkt in der Bibliotheksverwaltung zur Ein-Klick-Installation, das Hinzufügen ist aber ähnlich leicht: Über ct.de/y4jc finden Sie Download-Links zu den ZIP-Dateien auf GitHub. Entpacken Sie diese Dateien und kopieren Sie sie in den „libraries“-Ordner von Arduino. Unter Windows und macOS liegt der meist im Arduino-Ordner des Benutzer-Dokumentenordners; unter Linux entweder auch dort oder direkt im Arduino-Ordner.
Damit die LoRaWAN-Bibliothek den korrekten Frequenzplan und den passenden LoRa-Modemtyp verwendet, müssen Sie im „libraries“-Ordner unter „arduino-lmic/project_config“ noch eine zweizeilige Konfigurationsdatei mit dem Namen „lmic_project_config.h“ anlegen. Das können Sie mit einem beliebigen Editor erledigen. Tragen Sie die Parameter
#define CFG_eu868 1 #define CFG_sx1276_radio 1
ein und speichern Sie die Datei.
Firmware- und Flashkonfiguration
Rufen Sie ct.de/y4jc im Browser auf und laden Sie über den in der Liste angezeigten Link die ZIP-Datei mit der für Ihre Hardware passenden Firmware herunter. Anschließend extrahieren Sie die Dateien in einen Ordner, öffnen darin den Unterordner „main“ und starten die Arduino-IDE mit einem Doppelklick auf „main.ino“. Wenn die Dateiendung nicht verknüpft ist, starten Sie die IDE händisch und öffnen „main.ino“ über das „Datei“-Menü.
Um den T-Motion-Stick zu flashen, stellen Sie unter „Werkzeuge/Board/STM32 boards groups“ den Typ „Nucleo_64“ ein. Danach tauchen unter „Werkzeuge“ eine Reihe neuer Parameter auf. Setzen Sie „Upload method“ auf „STM32CubeProgrammer (DFU)“, „C Runtime Library“ auf „Newlib Nano + Float Printf“, „Optimize“ auf „Fast (-O1)“, „USB support“ auf „CDC (generic [..])“ und die „Board part number“ auf „Nucleo L073RZ“. Fahren Sie im Absatz „Funkschnittstelle konfigurieren und Flashen“ fort.
Den T-Beam können Sie unter „Werkzeuge/Board/ESP32 Arduino“ direkt aus der Liste auswählen. Danach müssen Sie nur noch im gleichnamigen Menü den richtigen Port einstellen und das System ist bereit zum Flashen. Der T-Beam muss dazu per USB verbunden sein. Wenn Sie sich nicht sicher sind, welcher Port der richtige ist, schauen Sie in der Dokumentation Ihres Betriebssystems nach, wie Sie alle seriellen Schnittstellen anzeigen lassen können. Die Platine nutzt einen USB-Seriell-Konverter; in der Regel erkennen Sie in der Schnittstellenübersicht anhand der Parameter oder der Bezeichnung, welche serielle Schnittstelle per USB verbunden ist.
Funkschnittstelle konfigurieren und Flashen
Die zuvor erzeugten LoRaWAN-Schlüssel müssen mit in die Firmware eingebacken werden. Wechseln Sie dazu in der Arduino IDE in die Registerkarte „credentials.h“ und dann im Browser zum zuvor offenen gelassenen Browser-Tab mit Ihrem neuen LoRaWAN-Gerät. In der Übersicht sehen Sie unter „Service Information“ die benötigten Parameter: Kopieren Sie zunächst die „Device address“ und ersetzen Sie die vorhandene „DEVADDR“ im Programmcode. Die Leerzeichen müssen dabei entfernt werden; achten Sie jedoch darauf, dass das „0x“ davor und das Semikolon am Ende stehen bleiben. Anschließend ersetzen Sie den „NwkSKey“ und den „AppSKey“ im Code; dazu klicken Sie jeweils auf das Auge neben dem Feld, wählen „< >“ für die hexadezimale Schreibweise und ersetzen die gleich bezeichneten Schlüssel im Code. Mit vertauschten Schlüsseln scheitert die Kommunikation, prüfen Sie die Angaben also sorgfältig.
In der „configuration.h“ befinden sich unter anderem die Einstellungen für die Sendehäufigkeit und der verwendete LoRa-Spreizfaktor (SF), der die Ausgangsdatenrate und Empfangsempfindlichkeit am Gateway beeinflusst. Hier kann man keine beliebigen Konfigurationen verwenden: Der von LoRaWAN in der EU verwendete Frequenzbereich bei 868 MHz besitzt mehrere regulatorische Einschränkungen hinsichtlich der Sendedauer, die Sie einhalten müssen, um nicht in Konflikt mit dem Gesetz zu kommen. Für die LoRa-Kanäle gilt neben der Einschränkung auf 25 mW Sendeleistung auf den meisten Frequenzen auch die Beschränkung des Arbeitszyklus auf ein Prozent pro Stunde, um Störungen zu vermeiden. Das heißt, dass maximal 36 Sekunden pro Stunde gesendet werden darf. Bei 10 Byte Nutzlast und SF12 (250 Bit pro Sekunde) entspricht das gerade einmal 24 Paketen pro Stunde, also alle anderthalb Minuten eines – wenig sinnvoll für einen Tracker, der sich schnell bewegt. Um möglichst viele Messpunkte zu sammeln, sollten Sie für kleinere städtische Umfelder SF7 (5470 Bit/s) nehmen, in ländlicheren Umgebungen SF9 (1760 Bit/s) – so können Sie alle 6 beziehungsweise 21 Sekunden einen Standort senden. Langsamere Spreizfaktoren sollten Sie nicht verwenden, da das Gateway in der Regel mit SF9 zurücksendet, wenn der Schlüsselaustausch beim Aktivierungsverfahren OTAA erfolgt. Setzen Sie „SEND_INTERVAL“ auf die gewünschte Sendehäufigkeit in Millisekunden und „LORAWAN_SF“ auf den gewünschten Spreizfaktor, beispielsweise „DR_SF7“. Danach ist die Firmware bereit fürs Flashen.
Wechseln Sie zur Registerkarte „main“ und klicken Sie zunächst den Haken unterhalb von „Datei“, um die Firmware zu kompilieren. Einen bereits angestecken T-Beam können Sie direkt flashen (Rechtspfeil neben dem Haken); den T-Motion-Stick müssen Sie mit gedrückt gehaltener Boot-Taste – sie sitzt neben dem Antennenanschluss – in eine USB-Buchse einstecken. Dann können Sie wie beim T-Beam den Flashvorgang starten.
Nach dem Flashen des T-Beam können Sie „Serieller Monitor“ in „Werkzeuge“ öffnen und verfolgen, ob die Firmware normal startet. Der T-Motion stellt nach dem Neustart eine neue serielle Schnittstelle zur Verfügung, die Sie zunächst unter „Werkzeuge/Port“ einstellen müssen, damit der serielle Monitor funktioniert. Passiert nichts, drücken Sie den Button auf dem T-Motion beziehungsweise beim T-Beam den Knopf ganz rechts kurz, sodass die Bootnachricht ausgegeben wird. Haben Sie etwas Geduld: Bis zur ersten Positionsangabe dauert es in der Regel mehrere Minuten. In der Nähe eines Fensters gehts schneller. Im Menü „Live data“ in der TTN-Konsole können Sie anschließend die eingehenden Pakete beobachten, sobald ein GPS-Fix vorhanden ist (und Ihr Gateway in Reichweite ist).
Auswertung
Sobald die ersten Positionen in der Live-Anzeige eingegangen sind, können Sie auf https://ttnmapper.org gehen und über „Advanced Maps“ entweder anhand der „Device [..]“ oder der „Gateway ID“ beziehungsweise des „Experiment Name“ Ihre Messpunkte ansehen. Der Screenshot links auf dieser Seite zeigt die Testmesswerte eines Dragino LPS8 [2]. Optional können Sie die Daten mit einem Klick auf „CSV data“ exportieren. Unter Umständen zeigt der TTN Mapper auch nur die Messpunkte ohne Gateway-Standort an; das passiert, wenn Sie den Standort entweder nicht freigegeben haben („Public“) oder der TTN Mapper es noch nicht in die Datenbank aufgenommen hat – das kann einige Stunden dauern.
Machen Sie sich mit dem Interface vertraut: Klicken Sie beispielsweise auf das Gateway-Symbol auf der Karte, können Sie sich die Abdeckung als buntes Radar oder Einfärbung auf der Karte anzeigen lassen (alpha shape). Eine umfangreiche Erkundungstour können Sie mit den Daten des auf Seite 68 getesteten Lorix One machen. Die Gateway ID lautet FCC23DFFFE0B634C und das Gateway läuft seit rund fünf Monaten auf dem Goslarer Steinberg (470 Meter NHN).
Gehäuse
„Nackt“ will man die Platinen nicht einsetzen, denn ihre SMD-Bauteile können leicht beschädigt werden. Wenn Sie einen 3D-Drucker haben, können Sie das Problem leicht lösen: Gehäusevorlagen für beide Platinen gibt es zuhauf auf Portalen für kostenfreie 3D-Modelle wie Thingiverse. Unter ct.de/y4jc haben wir passende verlinkt.
Alternativ können Sie das Gehäuse auch online bei einem 3D-Druckdienst bestellen. Das kostet meist etwas mehr, lohnt sich aber dennoch, weil das Gehäuse garantiert passt und professionell aussieht. Ist der Tracker in einem Gehäuse sicher verpackt, kann das LoRaWAN-Mapping losgehen. (amo@ct.de)
Dokumentation, Firmware: ct.de/y4jc