LoRa Packet Forwarder JSON Daten
25.12.2024
Elektronik | Funk | Software
Der Technik-Blog
Der von Semtech entwickelte UDP-Packet Forwarder auf einem LoRa bzw. LoRaWAN Gateway ist für den bidirektionalen Datentransfer zwischen dem Gateway und dem Netzwerkserver zuständig. Dieser Artikel beschreibt die JSON Objekte, die ab dem 12 Byte an eine Nachricht angefügt werden. Weitere Informationen zu den ersten 12 Bytes einer jeden Nachricht werden in diesem Artikel näher erläutert.
Für den Uplink (Sendung vom Gateway zum Netzwerkserver) werden zwei JSON Objekte (STAT & RXPK) verwenden. STAT übermittelt den Status vom Gateway (Standort, div. Zähler und Zeitstempel) und RXPK ein vom Gateway empfangenes Datenpaket mit den Dateninhalt und Informationen zum Paket selbst (Größe, Signalstärke, Modulation usw.)
Für den Downlink (Sendung vom Netzwerkserver zum Gateway) gibt es zwei JSON Objekte (TXPK, TXPK_ACK). Mit TXPK werden Datenpakete an das Gateway übermittelt, welche per Funk ausgesendet werden sollen. Wurde der Downlink vom Gateway akzeptiert bzw. kann gesendet werden, wird als Antwort nur ein 12 Byte TX_ACK ohne JSON Objekt gesendet. Im Fehlerfall wird das TXPK_ACK Objekt an die vorherigen 12 Byte angefügt und zum Netzwerkserver zurückgesendet.
Die folgenden Tabellen beschreiben die einzelnen Keys vom jeweiligen JSON Objekt.
STAT (Zyklische Statusnachrichten vom Gateway zum Netzwerkserver):
{"stat":{"ackr":0.000000,"dwnb":0,"rxfw":0,"rxnb":0,"rxok":0,"time":"2024-11-15 10:45:54 GMT","txnb":0}}
Key | Type | Beschreibung |
---|---|---|
rxnb | u_int | Per Funk empfangene Pakete seit Systemstart |
rxok | u_int | Per Funk empfangene Pakete mit gültiger CRC seit Systemstart |
rxfw | u_int | Zum Netzwerkserver weitergeleitete Pakete seit Systemstart |
dwnb | u_int | Vom Netzwerkserver empfangene Downlink-Pakete seit Systemstart |
txnb | u_int | Per Funk ausgesendete Pakete seit Systemstart |
ackr | int | Prozensatz vom Netzwerkserver bestätigter Datenpakete |
time | string | Uhrzeit vom Gateway |
lati | float | Position vom Gateway (Breitengrad) |
long | float | Position vom Gateway (Längengrad) |
alti | int | Position vom Gateway (Höhe) |
RXPK (Empfangenes Datenpaket oder mehrere Datenpakete in einem Array):
{"rxpk":[{"chan":0,"codr":"4/5","data":"QN3Mu6qATgEBddf3CGO3W+c=","datr":"SF7BW125","freq":868.100000,"lsnr":9.750000,"modu":"LORA","rfch":1,"rssi":-32,"size":26,"stat":1,"time":"2024-11-15T10:47:43.674536Z","tmst":2905060155}]}
Key | Type | Beschreibung |
---|---|---|
chan | u_int | Logische Kanalnummer |
rfch | u_int | RF-Chain: Modul im Gateway, welches das Datenpaket empfangen hat |
freq | float | Empfangsfrequenz in MHz |
modu | string | Modulationsart (LoRa oder FSK) |
rssi | float | Signalstärke (RSSI) in dbm |
lsnr | float | LoRa Rauschverhältnis in dB |
datr | string / u_int | Spreadingfaktor und Bandbreite in kHz bei LoRa Modulation, bei FSK Frame Bitrate in Hz |
codr | string | Codingrate bei LoRa Modulation |
stat | int | CRC Status (1 = OK; -1 = Fehlerhaft; 0 = Keine CRC) |
time | string | UTC Zeitstempel vom Gateway zum Empfangszeitpunkt nach ISO8601 (Compact Format) mit Microsekunden |
tmst | u_int (32-Bit) | Interner Mikrosekundenzähler seit Systemstart. Überlauf nach 72,5 Minuten (32^2) |
tmms | u_int | Vergangene Millisekunden seit 06.Jan.1980 |
size | u_int | Payload Größe (Byte) |
data | string | Payload (Base64) |
TXPK (Downlink: Senden eines Telegramms über ein Gateway):
{"txpk":{"imme":true,"freq":868.500,"rfch":1,"powe":14,"modu":"LORA","datr":"SF11BW125","codr":"4/5","ipol":false,"size":24,"data":"3UBCTIB9FOa+LyVdGkt63237S2p4CEX/"}}
Key | Typ | Beschreibung |
---|---|---|
imme | bool | Wenn true, wird das Paket sofort gesendet und tmst/time ignoriert |
tmst | u_int (32-Bit) | Wenn imme=false und tmst vorhanden, wird das Paket beim erreichen des internen Zählers gesendet |
tmms | string | Wenn imme=false und tmst nicht vorhanden, wird das Packet zum angegebenen UTC-Zeitstempel gesendet |
freq | u_float | Sendefrequenz in MHz |
rfch | u_int | Auswahl des Sendemoduls (RF Chain) |
powe | int | Sendeleistung in dBm |
modu | string | Modulationsart (LORA oder FSK) |
datr | string / u_int | Bei LoRa Modulation Spredingfaktor und Bandbreite (SFxBWm, x=7-12;m=Bandbreite in kHz), bei FSK Frame Bitrate in Hz |
codr | string | ECC Coding Rate (z.B. 4/5) |
ipol | bool | Gibt an, ob das invertierte Polaritätsbit verwendet wird (false bedeutet keine Invertierung). |
prea | u_int | RF Preamble Größe |
size | u_int | PHYPayload in Bytes |
data | string | Base64 PHYPayload |
ncrc | bool | Wenn true, wird keine CRC im Physical Layer generiert |
TXPK_ACK (Antwort vom Gateway zum Netzwerkserver auf ein PULL-RESP):
{"txpk_ack":{"error":"TX_FREQ"}}
Key | Type | Beschreibung |
---|---|---|
error | string | Gibt eine Fehlermeldung zurück |
Mit dem Key "error" können folgende Fehlermeldungen Übermittelt werden:
error | Beschreibung |
---|---|
TOO_EARLY | Das Paket wurde zu früh empfangen, bevor der vorgesehene Sendezeitpunkt erreicht war |
TOO_LATE | Das Paket kam zu spät an, um rechtzeitig gesendet zu werden |
COLLISION_PACKET | Eine Kollision mit einem anderen bereits gesendeten Paket wurde festgestellt |
COLLISION_BEACON | Das Paket kollidierte mit einem Beacon-Signal, das Vorrang hat |
TX_FREQ | Die Sendefrequenz ist ungültig oder nicht erlaubt |
TX_POWER | Die angeforderte Ausgangsleistung ist ungültig oder außerhalb der zulässigen Grenzen |
GPS_UNLOCKED | Die GPS-Synchronisation war nicht verfügbar, daher konnte keine genaue Zeitplanung erfolgen |
The Things Network kümmert sich lediglich um den Transport von LoRaWAN-Paketen, jedoch nicht um die Speicherung. Hier geht es um die Entwicklung einer Webapp.
WeiterlesenAEQ-WEB © 2015-2024 All Right Reserved