LoraWanゲートウェイの構成


10

Arduinoでプログラム可能なセンサーとDragino Loraシールドを使用してLoRaWanネットワークを構築しようとしています。

私はラズベリーパイなどのゲートウェイを作成するための多くのソリューションは、別のDragino LORAシールドまたはに接続されて発見したiC880Aクラウド内のサーバを行う、と私は受信データが送信されます。ゲートウェイのプログラミングについて非常に混乱しています。

  • ノードとサーバーに接続するように指示する必要がありますか?それともデータを自動的に受け取りますか?
  • そして、ゲートウェイに接続するように、または直接ノードに接続するようにサーバーをプログラムしますか?

2
サイトへようこそ。使用しているデバイスのモデルに関するいくつかの情報を追加し、ユースケースに関する詳細を追加できますか?これにより、より適切な回答が得られます。
ヘルマー

こんにちは、ありがとう!私はIoTネットワークの初心者なので、arduino uno、温度センサー、Dragino Loraシールドを使用してノードを作成しました。サーバーに日付を送信しようとしているので、ラズベリーpiを使用してLoraWanゲートウェイを作成してみました。それをLoraWanゲートウェイに変換する方法に関するいくつかの研究で、別のDragino LoraシールドまたはiC880Aモジュールを使用できることがわかり、それを行うためのソースコードを見つけましたが、それでも接続する方法について混乱していますノードへのゲートウェイ、およびノー​​ドからゲートウェイへのデータをサーバーに送信する方法 前もって感謝します !!
Mohamed Achref Dridi 2017

回答:


11

LoRa Allianceで説明されているように、典型的なLoRaWANネットワークでは、ゲートウェイはダムデバイスです。

LoRaWANネットワークアーキテクチャは通常、スターオブスタートポロジで配置されます。このトポロジでは、ゲートウェイは、エンドデバイスとバックエンドの中央ネットワークサーバーとの間でメッセージを中継する透過的なブリッジです。

したがって、ゲートウェイは、オープンなThe Things Networkなどの一部のネットワークサーバーに接続するように構成するだけで済みます。それで全部です。

ゲートウェイは、「パケットフォワーダ」と呼ばれることがよくあります。そのため、ゲートウェイはまさにそれを行います。ゲートウェイは、受信したすべてのLoRaWANパケットを(どのノードが送信したかに関係なく)ネットワークサーバーに転送し、ネットワークサーバーからのコマンドを送信します。したがって、ノード(エンドデバイス)は一部のゲートウェイに接続しません。代わりに、1つ以上のゲートウェイが送信を受信し、その送信を受信して​​、ノードを認識しているネットワークサーバーに転送することを望みます。(ゲートウェイは、転送している暗号化されたデータを読み取ることができません。)

ノードをネットワークに接続するには、次の2つのオプションのいずれかを使用して「アクティブ化」します

  • 無線によるアクティベーション(OTAA)

    最初に、いくつかのWebサイトまたはAPIを使用して、新しいノードをそれぞれ独自のデバイスEUI(DevEUI)を使用してネットワークサーバーに登録します。次に、公開アプリケーションID(AppEUI)と秘密アプリケーションキー(AppKey)を取得します。これらの3つの値はノードにプログラムされます。

    次に、初めて送信する準備ができると、ノードはLoRaWAN参加要求を作成して送信するために値を使用します。そのような要求が1つ以上のゲートウェイによって受信されると、それはネットワークサーバーに転送され、承認された場合、1つのゲートウェイにJoin Acceptを送信するように指示します。ノードが受け取った場合、これはノードにパブリックデバイスアドレス(DevAddr)、秘密のネットワークセッションキー(NwkSKey)、および秘密のアプリケーションセッションキー(AppSKey)を与えます。

    Join Acceptから決定された値は、ノードが実際のデータを送信する必要があるときはいつでも使用されます(結合するときは常にゼロから始まるセキュリティカウンターとともに)。アクティブ化は、ノードがそれをメモリに保持している限り(およびセキュリティカウンターが使い果たされていない限り)、通常は数か月または数年も有効です。失われるたびに、ノードは新しい参加リクエストを送信し、新しいシークレットを取得できます。

  • パーソナライゼーションによるアクティベーション(ABP)

    ここで、いくつかのWebサイトまたはAPIを使用して登録すると、ノードにはデバイスアドレス(DevAddr)、シークレットネットワークセッションキー(NwkSKey)、およびシークレットアプリケーションセッションキー(AppSKey)がすぐに付与されます。これらはノードにプログラムされ、決して変更されません。ノードは、データの送信を開始する前に最初に参加要求を送信する必要はありませんが、セキュリティカウンターが失われないように注意する必要があります。また、キーは特定のネットワークに固有です。APBは、ノードを別のネットワークプロバイダーに移動することを(不可能ではないにしても)困難にします。


1
一部の特別なゲートウェイにはLoRaWANネットワークサーバーが含まれ、スタンドアロンネットワークとして機能できます。ただし、ほとんどは外部ネットワークサーバーに接続する必要があります。その時点では十分に明確ではなかった私の答えを削除しました。
シルヴァン2017年

0

Arjanの答えは良いです。テクニカル。私は、ゲートウェイとパケットのやり取りに関して、新しくて苦労している人たちをまとめるのに役立つ別のフレーバーの回答を提供したいと考えていました。

類推...

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

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

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

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

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

レター/パケットにはアドレスがあります。郵便配達員/ゲートウェイは、あなたのメールボックスまたはあなたがあなたの手紙を落としたどんなメールボックスからでも手紙を受け取ります。それは受信者までずっと処理されます。住所が間違っていると届きませんので、その旨をお知らせください。受信者は同じシステムを介してあなたに手紙を送り返すことができます。

The Things Networkを利用する場合でも、LoRaServerなどを使用して独自のプライベートサーバーを構築する場合でも、ノード/モート/エンドデバイスの手の届くところにゲートウェイが必要です。ノードのコード内のさまざまなキーを、類推の文字のアドレスと考えてください。

マップページのエリアにすでにTTNゲートウェイがあるかどうかを確認できます。また、ノードに到達できるゲートウェイがある場合、メッセージはTTNに到達するはずです(ノードにキーを登録して適用したと想定)。手の届くところにゲートウェイがない場合は、独自に作成できます。それには多くのオプションがあります。

ゲートウェイの構成に関しては、選択するライブラリに応じて、通常、いくつかのパラメーターをソースコードまたはglobal_conf.jsonまたはlocal_conf.jsonファイルのいずれかに構成するだけで済みます。

ここで使用して(SX1276に基づく)RFM9XとRPI3 B +いじりから例ですsingle_chan_pkt_fwdはどのbtwは応答を提供しません...これは単にいじくり回す/テストするためのものであることに注意してください。フォワーダーとその下のglobal_conf.jsonの例はどちらもプラグアンドプレイではないため、適切なLoRaWanネットワーキングに依存しないでください。準拠ゲートウェイには3つの無線があり、複数のチャネルを処理し、同時に送受信できます。この例は、単一チャネルのノードからの受信であり、あまり信頼できませんが、現在の構成を示しています。それぞれの値は、使用しているハードウェアと配置されている場所、またはゲートウェイがUS、EUなどのどこに配置されているかによって異なります。また、そのようなglobal_conf.jsonは1つのサイズではないことに注意してください。すべてに適合します。通常、さまざまなライブラリには、複数の無線機、チャネルなどの設定オプションがあります。

{
  "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": "WHATEVER@EMAIL.TLD",
    "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 
    ]
  }
}

Arduinoデバイスとコードでノードを構築しているとしましょう。そして、LMIC-Arduinoライブラリやサンプルスケッチなどを使用します。まず、デバイスのハードウェアに基づいて、デバイスが機能するようにピンマップを構成する方法を決定する必要があります。次に、TTNを使用する場合は、多くのガイドのいずれかに従って登録し、スケッチコードに入力する必要なキーを取得します。また、適切な周波数などで送信していることを確認して、地域のゲートウェイに合わせる必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.