Ein neuer LoRaWAN Node auf Basis des Heltec Wifi LoRa 32

node
heltec-wifi-lora-32
oled
lorawan
iot

#1

Bei dem hier von mir ausgewählten Heltec Wifi LoRa 32 handelt es sich um einen ESP32 mit 0,96“ Oled-Display on Board (Typ SSD1306) sowie einem LoRa Modul. Der Heltec LoRaWAN Node kostet beim Chinesen meiner Wahl knapp unter 20 € incl. Versand. Lieferzeit nur knapp 2 Wochen. Der Node wird mit einer ansteckbaren Antenne und einem Chipkühler geliefert.

Einen passenden und gleich lauffähigen Sketch für diesen Node findet Ihr z. B. hier:
https://wiki.octoate.de oder auch hier: https://github.com .

Da der Heltec Node einen USB-UART Konverter an der Schnittstelle eingebaut hat, kann es erforderlich sein, einen entsprechenden Treiber in seiner IDE einzubinden. Bei mir auf dem MAC OSX heißt das entsprechende Gerätedevice /dev/cu.SLAB_USBtoUART . Man bekommt den Treiber z. B. hier: https://www.silabs.com/.

Vor‘m Compilieren des Codes müssen noch die für die Anmeldung am TTN-Netzwerk jeweils passenden Anmeldeinformationen (Credential) angepaßt werden.
Dabei muß man entscheiden, ob eine Anmeldung mit ABP (Activation By Personalization) oder mit OTAA (Over The Air Activation) im Sketch benutzt wird.

Bei der ABP-Anmeldung werden im Sketch die Parameter Network Session Key (NwkSKEY), Application Session Key (AppSKEY) und die LoRaWAN End-Device Address (DEVADDR) benutzt. Diese müssen mit den vom TTN Network für Euren Node generierten Werten übereinstimmen.
Bei der OTAA-Anmeldung dagegen sind die Application EUI (APPEUI), die Device EUI (DEVEUI) und der App Session Key (AppsKEY) anzupassen.

Zu beachten ist auch, daß die ABP-Authentication als unsicher anzusehen ist. Die OTAA-Authentication dagegen ist als sicher zu betrachten. Die Sicherheit der Verschlüsselung wird durch drei 128-Bit Schlüssel gewährleistet. Die Schlüssel sind der AppKey (im Gerät und Applikation), der AppSKey (privat - mit ihm wird der Payload verschlüsselt) und der NwkSKey (im Netz bekannt).

Bei der OTAA Authentication wird der AppSKey und der NwkSKey auf den Node übertragen. Bei der ABP-Authentication werden sie im Gerät gespeichert, und zwar im Quelltext. Ein weiterer Sicherheits-Feature ist die Tatsache, daß OTAA bei jeder Verbindung einen neuen Verschlüsselungs-Code zuweist. Hierbei wird der Anwendungsschlüssel (AppKey) benutzt, von dem während des Aktivierungsvorgangs die beiden Sitzungsschlüssel abgeleitet werden. Diese beiden Sitzungsschlüssel (NwkSKey und AppSKey) werden bei jeder Aktivierung neu generiert.
Bei ABP ändert sich der Verschlüsselungs-Code dagegen nie. Es sei denn, er wird von Dir explizit geändert.


#2

@Loobster

Hast du auch ein usecase für den LoRaNode?
Ich meine einen Sensor dran. der ESP32 hat mehr als genug Leistung.

Gruß


#3

Im Moment bin ich noch in der Einarbeitungsphase in Sachen IOT / TTN. Daher wird dieser Node immer mal wieder für eine andere Aufgabe benutzt, so wie heute gerade für den PaxCounter.

Aber Anwendungen hätte ich schon dafür.


#4

Die da wären? :slight_smile:


#5

Nun, z. B. die berühmte Wetterstation. Oder den Feinstaubsensor auf LoRaWAN umstellen.


#6

Mojn,

habe heute auch mit dem Paxcounter angefangen - er läuft.


Zur Visu habe ich Cayenne genutzt, ich bekomme aber irgend woher die Einstellung, das es sich bei Channel und Data jeweils im Luminosity (21) handelt. Daher kann ich nur Lux, Lumen etc. einstellen. Jemand eine Idee wo die Einheit her kommt?

Im TTN im Decoder kann ich dazu nichts finden, bei Payload-Format habe ich Cayenne LPP eingestellt. Beim Build des ESP32 habe ich in der paxcounter.conf auch die 3 für Cayenne LPP ausgewählt. Hat jemand eine Idee?

Archer

Im TTN


#7

@Loobster

Kannst du da vielleicht was zu sagen?


#8

naja, die Ursache habe ich gefunden. Diese steckt im Quellcode auf dem ESP322-Node.

Jetzt die Frage, in der TTN-Console gibt es Converter usw. Geht dort eventuell eine Umsetzung/ Konvertierung?

Archer


#9

Moin Archer,

im README.md vom Paxcounter auf github findest Du ca. in der Mitte folgenden Abschnitt: Payload format. Da ist die Zeile plain_decoder.js , plain_converter.js, packed_decoder.js und packed_converter.js wichtig.

Gruß


#10

Mojn,

das habe ich gesehen. Aber, sobald ich im TTN bei Payloafformat Cayenne LPP auswähle, (was ja auch mit der Config im Repo in der paxcounter.conf korespondiert) habe ich im TTN nix mehr um dort Anpassungen der dem Read.me rein zu kopieren.

Kriege ich die Daten auch mit dem Plain Format ins Cayenne, dann könnte ich die empfohlenen Quellen nutzen…

Thx trotzdem schon mal

Archer


#11

So ich habe nun auch einen Heltec V2 auf dem ich einen PAX Counter laufen lasse.
Das Problem ist das ich mit der Version vom 2.Feb (commit 6b3a367e68c60571460274163bf578267645fca8) Probleme mit dem Display habe.
Es wirft einen Fehler I2C Bus hat einen Fehlerhaften Status, das Display bleibt schwarz. Nach dem man mehrmals Reset drückt kommt das Display und dann arbeitet der Counter auch sauber.

Hat sonst noch jemand diese Probleme?