Das öffentliche The Things Network (TTN) ist derzeit in der dritten Version verfügbar. Damit gibt es einige Neuigkeiten, unter anderem ein Single Sign-On (SSO) System, eine neue Oberfläche aber auch eine andere Datenstruktur. In diesem Projekt wollen wir zeigen, wie man (Stand März 2024) eine senseBox im TTN v3 registriert, in Blockly programmiert und seine Messwerte zur openSenseMap sendet.
Application erstellen
Melde dich in der TTN v3 Console an (https://eu1.cloud.thethings.network/console/). Dort können die gleichen Login-Daten wie bisher verwendet werden. Klicke auf Applications und erstelle eine neue Application mit einer beliebigen ID.
Device erstellen
Innerhalb der Application können nun neue Devices hinzugefügt werden. Klicke auf “+ Add end Device” und füge ein neues Devices (z.B. eine senseBox hinzu).
Wähle oben Enter end device specifics manually aus. Als Frequency Plan muss Europe 863-870 MHz (SF9 for RX2 - recommended), als LoRaWAN version die Option LoRaWAN Specification 1.0.2 und als Regional Parameters Version die Option RP001 Regional Parameters 1.0.2 ausgewählt werden. Im nun erscheinenden Feld Join EUI (ehemals AppEUI) müssen alle Stellen mit Nullen ausgefüllt werden, damit euch die Konsole zum nächsten Schritt weiterlässt. Nach einem Klick auf Confirm werden nun die Felder für den nächsten Schritt eingeblendet.
EUIs
Der nachfolgende Schritt ist relativ simpel, da TTN uns die Generierung der DevEUI und des AppKeys abnimmt. Die DevEUI kommt dabei aus einem limitierten Pool von maximal 20 EUIs per TTN-Application, da alle EUIs im gesamten LoRaWAN-Netz einmalig sein müssen.
Abschließend kannst du deinem Device noch eine ID geben (hier: “meine-neue-sensebox”) oder die automatisch generierte ID nutzen. Mit dieser ID findet die OpenSenseMap später auch deine senseBox wieder.
Jetzt kannst du einfach auf Register end device klicken und dein Device wird erstellt.
Decoding
Das Device wurde nun erfolgreich erstellt. In diesem Tutorial wird das Cayenne Payload Format genutzt. Stelle daher das Payload Format der Application für den Uplink auf Cayenne LPP um.
Blockly
Die Programmierung der senseBox MCU kann über die Lern- und Programmierumgebung Blockly durchgeführt werden. Die EUIs und den Key findet man in der Übersicht von seinem neuen Device in der TTNv3 Konsole.
Beim Kopieren der EUIs und des Keys muss man darauf achten, das richtige Format (lsb, msb) zu nutzen.
Den fertigen Blockly-Sketch findest du hier.
Der Sketch kann jetzt kompiliert und wie gewohnt auf die senseBox MCU geladen werden. Nach dem Start der senseBox sollten nun in der TTNv3 Console unter “Live data” Datenpakete erscheinen, wenn die senseBox in Reichweite eines TTN Gateways ist. Leider kann der Beitritt der senseBox ins LoRa-Netz je nach Gateway und Traffic beim ersten Mal bis zu einer Stunde dauern, falls keine Datenpakete ankommen, sondern immer nur join request accepted
in der Konsole steht, einfach ein bisschen warten.
openSenseMap
Registriere auf der openSenseMap eine neue senseBox und wählen bei der Hardware eine senseBox:edu oder Manuelle Konfiguration mit den entprechenden angeschlossenen Sensoren aus. In den erweiterten Einstellungen aktviere The Things Network und setzt das Decoding Profile auf Cayenne LPP (beta). Unter Application-ID und Device-ID trage die IDs der Application und des Devices ein, welche vorher bei der jeweiligen Registrierung in der TTNv3 Konsole beliebig gesetzt worden ist, z.B. “my-new-application” oder “my-new-device”. Ggf. muss noch das Cayenne LPP Phänomen für jeden entsprechenden Sensor angepasst werden.
Webhook
Im letzten Schritt müssen die Daten von TTN zur openSenseMap weitergeleitet werden. Füge dazu der TTN Application eine neue Webhook Integration hinzu. Nach einem Klick auf “+ Add webhook” wähle “Custom webhook” und gib dem neuen Webhook eine ID, z.B. osem. Als Webhook Format wähle JSON aus und die Base URL für den Endpoint ist https://ttn.opensensemap.org/v3. Außerdem muss noch Uplink messages aktiviert wreden. Nun ganz unten auf “Add webhook” klicken und schon ist die Weiterleitung zur openSenseMap eingerichtet. Nach ein paar Minuten sollten die ersten Messwerte auf der openSenseMap zu sehen sein.