beelogger

LoRa – LoRaWAN™ – TTN

LoRa steht für “Long Range” und ist eine Technologie, um mit einer speziellen Modulation mit sehr geringem Stromverbrauch drahtlos über große Reichweiten zu kommunizieren. 
Auf dieser Technologie baut LoRaWAN™ als ein spezielles Netzwerkprotokoll auf, welches von der LoRa-Alliance (https://lora-alliance.org) als offene und gemeinnützige Organisation aufgesetzt und gepflegt wird.
Generell sind die verwendeten Funkfrequenzen im jeweiligen Land lizenzfrei und können unter bestimmten Regelungen von jedem genutzt werden.

Als eine communitybasierte Initiative wurde “The Things Network” (TTN) ins Leben gerufen, die LoRaWAN nutzt, um ein offenes und kostenloses Netzwerk zu betreiben. Möglich wird dies u.a. durch die vielen Gateways, die mit dem Netzwerk verbunden sind und kostenlos von Freiwilligen betrieben werden. Ein guter Anhaltspunkt, ob am Standort des beeloggers ein Gateway in Reichweite ist, findet man auf der Seite https://ttnmapper.org. Informationen zur Abdeckung im TTN hier. Die gezeigten Reichweiten sind bei optimalen Bedingungen möglich. Alternativ könnte auch ein eigenes LoRaWAN-Gateway eingerichtet werden, sofern dieses in Reichweite der Beuten betrieben werden kann.

Zum Nachbau des beelogger mit Anbindung über LoRaWAN und TheThingsNetwork ist eine individuelle Einarbeitung in die Thematik hilfreich.

Auf Seite des community-Webservers sind die Vorraussetzungen geschaffen worden, aus dem TTN-Netz die Daten eines beeloggers mit LoRa-Modul entgegenzunehmen.
Im derzeitigen Aufbau des beelogger-LoRa werden die Messdaten mehrerer Waagen, drei Sensoren, sowie Akku- und Solarspannung unterstützt.
Die Nutzung von TTN für den beelogger erfolgt nicht ganz konform zum LoRaWAN-Standard, da dieser keine “Anweisungen” vom Server umsetzt. Für die eigentliche Funktion hat dies jedoch keine Auswirkungen.

Für den beelogger-Universal haben wir die Nutzung im Bereich des Lochrasterfeldes für den Einbau des RFM95-Modul vorgesehen.
Für den beelogger STM32 steht eine Zusatzplatine für das RFM95-Modul zur Verfügung.

Die beelogger-LoRa-Systeme unterstützen die Nutzung eines EE-Proms zur Zwischenspeicherung von Daten bei Kommunikationsfehlern auf Grund der Rahmenbedingungen von LoRaWAN bzw. TTN nicht.

Wichtige Hinweise:

Alle älteren ‘LORA’ – beelogger müssen  für die Nutzung von TTN-V3 auf den aktuellen Sketch und Payload-Converter umstellen.

Uns wurde berichtet, dass TTN in der Schweiz nicht zur Verfügung steht.

beelogger mit ATmega328 kommen wegen des umfangreichen Code der LORA-Bibliothek schnell an die Grenzen des Programmspeichers.
Der aktuelle beelogger-Sketch verwendet den ABP-MODE. Präferiert im TTN ist der OTAA-Mode. Dieser ist aus Speicherplatzgründen mit ATmega328 nicht realisierbar.
Daher wird der Aufbau von beelogger-LORA-Systemen mit ATmega328 nicht empfohlen und von uns nicht mehr aktiv gepflegt.

Auf Grund der gesetzl. Vorgaben zur AirTime im vom LORA verwendeten Frequenzband ist die Anzahl der zu übertragenden Messwerte begrenzt. Insbesondere bei Triple- bzw. Quad- Systemen ist daher die Zahl der Sensoren eingeschränkt.

Konfiguration The Things Network

Konfiguration The Things Stack V3

 

Programmcode:

In den Programmcode müssen neben den Kalibrierwerten für die Spannungsmessung und den Wägesensoren auch die Verbindungsdaten aus der TTN-Konfiguration eingetragen werden.
Der Programmcode benötigt die beelogger-Bibliotheken.

Die LMIC-Bibliothek für das LoRa-RFM95-Modul – https://github.com/matthijskooijman/arduino-lmic – wurde für den beelogger-Sketch angepasst und ist ebenfalls in den beelogger-Bibliotheken enthalten.

// LoRaWAN NwkSKey, network session key
static const u1_t PROGMEM NWKSKEY[16] = 
                          {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
// LoRaWAN AppSKey, application session key
static const u1_t PROGMEM APPSKEY[16] = 
                          {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
// LoRaWAN end-device address (DevAddr)
static const u4_t DEVADDR = 0x12345678; // -- Change this address for every node!

Weitere Parameter für die Konfiguration der LORA-Schnittstelle sind das LORA Network-Prefix und die Anzahl der verwendeten Kanäle.
Die Anzahl Kanäle ist je nach Art des Gateway auf 1, 3 oder 8 zu konfigurieren.

// LoRaWAN Network Prefix
static const uint16_t PREFIX = 0x13; // https://www.thethingsnetwork.org/docs/lorawan/prefix-assignments.html 
// example: 0x13 = TTN
// 0x01 = your own local Lora accesspoint

// number of LORA-Channels to be used 1, 3 or 8
// 1 = Single-Channel-Gateway
// 3 = three channels
// 8 = use all channels
#define LORA_CHANNELS 3

Das beelogger-LoRa-System verfügt über keinen Rückkanal vom Server.
Die Steuerung der Intervallzeiten erfolgt daher nicht über die Fernsteuerung vom  Webservers sondern in der Konfiguration des Sketch.
Einstellbar sind das Standard-Intervall “WeckIntervall_default” und die Aktivierung der individuellen Intervallsteuerung “WeckIntervall_aktiv”.
Bei Aktivierung der individuellen Intervallsteuerung kann zusätzlich ein Winterintervall “WeckIntervall_Winter_aktiv” aktiviert und konfiguriert werden.
Intervalle unter fünf Minuten werden vom System auf 5 Minuten umgestellt, damit die Bedingungen der Nutzung von LoRaWAN™/TTN eingehalten werden.

Die Voreinstellung haben wir so vorgenommen.

#define WeckIntervall_default 10

#define WeckIntervall_aktiv 1 // Manuelle Intervallsteuerung 0 = inaktiv, 1 = aktiv

#define WeckIntervall_Tag 10
#define WeckIntervall_Nacht 30
#define WeckIntervall_Nacht_Anfang 22
#define WeckIntervall_Nacht_Ende 6

#define WeckIntervall_Winter_aktiv 0 // Intervall Winter 0 = inaktiv, 1 = aktiv
#define WeckIntervall_Winter 60 // Intervall in Minuten
#define WeckIntervall_Winter_Anfang 9 // Monat Winterintervall Start
#define WeckIntervall_Winter_Ende 4 // Monat Winterintervall Ende

Folgende Kombination aus Waagen und Sensoren sind mit beelogger-LORA möglich.

Anzahl Waagen Systemparameter Sensoren: Beutensensor:
1 Batterie-/Solarspannung;
Arbeitsschalter/Einschaltzeit
Aussentemperatur* / Luftfeuchte / Luftdruck / Licht Temperatur / Luftfeuchte
2 Batterie-/Solarspannung;
Arbeitsschalter/Einschaltzeit
Aussentemperatur* / Luftfeuchte / Luftdruck / Licht 2 x Temperatur / Luftfeuchte
3 Batterie-/Solarspannung;
Arbeitsschalter/Einschaltzeit
Aussentemperatur* / Luftfeuchte / Luftdruck / Licht nicht verfügbar
4 Batterie-/Solarspannung;
Arbeitsschalter/Einschaltzeit
Aussentemperatur* / Luftfeuchte / Luftdruck / Licht nicht verfügbar
     * – Aussentemperatur wird auch für die Temperaturkompensation der Wägezellen verwendet. nicht verfügbar

Weitere Hinweise zur Konfiguration der Sensoren finden sich unter  “alle Programmcodes”

Das TTN im ABP-Mode verwendet einen Übertragungzähler (Frame Counter). Die Werte werden im EE-Prom des ATmega bzw. EE-Prom/Backup-RAM des STM32-Systems abgespeichert. Wird der ATMega durch einen neuen ersetzt muss die Application im TTN neu erstellt und dabei der Frame Counter rückgesetzt werden, TTN Security

Auszug aus der Debug-Info des LORA-Sketch:

W:  W 1 [kg] 0.00
W:  W 2 [kg] 0.00

LoRa:
!
Data
T-O:2356
F-O:21
V-B:26483
V-S:1238
G-1:0
G-2:0
S:16
HDR: 49455
 
len:18
9 34 15 67 73 4 D6 0 0 0 0 10 0 3 AA 2 C1 2F  
LoRa-frame counter: 1
968671: TX!

Heap RAM Used:      44
Program RAM Used:   2696
Stack RAM Used:     80
Estimated Free RAM: 127308
 Weckzeit 01.01.2022 00:29:59

  LoRaSeq_Nr:2 Interval: 10min  t-on: 17  sw:

Erläuterung:
T-O,F-O usw. sind die diversen Messwerte im für LORA aufbereiteten Format.
Wird die Zeile mit “TX!” angezeigt, so hat das RFM95 Modul die Daten versendet.
Eine Quittung ist im LORA-ABP-Mode nicht vorgesehen, so dass eine Kontrolle der Daten nur im Gateway oder im TTN erfolgen kann.

Aktueller beelogger-LoRa-Sketch für STM32-Systeme

 

LORA-Sketch für beelogger-Universal: LORA 12/2023
Hinweis: LORA für beelogger-Universal und dieser Sketch werden vom beelogger-Team nicht mehr supported.