Konfigurieren von LoraWan Gateway

10

Ich versuche, ein LoRaWan-Netzwerk mit einem mit Arduino und einem Dragino Lora Shield programmierbaren Sensor aufzubauen .

Ich habe viele Lösungen zum Erstellen eines Gateways gefunden, einschließlich eines Raspberry Pi, der mit einem anderen Dragino Lora Shield oder mit iC880A verbunden ist , und die Daten, die ich erhalte, werden über einen Server in der Cloud gesendet. Ich bin sehr verwirrt über die Programmierung des Gateways.

  • Muss ich ihm mitteilen, dass er eine Verbindung zum Knoten und zum Server herstellen soll? Oder empfängt es die Daten automatisch?
  • Und programmiere ich den Server so, dass er eine Verbindung zum Gateway oder direkt zu den Knoten herstellt?
Mohamed Achref Dridi
quelle
2
Willkommen auf der Website. Können Sie einige Informationen zu den von Ihnen verwendeten Gerätemodellen hinzufügen und weitere Details zu Ihrem Anwendungsfall hinzufügen? Dies wird uns helfen, Ihnen bessere Antworten zu geben.
Helmar
Hallo und danke! Ich bin ein Anfänger in Iot-Netzwerken, also habe ich einen Knoten mit einem Arduino Uno, einem Temperatursensor und einem Dragino Lora Shield erstellt. Ich versuche, das Datum an einen Server zu senden, also habe ich versucht, ein LoraWan Gateway mit einem Himbeer-Pi zu erstellen Einige Nachforschungen darüber, wie man es in ein LoraWan-Gateway umwandelt, und ich fand heraus, dass ich entweder ein anderes Dragino Lora Shield oder ein iC880A-Modul verwenden kann, und ich fand den Quellcode dafür, aber ich bin immer noch verwirrt darüber, wie man das verbindet Gateway zum Knoten, und wie die Daten vom Knoten zum Gateway zum Server senden? Danke im Voraus !!
Mohamed Achref Dridi

Antworten:

11

In einem typischen LoRaWAN-Netzwerk sind Gateways dumme Geräte, wie von der LoRa Alliance erläutert :

Die LoRaWAN-Netzwerkarchitektur ist normalerweise in einer Star-of-Stars-Topologie angelegt, in der Gateways eine transparente Brücke sind, die Nachrichten zwischen Endgeräten und einem zentralen Netzwerkserver im Backend weiterleitet.

Ein Gateway muss also nur für die Verbindung mit einem Netzwerkserver konfiguriert werden, z. B. dem offenen The Things Network . Das ist alles.

Gateways werden häufig als "Paketweiterleitungen" bezeichnet. Als solche tun Gateways genau das: Sie leiten alle empfangenen LoRaWAN-Pakete an einen Netzwerkserver weiter (unabhängig davon, welcher Knoten sie gesendet hat) und übertragen alles, was vom Netzwerkserver befohlen wird. Daher stellen Knoten (Endgeräte) keine Verbindung zu einem Gateway her . Stattdessen senden sie einfach und hoffen, dass ein oder mehrere Gateways ihre Übertragung empfangen und diese an den Netzwerkserver weiterleiten, der den Knoten kennt. (Gateways können die verschlüsselten Daten, die sie weiterleiten, nicht lesen.)

Um Knoten mit dem Netzwerk zu verbinden, werden sie mit einer von zwei Optionen "aktiviert" :

  • Over-The-Air-Aktivierung (OTAA)

    Zunächst wird bei Verwendung einer Website oder API jeder neue Knoten mit seinem eindeutigen Gerät EUI ( DevEUI) auf dem Netzwerkserver registriert . Es erhält dann eine öffentliche Anwendungs-ID ( AppEUI) und einen geheimen Anwendungsschlüssel ( AppKey). Diese drei Werte werden in den Knoten programmiert.

    Wenn Sie zum ersten Mal zum Senden bereit sind, werden die Werte vom Knoten verwendet, um eine LoRaWAN-Join-Anforderung zu erstellen und zu übertragen. Wenn eine solche Anforderung von einem oder mehreren Gateways empfangen wird, wird sie an den Netzwerkserver weitergeleitet, der, falls genehmigt, ein Gateway anweist, eine Beitrittsannahme zu übertragen. Wenn dies vom Knoten empfangen wird, erhält der Knoten eine öffentliche Geräteadresse ( DevAddr), einen geheimen Netzwerksitzungsschlüssel ( NwkSKey) und einen geheimen Anwendungssitzungsschlüssel ( AppSKey).

    Die aus dem Join Accept ermittelten Werte werden immer dann verwendet, wenn der Knoten einige tatsächliche Daten übertragen muss (zusammen mit einem Sicherheitszähler, der beim Beitritt bei Null beginnt). Die Aktivierung ist gültig, solange der Knoten sie im Speicher hält (und die Sicherheitsindikatoren nicht erschöpft sind), normalerweise für viele Monate oder sogar Jahre. Bei Verlust kann ein Knoten eine neue Beitrittsanfrage senden und neue Geheimnisse erhalten.

  • Aktivierung durch Personalisierung (ABP)

    Hier erhält der Knoten bei der Registrierung über eine Website oder API sofort eine Geräteadresse ( DevAddr), einen geheimen Netzwerksitzungsschlüssel ( NwkSKey) und einen geheimen Anwendungssitzungsschlüssel ( AppSKey), die im Knoten programmiert sind und sich nie ändern. Der Knoten muss nicht zuerst eine Beitrittsanforderung senden, bevor er mit dem Senden von Daten beginnen kann. Es muss jedoch darauf geachtet werden, dass die Sicherheitsindikatoren nicht verloren gehen. Außerdem sind die Schlüssel für ein bestimmtes Netzwerk spezifisch. APB macht es schwierig (wenn nicht unmöglich), Knoten zu einem anderen Netzwerkanbieter zu verschieben.

Arjan
quelle
1
Einige spezielle Gateways enthalten einen LoRaWAN-Netzwerkserver und können als eigenständige Netzwerke fungieren. Die meisten müssen jedoch mit einem externen Netzwerkserver verbunden sein. Ich habe meine Antwort entfernt, die in diesem Punkt nicht klar genug war.
Sylvain
0

Die Antwort von Arjan ist gut. Technisch. Ich wollte eine andere Geschmacksantwort geben, um denjenigen zu helfen, die neu sind und Schwierigkeiten haben, das Bild in Bezug auf Gateways und das Hin- und Herbewegen von Paketen zusammenzustellen.

Analogie...

You > Letter > Mailbox > Mailman > Post Office Dist > Recipient

|----------------- TX -------------------|

Node > Packet > Transmission > Gateway > Network Server > Application

|----------------- RX -------------------|

Node < Packet < Transmission < Gateway < Network Server < Application

Brief / Paket hat eine Adresse. Der Postbote / das Gateway holt den Brief von Ihrer Mailbox oder von der Mailbox ab, in der Sie Ihren Brief abgelegt haben. Er wird bis zum Empfänger bearbeitet. Wenn die Adresse falsch ist, kommt sie nicht an und Sie sollten darüber informiert werden. Der Empfänger kann über dasselbe System einen Brief an Sie zurücksenden.

Unabhängig davon, ob Sie das The Things Network verwenden oder versuchen, Ihren eigenen privaten Server mit LoRaServer aufzubauen , benötigen Sie ein Gateway in Reichweite Ihres Knotens / Mote / Endgeräts, um Nachrichten hin und her weiterzuleiten. Stellen Sie sich die verschiedenen Schlüssel im Code des Knotens als die Adressen auf dem Buchstaben in der Analogie vor.

Sie können auf der Kartenseite feststellen, ob sich in Ihrer Region bereits ein TTN-Gateway befindet und ob sich eines in Reichweite Ihres Knotens befindet. Ihre Nachrichten sollten Ihr TTN erreichen (vorausgesetzt, Sie haben die Schlüssel registriert und auf Ihren Knoten angewendet). Wenn kein Gateway in Reichweite ist, können Sie Ihr eigenes erstellen. Dafür gibt es viele Möglichkeiten.

In Bezug auf die Konfiguration des Gateways müssen Sie je nach gewählter Bibliothek normalerweise nur einige Parameter entweder im Quellcode oder in einer Datei global_conf.json oder local_conf.json konfigurieren.

Hier ist ein Beispiel aus dem Basteln mit einem RFM9X (basierend auf SX1276) und einem RPI3 B + unter Verwendung von single_chan_pkt_fwdwas übrigens keine Antworten liefert ... denken Sie daran, dies ist nur zum Basteln / Testen. Sowohl die Forwarder- als auch die folgenden Beispiele für global_conf.json sind keine Plug-n-Play-Beispiele und sollten für eine ordnungsgemäße LoRaWan-Vernetzung nicht verwendet werden. Ein kompatibles Gateway verfügt über 3 Funkgeräte und kann mehrere Kanäle verarbeiten und gleichzeitig senden / empfangen. Dieses Beispiel wird nur vom Knoten auf einem einzelnen Kanal empfangen und ist nicht sehr zuverlässig, weist jedoch eine aktuelle Konfiguration auf. Jeder der Werte hängt von der Hardware ab, die Sie verwenden und wo Sie sich befinden ... oder wo sich das Gateway befindet, z. B. in den USA, in der EU usw. ... und es ist auch erwähnenswert, dass es sich bei global_conf.json nicht um eine Einheitsgröße handelt passt allen. Verschiedene Bibliotheken haben normalerweise mehr Konfigurationsoptionen für mehrere Radios, Kanäle usw. - nur zu Ihrer Information.

{
  "SX127x_conf": // depending on your hardware/radio this could be something like sx1301..., sx127x...., etc.. 
  {
    "freq": 903000000, // depending on whether US (900 range), EU (800 range) or other...
    "spread_factor": 7, // look this up
    "pin_nss": 10, // wiringpi value = physical pin #24
    "pin_dio0": 5, // wiringpi value = physical pin #18
    "pin_rst": 21 // wiringpi value = physical pin #29
  },
  "gateway_conf":
  {
    "ref_latitude": 0.0, 
    "ref_longitude": 0.0,
    "ref_altitude": 2,

    "name": "WHATEVER NAME",
    "email": "[email protected]",
    "desc": "WHATEVER DESC",

    "servers":
    [
      {
        "address": "localhost", // this one is private so localhost, but TTN lookup address
        "port": 1700, // this one is private so localhost, but TTN lookup port
        "enabled": true
      } // you could add more... say you have a private one and TTN 
    ]
  }
}

Angenommen, Sie erstellen einen Knoten mit Arduino-Gerät und Code. Und Sie verwenden so etwas wie eine LMIC-Arduino-Bibliothek und eine Beispielskizze. Sie müssen zunächst anhand der Gerätehardware festlegen, wie die Pinmap konfiguriert werden soll, damit das Gerät überhaupt funktioniert. Wenn Sie dann TTN verwenden möchten, folgen Sie einer der vielen Anleitungen, um sich zu registrieren und die erforderlichen Schlüssel zu erhalten, die Sie in den Skizzencode eingegeben haben. Sie müssen auch sicherstellen, dass Sie auf der entsprechenden Frequenz und dergleichen senden, um mit dem Gateway in Ihrer Nähe übereinzustimmen.

Chris
quelle