Elecrow ESP32 Basic LoRaWAN-Gateway und The Things Network: Firmware und Konfiguration
LoRa, was ist das?
Nein, LoRa ist nicht der Name meines Papageis, der aufdringlich nach einem Keks verlangt, sondern LoRa steht für Long Range. Das ist ein spezielles Funk-Übertragungsverfahren, dass auf Störunanfälligkeit, und niedrigen Stromverbrauch getrimmt wurde. Dazu nutzt es eine Chirp-Spread-Spectrum-Modulationstechnik der Semtech Corporation. Das breite Spektrum und die Wellenform bietet eine geringe Störanfälligkeit und damit eine große Reichweite.LoRa ist also gut für:
- hohe Reichweite
- niedrigen Stromverbrauch
Und was ist LoRaWAN?
LoRa ist aber auch genau dafür gedacht: kurze Datenpakete von Sensoren zu einem Gateway zu senden, welches diese dann ins Internet weiterleitet. Diese Anwendung nennt man dann LoRaWAN. Es gibt auch noch andere Anwendungen und Protokolle für LoRa (wie Meshtastic), aber heute geht es um LoRaWAN.Ein Endgerät (oder End Device) schickt sein Paket, zum Beispiel die Temperatur und die Luftfeuchtigkeit in einem Gewächshaus immer zu einem Gateway, zum Beispiel ein kleiner Server auf einem landwirtschaftlichen Betrieb. LoRa kann bei freier Sichtlinie Kilometer überbrücken. Und braucht eben nicht viel Energie, so das es auch möglich ist, die Endgeräte mit Akkus zu betreiben.
Das LoRaWAN-Gate nimmt die Datenpakete von den Endgeräten entgegen und schickt sie weiter ins Internet. Wir benutzen hier The Things Network. Dort kann man sich die Messages der Endgeräte nach Anwendung bündeln und sich anzeigen lassen. Oder man leitet sie weiter zu einem eigenen Webserver.
An diesen Webserver könnte man dann wieder Steuerungselektronik anschließen, um zum Beispiel mehr Wasser zuzuführen, wenn es im Gewächshaus zu trocken geworden ist.
Wie ich auf LoRaWAN gestoßen bin
Es ist schon ein paar Jahre her, da bin ich auf den TTGO T3 LoRaWAN OLED ESP32 gestoßen. Auf dem war eine Software namens PAXCNT (PaxCounter) vorinstalliert, die die nähere Umgebung nach Bluetooth-Geräten absucht und dann daraus errechnet, wieviele Personen sich wohl im näheren Umkreis befinden. Vielleicht ganz praktisch, um den Run in den Kantine abzuwarten und zu sehen, wann ein Konzert oder Fußballspiel vorüber ist.Ich fand das Thema auf jeden Fall spannend. Allerdings hatte ich ein Problem: Ein LoRaWAN-Endgerät braucht auch immer ein LoRaWAN-Gateway zum Kommunizieren. Da gab es sogar eines bei mir in der Gegend. Trotzdem musste ich immer ins Auto steigen und in die Nähe des LoRaWAN-Gateways fahren, um meinen PaxCounter zu testen. Was dann doch sehr nervig war. Und LoRaWAN-Gateways kostete damals eine Stange Geld, weil sie auf vielen LoRa-Kanälen parallel lauschen "müssen". Also wurde ich nie so richtig warm, meine eigene LoRaWAN-Applikation zu designen und zu programmieren.
Irgendwann kann dann Maarten Westenberg aka Things4u, wohl mehr als Proof-of-Concept, auf die Idee, ein günstiges LoRaWAN-Gateway mit nur einem Kanal mit einem günstigen Endgeräte-Transceiver-Chip zu basteln.
Das Projekt war ein Erfolg und hat gut funktioniert und andere haben es adaptiert, so auch Elecrow, die daraus ihr Basic LoRaWAN-Gateway mit einem ESP32 gezaubert haben.
Damit rückte ein eigenes Gateway mit Kosten von nur rund 25 Euro in finanzielle Reichweite.
Das Basic LoRaWAN Gateway Module von Elecrow
|
![]() ![]() |
Das Elecrow LoRaWAN Gateway Module bietet kurz umrissen:

- 1 Channel LoRaWAN-Gateway
- EU 868 MHz
- ESP32 WROOM 32 chip
- RA-01H Module (SX1276 LoRa-Chip)
- 128*160 SPI-TFT-LCD (ST7735S Chip)
- WLAN und LAN
- zwei vernünftige Antennen für 868MHz und 2.4 GHz WLAN
- Stromversorgung über USB-C
- von außen zugängliche Reset und Boot Taster
- Power (rot) und Transfer (blau) LED
Die Konfiguration des Gateways
Tja, die ist leider gar nicht so einfach und hält so einige Fallstricke bereit. Mich hat es viele Stunden Debugging und Herumprobieren gekostet, bis ich das Gateway endlich am Laufen hatte. Plug and Play ist also leider nicht.Ich versuche, euch hier eine Anleitung zur Verfügung zu stellen, mit der es klappt. Ihr müsst euch einfach nur dran halten, dann wird das was und ihr müsst nicht fast dem Wahnsinn verfallen, so wie ich.
Hardware: Die richtige Antenne an die richtige Buchse

Die beiden mitgelieferten externen Antennen machen erst einmal einen guten Eindruck. Sie ähneln sich aber auch wie ein Ei dem anderen. Doch wenn man genau hinsieht, hat die eine einen Aufdruck, den man eigentlich nur erkennen kann, wenn das Licht schräg darauf fällt: TX868-JK-11.
Das ist die LoRa Antenne für 868 MHz. Und die gehört natürlich auf die LoRa-Buchse geschraubt. Logisch. Nicht verwechseln, sonst ist euer Empfang unterirdisch. By the way: Das Gerät bitte nie ohne Antennen benutzen. Das tut den Chips eventuell nicht gut, wenn sie die Sendeenergie nicht richtig abführen können.
Dann schaltet ihr das Gateway ein. Das macht dann einen WLAN Access Point unter der IP-Adresse 192.168.4.1 (wird angezeigt) auf. Dann wählt ihr, am besten auf eurem Smartphone, das Netzwerk ELECROW-GW1C aus. Daraufhin müsst ihr ein Passwort für die Verbindung eingeben (WPA2). Hier lauert auch schon der erste, böse Stolperstein.
Kein Anschluss unter der Nummer 12345678

Wenn ihr die Gateway-Firmware-Version habt, die das Bild rechts mit dem WLAN-Passwort 12345678 anzeigt, dann seid gewarnt: Ihr könnt hier ewig oft das richtige Passwort, nämlich 12345678 eingeben, ihr werdet trotzdem immer einen Authentifizierungsfehler bekommen.
Zumindest hatte ich das auf allen meinen Systemen, von altem Samsung Smartphone, über iPhone, über Xiaomi Android Smartphone, unter Windows, unter Linux, überall!
Das scheint irgendwie daran zu liegen, dass 12345678 wohl ein zu einfaches Passwort ist und von WPA2, oder weiß der Teufel was, generell nicht akzeptiert wird. Da muss man auch erst einmal drauf kommen.
Wir brauchen eine neue Firmware
Also müssen wir das Passwort ändern. Jetzt könnte man auf die Idee kommen, einfach das Passwort im Source-Code der Firmware zu ändern. Die kann man auf der GW1C-Produktseite unter Factory Program nebst der Libraries auch herunterladen. Bzw. über Github.Nur wird euch das wenig nutzen, es sei denn ihr wollt in einen Kaninchenbau eintauchen, aus dem ihr vielleicht nicht mehr geistig gesund herauskommt. Ich habe jedenfalls versucht, die Firmware zu kompilieren, unter Android IDE 1.8.x, unter Android IDE 2.3.x und unter VS Code mit Platform IO. Obwohl die Libraries scheinbar mitgeliefert werden, gibt es da Ungereimtheiten bei den Abhängigkeiten. Mal ist byte gleich in mehreren Bibliotheken definiert. Hat man stattdessen uint8_t geschrieben und diesen Fehler korrigiert, taucht der nächste auf und dann wieder einer, und noch einer und noch einer. Und irgendwann habe ich aufgegeben.

Vergesst also diesen Weg. Es gibt einen einfacheren. Holt euch das V2-Firmware-Binary. Das ist nämlich schon mit einem neuen Passwort (aaaabbbb) kompiliert. Danke an den Elecrow-Support an dieser Stelle. Es ist zu finden unter https://github.com/Elecrow-RD/LoRaWAN-Gateway-Module-Based-on-ESP32-with-1.8-LCD/tree/master/factory_firmware/Lora_Gateway_release_bin_v2.0.
Das ist nämlich schon ein komplett fertige kompiliertes Firmware-Update mit dem neuen Passwort. Da ihr nichts kompilieren müsst, gibt es auch keine zig Compiler-Fehlermeldungen, die wir mühsam umschiffen müssten. Dass so etwas sehr langwierig und mühsam sein kann, habe ich bei meinem CYD-Projekt mit der TFT_eSPI-Library schmerzlich lernen müssen. Ich nenne das die "Library-Versions-Hölle". Das ist für Mikrocontroller das, was unter Windows als "DLL-Hölle" bekannt ist, nur noch ein bisschen schlimmer.
Stellt sich nun die Frage, wie man ein Firmware-Binary auf seinen ESP32 im Gateway bekommt. Das habt ihr persönlich vielleicht noch nicht gemacht, aber bei den Herstellern wird natürlich nicht jedes einzelne Gerät per Arduino IDE bestückt, sondern es gibt dafür extra ein Tool, um eine fertige Firmware auf einen ESP32 zu schieben.
Firmware mit Espressif ESP32 Flash Download Tool flashen
Das Tool habe ich schon einmal ausführlich vorgestellt in meinem Artikel Odroid Go (ESP32 Gameboy Clone): alternative Über-Firmware installieren. Auch der Odroid Go hat einen ESP32 on Board. Es ist also im Grunde dasselbe. Wie es genau vom Prinzip her geht, könnt ihr also im Odroid-Artikel nachlesen, für den Unterschied zum Gateway soll uns hier ein Screenshot reichen:
Wichtig: Wenn ihr das Gateway dann einmal konfiguriert habt (kommt gleich) und da was falsch gemacht habt und wollt die gespeicherten Konfigurationsdaten wieder loswerden, klickt vor den Start einmal Erase an. Sonst bleiben die Daten erhalten und ihr müsst noch einmal flashen.
Grundsätzlich muss das Gateway natürlich im Flash-Modus sein. Dazu Boot drücken und halten, kurz Reset drücken, dabei weiterhin Boot halten und zum Schluss auch Boot loslassen. Das müsst ihr ggf. vor jeder Aktion machen, also vor jedem neuen Flash oder Erase.
Einen Schritt weiter, aber noch lange nicht am Ziel
Jetzt endlich können wir uns mit der neuen Firmware über den GW1C-WLAN-Access Point und dem Passwort konnektieren Endlich wird das Passwort aaaabbbb akzeptiert, wohl, weil es nicht mehr nur aus Ziffern besteht.
Als nächstes müssen wir sehr sofgfältig sein und aufpassen, dass wir auch das richtige eingeben. Denn sonst müssen wird die Config zurücksetzen, was nur geht, indem wir das Flash Erasen und wieder neu flashen. Was mit der Zeit echt nervt.Glaubt mir, ich habe viele Config-Kombinationen ausprobiert, bis ich eine hatte, die gepasst hat. Ich habe zweistellig neu geflasht. Das nervt irgendwann sehr. Und glaubt mir auch einfach, dass die Daten so sein müssen, wie nachfolgend beschrieben. Wenn ihr das nicht wollt: viel Spaß beim Probieren und flashen! Und vergesst nicht, das Alles muss später auch vom The Things Network akzeptiert werden. Wenn da irgendwas nicht passt, was hier angegeben werden muss: Willkommen zur nächsten Iteration!
- Nehmt als Net-Mode WIFI, also WLAN. Ich bin mir nicht sicher, ob die Ethernet-LAN-Schnittstelle geht. Ich hab sie nicht weiter getestet, weil ich mein Gateway eh mobil haben will: mal dieses Fenster, mal ein anderes probieren. Wo es halt die beste Abdeckung hat. Und da verlege ich bestimmt nicht jedesmal ein LAN-Kabel.
- Der Name eures WLANs (WiFi SSID) und das Passwort dazu (WiFi PASS) kennt ihr sicher. Ansonsten schaut in eurem Router in dessen Config nach. Manchmal steht der Kram auch auf der Rückseite des Routers auf einem Aufkleber. Dumm, wenn man das dann irgendwann geändert hat. Nein, im Ernst: ändert das Standard-Passwort. Ist sicherer. Warum gnau erkläre ich euch vielleicht ein anderes mal.
- jetzt kommt das Wichtigste: Bei Gateway ID dürfen nur Ziffern eingegeben werden, und zwar genau 16 an der Zahl. 16 Ziffern. Nicht mehr und nicht weniger. Naja, eigentlich 8 Bytes in hexadezimaler Schreibweise. Aber nur Ziffern ist sicherer. Herumspielen könnt ihr später noch, wenn ihr sicher seit, dass ihr eine Config habt, die funktioniert, und auf die ihr zurück könnt.
- SERVER ADDR und SERVER PORT sind fest und bleiben so.
- Unsere REGION in Deutschland ist EU686. EU steht für Europa und 868 für die Funkfrequenz von 868 MHz. Ich hoffe, ihr habt euch auch einen 868MHz-Gateway gekauft. Unbedingt beim Kauf auf die richtige Frequenz achten!
- Der CHANNEL bleibt bei 0. LoRa kennt die Channel 0 bis 12. Normalerweise wird bei 0 zuerst versucht. Also haben wir mit Channel 0 am schnellsten Erfolg. Dran denken: unser günstiges Gateway bedient nur einen Channel und nicht mehr.
- SF steht für Spread Factor und gibt an, wie breit das Signal ist. Ein hoher SF (bis 12) hat eine höhere Reichweite und ist langsamer. Ein niedriger SF (7) bedeutet: nicht so weit, dafür aber schneller. Wir lassen den SF erst einmal bei 7. Ich bin mir auch nicht sicher, ob ich mit einem hohen SF die Reichweite bei der vorliegender Hard- und Software erhöhen kann; das muss ich erst noch austesten. Auch hier gilt: Erst einmal zum Rennen bringen, Rumspielen können wir noch später. Nachtrag 2025-10-23: ich habe den SF jetzt auf 12 geändert (und wieder mal neu flashen und konfigurieren). Das verspricht die größte Reichweite. Geschwindigkeit ist für mich sekundär. TTN, bei dem "Frequency plan: Europe 868.1 MHz" eingestellt ist, beschwert sich nicht und erkennt das Gateway mit alten Einstellungen an.
- Die TIME ZONE ist die Zeitzone. Das ist für Deutschland physikalisch immer UTC+01. Rechtlich schwankt das: UTC+01 für "Winter"-Zeit und UTC+02 für "Sommer"-Zeit. Was für ein Unsinn "Winter"-Zeit und "Sommer"-Zeit eigentlich sind und das die Physik am Ende doch immer siegt, darüber lasse ich mich vielleicht mal an anderer Stelle aus. Ich stelle für mich hier UTC ein. Dann seh ich immer gleich, dass die Zeit um eine oder zwei Stunden von der rechtlichen Zeit abweicht und das ich wohl UTC genommen habe. Ich werde nämlich bestimmt nicht alle halbe Jahr mein Gateway neu flashen, nur weil es die Politik nicht auf die Reihe kriegt, die "Sommerzeit" abzuschaffen.
Nachdem wir nochmal nachgezählt haben, dass die Gateway ID auch genau 16 Ziffern hat und wir die so gewählt haben, dass sie garantiert einmalig ist, können wir auf Submit klicken. Für die Einmaligkeit der Gateway ID ist vielleicht das ein Kochrezept: nehmt für die ersten acht Stellen das Datum im Format YYYYDDMM und danach noch weitere acht zufällige Ziffern, oder meinetwegen auch euer Geburtsdatum, wenn ihr es persönlich haben wollt. Hauptsache, jemand anderes auf der Welt hat nicht schon diese Gateway ID reserviert. Denn dann funktioniert nichts. Und ihr bekommt auch keine Fehlermeldung.

Nach dem Submit dauert es ein paar Sekunden, dann kommt ein WiFi Config und dann der Status Screen des Gateways - bei euch steht da natürlich eine andere Nummer hinter "ID:" und die Region auf "EU868". Aber der Rest ist gleich.
Dieser Status Screen sieht immer so aus. Egal, ob ihr euch mit der Config beim The Things Network (kurz TTN) als Gateway anmelden könnt oder nicht. Also egal, ob eure Config fehlerhaft oder fehlerfrei ist.
Mehr Infos gibt es nur, wenn ihr das Gateway an den PC anschließt und dort auf dem COM-Port mit einem Terminal-Programm lauscht. Wer nicht weiß, wie das geht, dem empfehle ich meinen Artikel Raspberry Pi Pico: Erste Schritte empfehlen, sucht darin nach "PuTTY".
Ihr merkt höchstens, dass euer Gateway funktioniert, wenn RX und TX auf dem Status Screen hochzählen, aber das wird nie der Fall sein, wenn ihr euer Gateway nicht auch bei The Things Network anmeldet.
Das Gateway bei TTN anmelden
Zu allererst braucht ihr einen Account bei TTN. Gebt https://console.cloud.thethings.network/ in eurem Browser an, dann werdet ihr schon nach einem Account gefragt, bevor ihr weiter machen könnt. Dann solltet ihr auf der Seite "Europe 1" als euren Heimat-Cluster auswählen.Damit ist dann https://eu1.cloud.thethings.network/console eure neue TTN-Heimat und dessen Dreh- und Angelpunkt.
Oben rechts findet ihr in eurer TTN-Console dann den Button "Register gateway". Den müssen wird klicken. Denn ohne dass das TTN über unser Gateway Bescheid weiß, kann auch keine Verbindung und Kommunikation zwischen TTN und unserem Gateway zu Stande kommen.Hier geben wir unsere Gateway ID aus der Gateway-Konfiguration ein, und zwar genauso, wie dort angegeben. Die Spaces werden automatisch eingefügt wegen der Lesbarkeit. Die können wir ignorieren:

Gleich mal als Warnung vorweg: Wenn ihr auf der TTN etwas falsch eingebt, dann könnt ihr das später nicht mehr ändern. Es gibt keine Edit-Funktion. Ihr könnt nur das Gateway löschen und nochmal neu eingeben. Was für ein Spaß, wenn man probieren muss/will!
Dann machen wir noch ein paar weitere Angaben:

Wichtig. Bei Gateway ID geben wir zuerst eui- ein und dann die Ziffern aus unser darüber liegenden Gateway EUI. Das muss genau gleich sein (ohne die Leerzeichen natürlich), sonst funktioniert das Gateway nicht. Bei Gateway name dürfen wir dann endlich ein wenig kreativ sein und uns einen Namen für unser Gateway ausdenken, an dem wir es gut wiederkennen. Falls wir irgendwann mal mehr als ein Gateway haben sollten, um sie auseinanderzuhalten.
Dann überprüfen wir nochmal alles, ob auch alles genau stimmt - letzte Gelegenheit Fehler zu korrigieren - und klicken dann auf Register gateway ganz unten.
Jetzt bleibt abzuwarten und zu hoffen, dass die Daten auf Gateway und TTN übereinstimmen und akzeptiert werden und das aus dem This gateway has not made any connection attempts yet. rechts irgendwann in Bälde ein "Gateway status mit Connection stats" wird, weil unser Gateway den Weg zum TTN gefunden hat. Und dafür müssen die Daten eben exakt überstimmen bzw. auf die geschilderte Weise ergänzt werden.
Bis es soweit ist, kann man die Geo-Koordinaten des Gateways unter Location eintragen. TTN erwartet die Koordinaten im "Dezimalgrad-Format". Mit dem Koordinaten-Umrechner auf GPS-Cache.de kann man aber fast jedes Format nach dahin umrechnen.
Sind schon Koordinaten hinterlegt, vielleicht in der Nähe von Shenzhen, China - da wo der Hersteller seinen Sitz hat - muss man erst Remove location data anklicken, bevor man die Koordinaten mit Set location manually manuell eingibt. Sonst werden die nicht überschrieben.
Und wenn das unser Gateway connected hat und online ist, kann man dann sein Gateway auf der Karte wiederfinden mit seiner Gateway-ID, etwa "eui-2025081512345678". Einen sprechenderen Namen kriegt man leider nicht hin mit diesem Gateway.
Da unser Gateway ja dann der öffentlichen LoRaWAN-Infrastruktur zur Verfügung steht, können auch andere ihre LoRaWAN-Messages über unser Gateway versenden. Und die wollen vielleicht sehen, wo sich das Gateway genau befindet, um evtl. etwas näher heranzufahren und einen besseren Empfang zu haben.
Und wenn viele mitmachen, gibt es vielleicht iregendwann ein flächendeckendes Netz von LoRaWAN-Gateways, so dass man überall seine LoRaWAN-Messages absetzen kann. Wie wäre es dann mit einen Endgerät mit GPS-Chip versteckt am Fahrrad? Um seine Radtouren aufzuzeichnen? Oder zu sehen, wo sein Fahrrad ist, wenn es mal gestohlen wurde? Da gibt es reichlich Anwendungsfälle. Allerdings muss sich ein LoRaWAN-Gateway in Empfangsreichweite befinden. Aber da LoRa ja eine hohe Reichweite hat, reicht alle paar Kilometer ein Gateway.
Ein Gateway muss was zu tun haben...

Okay, TTN sagt: unser Gateway ist online. Aber so richtig getestet haben wir es ja noch nicht. Für einen Test brauchen wir mindestens ein Endgerät, das eine Message absetzen will.
Also krame ich meinen TTGO T3 LoRaWAN OLED ESP32 heraus, auf dem noch PAXCNT (PaxCounter) installiert ist. Das zählt die Smartphones in der Nähe und schickt den PAX über ein LoRaWAN-Gateway an das TTN für die Weiterverarbeitung.
Im Source-Code im File loraconf.h finde ich die Konfiguration wieder, die ich noch für TTN brauchen werde:
static const u1_t DEVEUI[8] = { 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 };
static const u1_t APPEUI[8] = { 0x70, 0xB3, 0xD5, 0x7E, 0xD0, 0x01, 0xB9, 0x4E };
static const u1_t APPKEY[16] = { [16 Bytes] };
Eine Applikation auf TTN anlegen
Als Erstes brauchen wir für unsere Endgeräte eine Application. Die könnte z. B. in unserem Fall "Personenzählung" oder in einem anderen "Gewächshäuser" heißen. Die Application ist dazu da, mehrere Endgeräte logisch in einer Gruppe zusammenzufassen.Wir klicken also in unserer TTN-Console auf Applications und dann oben rechts auf Add application und füllen dann die Felder aus:

Wählen wir die Application gleich aus. Links sehen wir ein Menü.
Ein End device auf TTN anlegen
Dort wählen wir End devices und klicken dann wieder rechts oben auf Register end device. Dann füllen wir zuerst den allgemeinen Kram aus:
Für die Provisioning information brauchen wir die Daten aus dem Source-Code: DEVEUI, APPEUI und APPKEY.
Wir können hier auch auf die Daten zugreifen, die unser Gateway empfangen hat. Denn bei der Anmeldung werden DEVEUI und APPEUI übertragen. Der APPKEY hingegen ist geheim und die Payload (die eigentlichen Nutzdaten) werden mit diesem verschlüsselt, damit nicht einfach jeder Gateway-Betreiber sehen kann, was da für Messages übertragen werden. Die Messages sind so verschlüsselt und bleiben geheim.
Um die Gateway-Daten einzusehen, gehen wir (am besten in einem zweiten Tab) auf Gateways, wählen unser Gateway aus und dann auf Live data. Dort sehen wir bei einer Anmeldung des PaxCounters unter den letzten Einträgen:

Dort können wir die Daten ins Clipboard kopieren und uns ein bisschen Tipparbeit sparen. Geben wir also die Daten ein. Bitte nicht vertippen, sonst funktioniert nichts und wir müssen wie bei TTN derzeit noch üblich löschen und neu anlegen.

Unser APPEUI aus dem Source-Code entspricht also der JoinEUI auf TTN und DEVEUI ist DevEUI. Der APPKEY und der AppKey müssen übereinstimmen. Entweder den APPKEY aus dem Source-Code bei TTN eintragen. Oder bei TTN einen neuen AppKey generieren und dann im Source-Code eintragen und dann neu kompilieren. Die DevEUI muss natürlich für jedes Endgerät anders sein. Da man dann sowieso pro Gerät neu kompilieren muss, kann man die anderen Werte auch ändern. Das wäre ein bisschen sicherer, aber bei so profanen Daten wie bei uns ist das eher egal.
Dann klicken wir auf Register end device und ab dem Zeitpunkt kennt das TTN unseren PaxCounter und kann ihn zuordnen. Wählen wir unseren ttgo-paxcnt-1 gleich mal aus, dann sehen wir gleich ein paar Daten:

Hier sehen wir, ob unser PaxCounter "durchgekommen" ist und ob er sich verbunden hat und wenn ja, mit welcher Empfangsstärke.

Hier sehen wir die letzten dekodierten Nutzdaten. Allerdings steht hier noch nur "{}" also nichts. Damit hier etwas steht und wir eine brauchbare Message haben, müssen wir noch ein wenig was tun. Da kommen wir gleich zu. Werfen wir zuerst einen Blick in See in live data Hier sollten wir folgende Zeilen finden:

Dies ist die Client-seitige Bestätigung vom PaxCounter des Joins ins TTN.

Und dies ist eine Message, also die Übertragung des Counters ansich. Die "01 00" sind die Nutzdaten. Diese zwei Bytes haben die Byte-Order Low/High und den Wert 1. Der PaxCounter stand also auf 1.
Damit wir diese 1 auch wirklich angezeigt bekommen und nicht nur ein "{}", müssen wir noch etwas tun.
Message Storage aktivieren
Das ist ein easy Schritt. Einfach den Message storage per Klick aktivieren und wir haben einen Platz, wo unsere Messages landen. Hier sehen wir dann alle Messages, die von unserem PaxCounter verschickt worden sind. Das geschieht immer, wenn sich der PaxCounter ändert. Bei mir steht schon etwas drin:
Die 1. Zeile ist das Resultat ohne Payload-Formatter. Die 2. Zeile das Resultat des Standard Payload-Formatters. Und die 3. Zeile ist das Resultat mit unserem eigenen, angepassten Payload-Formatter. Den legen wir jetzt an. Da wollen wir hin.
Einen Uplink payload formatter definieren
Klicken wir links im Menü (unter Applications) auf Payload formatters, und dann auf Uplink. Wir nehmen hier die Perspektive des Endgerätes ein. Uplink heißt also vom Endgerät zum TTN und Downlink ist die andere Richtung: vom TTN zum Endgerät.Ändern wir dann den Default uplink payload formatter wie folgt:
function decodeUplink(input) {
const bytes = input.bytes;
return {
data: {
pax: bytes[1]*256 + bytes[0] // zwei Bytes: Low[0], High[1], "01 00" ist 1 und nicht 256.
}
};
}Und schon haben wir vernünftige Messages. Für jede haben wir ein Datum und eine genaue Uhrzeit. Und den PAX-Wert, so dass wir den Verlauf entsprechend sehen können. Naja, fast. Denn es werden nur die letzten 10 Werte angezeigt. Zum Testen reicht das.
Wenn wir die Werte aber weiterverarbeiten wollen, etwa um eine Verlaufskurve in Excel zu machen, dann brauchen wir natürlich alle Werte. Das geht mit Download. Für Excel und Datenbankimport empfehle ich CSV, wer in seinen Business-Programm lieber JSON benutzt: auch das geht. CSV ist aber kompakter.
Das TTN speichert Messages für 90 Tage, danach werden sie gelöscht und sind verloren. Man muss also regelmäßig seine Messages herunterladen und sich merken, wann man das das Letzte mal gemacht hat. Das geht ja gut nach dem Zeitstempel. Man muss nur dran denken, nicht dass man dann manche Daten zweifach in der Datenbank hat, weil sich der Inhalt des Downloads überschneidet.
Endlich fertig!
Für normale Anwendungen reicht das TTN-Message-System schon aus. Wer allerdings sofort auf Ereignisse seiner LoRaWAN-Engeräte reagieren will, der muss noch einen Schritt weiter gehen und Webhooks definieren. Damit kann man sich dann zum Beispiel den PaxCounter live auf seinem Always On Display anzeigen lassen. Oder einen Alexa Skill programmieren. Dann kann man seinen Echo Dot fragen, wieviele Leute gerade in der Kantine Schlange stehen.Aber das ist ein weiteres Thema, dass ihr in meinem Artikel The Things Network Konfiguration: Mit Webhooks Messages an den eigenen Webserver weiterleiten nachlesen könnt.



