Was ist die maximale Paketgröße eines LoraWan einschließlich der Phy-Header?


7

Ich habe einen LoRa-zu-USB-Durchgang über Arduino erstellt, um ihn als temporäres Gateway für Entwicklungszwecke zu verwenden. Irgendwie muss ich wissen, wie groß ein LoRa-Paket mit PHY-Headern ist, um zu bestimmen, wie lange meine Software benötigt, um die Daten über USB zu lesen und zu senden.

In geordneten Worten wird meine Architektur wie folgt sein:

Architektur für LoraWan

Der PC / Laptop muss also "wissen", wie groß das LoRa-Paket sein wird, um nicht unzählige Bytes über USB empfangen zu können.


1
Nebenbei bemerkt: Standardmäßig unterstützt LMiC nur Nutzdaten bis zu 51 oder 52 Byte, siehe github.com/matthijskooijman/arduino-lmic/issues/100 . Einige Anbieter, wie das niederländische KPN, lassen ohnehin nur 51 Byte zu: zakelijkforum.kpn .com / lora-forum-16 /… In gewisser Weise ist das in Ordnung: Wenn ein Knoten SF12 unterstützen muss, sollte er auch unter besseren Bedingungen nicht mehr senden.
Arjan

Antworten:


7

Wie groß ist ein LoRa-Paket mit PHY-Headern?

Ich nehme an, Sie meinen MAC-Header? Nachdem ein LoRa-Chip die LoRa-Funksignale für Sie demoduliert hat, erhalten Sie die LoRa PHY-Nutzlast. Für einen LoRaWAN-Uplink enthält eine solche PHY-Nutzlast einen MAC-Header, eine MAC-Nutzlast und ein MIC.

Für 1.0.x scheint die Faustregel zu sein, dass ein LoRaWAN-Paket mindestens 13 Byte größer ist als die Anwendungsnutzlast:

Ich denke normalerweise mindestens 13 [MHDR (1) + DevAddr (4) + FCtrl (1) + FCnt (2) + Fport (1) + MIC (4)] in einem Paket ohne Optionen

Die maximale Anwendungsnutzlast hängt von der ausgewählten Datenrate ab. Wenn ein Knoten in der Lage sein sollte, unter schlechtesten Bedingungen zu arbeiten, sollte man die schlechteste Datenrate SF12 annehmen, wobei der Knoten nicht mehr als ungefähr 51 Bytes senden sollte. (Wo unter besten Bedingungen SF7, das könnten 222 Bytes sein.) All das hängt auch von der Region ab, denke ich. (Und es könnte besser sein, wenn der LoRaWAN-Knoten nicht LoRa, sondern FSK verwendet.)

Für Ihren Anwendungsfall würde ich versuchen, mich nicht auf eine maximale Länge über USB zu verlassen. Stattdessen:

  • Mit Base64 können Sie das binäre LoRaWAN-Paket problemlos in einfachen Text konvertieren . Sie können dann solchen Text über USB senden und sie mit einer Neuen - Zeile beenden oder ein NULL -CHARACTER Ihre Empfänger wissen zu lassen , wenn die USB - Nachricht abgeschlossen ist. Sie können sogar zusätzliche Metadaten in dieser Textzeile senden, wenn Sie ein Trennzeichen auswählen, das nicht im Base64-Zeichensatz enthalten ist.

  • Zum Beispiel die Semtech UDP - Protokoll verwendet zwischen den Gateways und Server JSON Textnachrichten, die auch Sie zusätzliche Meta - Daten passieren lässt. Im JSON-Text wird das binäre LoRaWAN-Paket auch mit Base64 codiert. Wenn der JSON-Text so formatiert ist, dass er Zeilenumbrüche enthält, können Sie diese Textnachricht dennoch mit einem NULL- Zeichen beenden, und Ihr Empfänger wird nicht verwirrt.


Gemäß der LoRaWAN-Spezifikation V1.0.X ist das Fport-Feld optional, sodass die Mindestlänge tatsächlich 12 Byte
beträgt

Richtig, @RoKK, wenn keine Anwendungsnutzlast vorhanden ist. Wenn jedoch eine Anwendungsnutzlast vorhanden ist, ist FPort obligatorisch, sodass jeder Anwendungsnutzlast immer mindestens 13 Byte hinzugefügt werden. (Und möglicherweise auch einige MAC-Befehle in FOpts. Abgesehen davon gelten die 13 Bytes auch nicht für OTAA-Joins.)
Arjan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.