LoginSignup
0
0

More than 1 year has passed since last update.

AWS IoT Core for LoRaWAN と Dragino LPS8 を利用して LoRaWANネットワークを構築する

Posted at

はじめに

以下の記事で、LoRaWANゲートウェイである Dragino LPS8 をセットアップし、The Things Network(TTN) に接続する方法について確認しました。

本記事では、Dragino LPS8 を、AWS IoT Core for LoRaWAN に接続させ、デバイスからLoRaWANネットワークを介して、AWSにデータの送信を行ってみます。

構成

全体の構成は、以下のようになります。

awsiot-lorawan-figure01.jpg

ゲートウェイの要件

LoRaWANゲートウェイが、AWS IoT Core for LoRaWAN に接続するためには、以下のことに対応している必要があります。

  • LoRa Basics Station(2.0.4以降)に対応

前準備

IAMロール/ポリシーの作成を行います。
IAMロール/ポリシーの関係を以下に示していますが、IAMポリシーを作成したら、対応するIAMロールでそのポリシーを許可してください。

LoRaWANゲートウェイに設定するロール/ポリシー

AWS IoT Core for LoRaWAN で、ゲートウェイに付与するロール/ポリシーを作成します。

IAMロール:IoTWirelessGatewayCertManagerRole

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "iotwireless.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {}
        }
    ]
}

IAMポリシー:AWSIoTWirelessGatewayCertManager

こちらは既存で存在しているポリシーになります。
IoTWirelessGatewayCertManagerRole の「許可」でポリシーを追加してください。

LoRaWANメッセージ受信時の転送ロール

AWS IoT Core for LoRaWAN で、ゲートウェイでメッセージをAWSサービスに転送するためのロール/ポリシーを作成します。

IAMロール:LPWAN-DeviceDestinationRole

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "iotwireless.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

IAMポリシー:LPWAN-DeviceDestinationPolicy

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": "arn:aws:iot:<リージョン>:<AWSアカウントID>:topic/$aws/rules/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:DescribeEndpoint"
            ],
            "Resource": "*"
        }
    ]
}

LoRaWANメッセージ受信時の転送ロール

IoT Core Rules で、受信したメッセージに対してアクションを行うためのロール/ポリシーを作成します。
ここでは、IoT Core に Publish するための権限を設定していますが、用途に応じて変更してください。

IAMロール:LPWAN-IoTRuleRole

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "iot.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

IAMポリシー:LPWAN-IoTRulePolicy

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": "iot:Publish",
        "Resource": "arn:aws:iot:<リージョン>:<AWSアカウントID>:topic/*"
    }
}

AWS IoT Core for LoRaWAN の設定

AWS IoT Core for LoRaWAN での設定は、複数のコンポーネントが関係します。
以下はイメージですが、おおよそ、このような関係になります。

awsiot-lorawan-figure02.jpg

ゲートウェイの登録

ゲートウェイの登録を行います。

AWS側でのゲートウェイでの設定

ゲートウェイを登録するために必要なEUI(Extended Unique Identifier )を確認しておきます。
LPS8 では、「LoRaWAN」→「LoRaWAN -- Basic Station」の画面で確認できます。

lps8-awsiot01.jpg

次に、AWSコンソールにログインし、AWS IoT Core for LoRaWAN の画面を開き、ゲートウェイの追加を行います。

awsiot-lorawan01.jpg

awsiot-lorawan02.jpg

ゲートウェイの設定を入力します。

  • 「ゲートウェイのEUI」は、先ほど確認したEUIを指定してください。
  • 「周波数帯」は、「AS923-1」 を選択してください。

awsiotcore-lorawangw01.jpg

ゲートウェイの証明書やエンドポイントの情報を確認し、ダウンロードしておきます。
これらの情報は、失くさないように保存しておいてください。

  • 「ゲートウェイ証明書」の内容で、「証明書を作成」 ボタンを押下し、ダウンロードします。
  • 「認証情報のプロビジョニング」の内容で、「CUPSエンドポイント」「LNSのエンドポイント」 の情報を、コピーして保存しておきます。
  • 「認証情報のプロビジョニング」の内容で、「サーバー信頼証明書をダウンロード」 ボタンを押下し、ダウンロードします。
  • 「ゲートウェイのアクセス許可」では、前準備で作成した 「IoTWirelessGatewayCertManagerRole」 ロールを指定してください。

awsiotcore-lorawangw03.jpg

この内容で、ゲートウェイの登録を行います。

LSP8側での設定

次に、LSP8側で、AWS側と連携するための設定を行います。
LPS8 で、「LoRaWAN」→「LoRaWAN -- Basic Station」の画面を開いてください。

AWS側でダウンロードやコピーした情報を指定します。

  • Service Provider の項目で、「Amazon IoT -- Basic Stion」 を選択してください(※「Stion」となっているのは「Station」の誤字だと思いますが)。
  • 「CUPS URI」の項目は、AWS側でコピーした 「CUPSエンドポイント」 の値を指定してください。
  • 「LNS URL」の項目は、AWS側でコピーした 「LNSのエンドポイント」 の値を指定してください。
  • AWS側でダウンロードしたファイルを、それぞれ、アップロードします。
    • CUPS strust ・・・ サーバー信頼証明書の「cups.trust」
    • LNS trust ・・・ サーバー信頼証明書の「lns.trust」
    • Private key ・・・ ゲートウェイ証明書の「xxxxxx.private.key」
    • Cert pem ・・・ ゲートウェイ証明書の「xxxxxx.cert.pem」

lps8-awsiot02.jpg

この状態で、「Save&Apply」 ボタンを押下してください。
この設定に切り替わると、「Current Mode」の部分に 「Basic Station -- AWS」 と表示されます。

ゲートウェイの接続確認

両方のゲートウェイの設定が完了したら、AWSコンソールの以下の詳細画面で内容を確認できます。
ゲートウェイ本体の電源がONになっており、接続が確認できたら、接続ステータスの部分が 「Connected」 になっていることを確認してください。

awsiotcore-lorawangw05.jpg

プロファイルの設定

デバイス共通となる設定内容を、プロファイルとして設定することができます。
AWS IoT Core for LoRaWAN では、「デバイスプロファイル」と「サービスプロファイル」の2つが存在します。

デバイスプロファイル

まず最初に、デバイスプロファイルを登録します。

awsiotcore-lorawanprofile01.jpg

デバイスプロファイルでは、以下のように設定を行います。

  • 「デフォルトのプロファイルを選択してカスタマイズ」で 「AS923-1 - A」 を選択します。
    • これは日本において利用できる周波数帯であるAS923-1と、デバイス側がクラスAに対応しているプロファイルを示しています。
    • 利用するデバイスによって、適宜指定してください。
  • 「デバイスプロファイル名」は、任意の名前を指定してください。
  • 「周波数帯」は、日本で利用する場合は、原則 「AS923-1」 を指定してください。
  • 「MACバージョン」は、、デバイス側で対応しているLoRaWANのバージョンを指定してください。特に指定がない場合は 「1.0.3」 を指定してください。
  • 「リージョン別パラメータバージョン」は、デバイス側で対応している内容を指定してください。特に指定がない場合は 「RP002-1.0.1」 を指定してください。
  • 「MaxEIRP」は、デバイスの電波の電力の強さを示します。ここでは 「15」 を指定しておきます。

awsiotcore-lorawanprofile02.jpg

サービスプロファイル

次に、サービスプロファイルを登録します。

awsiotcore-lorawanprofile03.jpg

サービスプロファイルでは、以下のように設定を行います。

  • 「サービスプロファイル名」は、任意の名前を指定してください。
  • 「AddGWMetaData」が、ONになっていることを確認してください。
    • このパラメータをONにすると、各デバイスのデータ受信時に、RSSIやSNRといった電波状況を示すメタデータも付与されます。

awsiotcore-lorawanprofile04.jpg

登録が完了すると、以下のようになります。

awsiotcore-lorawanprofile05.jpg

送信先の設定

デバイスから、メッセージが届いた際の送信先を登録します。

awsiotcore-lorawandest01.jpg

送信先では、以下のように設定を行います。

  • 「送信先名」は、任意の名前を指定してください。ここでは 「LoRaWAN_TestDestination」 とします。

    • 分かりやすい名前を付けておいてください。
  • 「ルール名を入力」を選択し、任意の名前を指定してください。ここでは 「LoRaWAN_TestIoTRule」 とします。

    • ただし、この名前は後でIoT Ruleで使用される名前になるため、ルールを想定した名前にしておくと良いです。
  • ロールは、前準備で作成した 「LPWAN-DeviceDestinationRole」 を選択します。

    • 「ロールにポリシーをアタッチ」を選択すると、この送信先に応じたIAMポリシーが自動作成され、指定されたIAMロールに追加されます。

awsiotcore-lorawandest02.jpg

登録が完了すると、以下のようになります。

awsiotcore-lorawandest03.jpg

IoT Rule の設定

受信したメッセージの処理を行う、IoTルールの登録を行います。

awsiotcore-rule01.jpg

IoTルール名を指定します。

※注意※
ここでは、送信先で指定したルール名と合わせてください。

awsiotcore-rule02.jpg

IoTルールでは、SQL構文が利用できます。
ここでは、受信したメッセージに対して、タイムスタンプを追加するように、以下のSQLを指定します。

SELECT *, timestamp() as timestamp

awsiotcore-rule03.jpg

IoTルールのアクションを設定します。
ここでは、IoT Core に、MQTTメッセージとして再Publishするようにします。
アクションは、複数定義することも可能です。

  • アクションで、 「Republish to AWS IoT topic」 を選択します。
  • 送信先のトピックは、 「test/lorawan/messages」 とします。
  • ロールは、前準備で作成した 「LPWAN-IoTRuleRole」 を選択します。

awsiotcore-rule04.jpg

定義内容を確認し、IoTルールを作成します。

awsiotcore-rule05.jpg

LoRaデバイスの設定

LoRaWANゲートウェイに接続される、LoRaデバイスの登録を行います。

awsiotcore-lorawandevice01.jpg

デバイスは、以下のように設定を行います。

awsiotcore-lorawandevice02.jpg

  • LoRaWAN仕様とワイヤレスデバイス設定
    • 「ワイヤレスデバイスの仕様」では、「OTAA v1.0.x」 を指定します。
      • ABP方式の指定も可能です。デバイスに合わせて指定してください。
    • 「DevEUI」「AppKey」「AppEUI」は、デバイスで指定されている固有のIDを指定してください。
    • 「ワイヤレスデバイス名」は、任意の名前を指定してください。
  • プロファイル
    • 事前に作成したプロファイルを指定します。
    • 「ワイヤレスデバイスプロファイル」は、「AS923-1-A-OTAA」 を選択します。
    • 「サービスプロファイル」は、「Default service profile」 を選択します。
  • 送信先
    • 事前に登録した送信先を指定します。
    • 「送信先名」は、「LoRaWAN_TestDestination」 を選択します。

位置情報の管理も可能ですが、今回は行わないので、スキップします。
「デバイスを追加」ボタンを押下すると、デバイスの登録が完了します。

awsiotcore-lorawandevice03.jpg

これで、LoRaWANデバイスの登録が完了しました。

awsiotcore-lorawandevice04.jpg

デバイスの詳細画面を確認し、「デバイストラフィック」のタブで、ゲートウェイなどの情報が表示されていれば、接続できていることが確認できます。
接続が確認できない場合、LoRaWANデバイスとLoRaWANゲートウェイの接続状況や、AWS側での設定を確認してください。

awsiotcore-lorawandevice05.jpg

デバイスからのメッセージ受信

今回、デバイスからメッセージを受信すると、IoT Core に、MQTTメッセージがPublishされる設定にしています。
そのため、IoT Core のMQTTテストクライアントから、メッセージを確認しています。

IoTルールで指定したMQTTトピック設定を確認し、メッセージをSubscribeできるように設定します。
デバイスからメッセージを送信すると、以下のように、メッセージが確認できました。

awsiotcore-lorawantest01.jpg

いろいろなパラメータが確認できますが、いくつか重要なパラメータを以下に示します。

パラメータ 説明
PayloadData デバイスから送信されたデータ(ペイロード)をBase64でエンコードした値
WirelessMetadata.FPort デバイスが使用する FPort
WirelessMetadata.LoRaWAN.DevEui 送信元のデバイスのEUI
WirelessMetadata.LoRaWAN.Gateways 送信元のゲートウェイの情報

まとめ

AWS IoT Core for LoRaWAN と LoRaWANゲートウェイ LPS8 を使って、LoRaWANネットワークの処理が確認できました。
設定項目は多いですが、複数デバイスも一括で管理することが可能です。

また、メッセージ受信時の処理は、IoTデバイスがMQTTでメッセージングするときと同様に、IoTルールに集約できるので、受信したメッセージの処理も、他のAWSサービスに簡単に連携することができます。

参考情報

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0