AWS IoT連携方法 | センスウェイ株式会社

センスウェイ株式会社

2019.09 Ver.01
2022.12 Ver.02

MissionConnect上で設定に必要な項目

SenseWay Mission Connectでは、AWS IoTと連携機能を提供しています。MissionConnect上でAWS IoT連携設定を行うには、以下の項目が必要になります。
必要に応じて、コピー&ペースト等で後に入力できるようにしておいてください。

AWS IoT上の表記 Mission Connect上の表記
AWS IoTエンドポイント エンドポイント
AWS IoTモノ(Things)名 デバイス名
プライベートキーファイル プライベートキー (ファイル)
このモノの証明書 クライアント証明書 (ファイル)
AWS IoT上の配信先先頭Topic名 トピック
AWS IoTモノ(Things) Shadow Shadow
    • AWS IoTモノ(Things)名
      登録デバイスにつける設定上の名前です。後の設定で複数回使用するため、先に決めておいてください。
    • プライベートキーファイル/このモノの証明書
      ファイルが必要になります。AWS IoT上で作成してダウンロードしておき、Mission Connect上でアップロードを行います。
    • 先頭Topic名
      設定したTopic名とモノ(Things)名を使って、AWS IoTの「<Topic名>/<AWS IoTモノ(Things)名>/rx 」へ配信されます。
    • AWS IoTモノ(Things) Shadow
      有効の場合は、Things Shadowの「reported」内に「rx」として配信されます。例) Shadowを有効にした場合の AWS IoT上での配信内容
{
 "reported": {
  "rx": {
   "mod": {
    "port": 3,
    "dr": "5",
    "devEUI": "0000624266e31024",
    "mt": "ucnf",
    "data": "0e02f30000",
    "cnt": 42,
    "fq": 927.6
   },
   "gw": [
    {
     "gwid": "00004a50d79ef211",
     "snr": 11,
     "rssi": -57,
     "date": "2019-07-27T04:47:46.738043Z"
    }
   ]
  }
 }
}
 

AWS IoTでの各設定の確認及び作成

この後の作業は、AWSのアカウントは作成済みで、[AWSマネージメントコンソール] https://console.aws.amazon.com/console/home にサインインができている前提となります。
AWSアカウントを作成されていない場合は、事前に作成ください。

AWS IoTエンドポイントの確認

[コンソールのホーム] から、[サービス] →[IoT] → [IoT Core] を開きます。

「設定」を選択して以下の画面を開いたら、「デイバイスデータエンドポイント」の「エンドポイント」の情報をコピー&ペーストで控えておいてください。

AWS IoT証明書にアタッチするポリシーの作成

同じく [IoT Core] 内の「セキュリティ」→ 「ポリシー」を開きます。

「ポリシーを作成」ボタンをクリックすると次の画面が開きます。

「ポリシー名」欄に、作りたい任意のポリシー名を入力し、「新しいステートメントを追加」で、以下の 2つのポリシーのステートメントを追加していきます。(ビルダーモードの場合)

ポリシー効果 許可
ポリシーアクション iot:UpdateThingShadow
ポリシーリソース arn:aws:iot:ap-northeast-1:<AWSアカウントID>:thing/<モノ(Things)名>
ポリシー効果 許可
ポリシーアクション iot:Publish
ポリシーリソース arn:aws:iot:ap-northeast-1:<AWSアカウントID>:topic/<Topic名>/<モノ(Things)名>/rx

※<AWSアカウントID>の部分は御利用ユーザーの12桁のIDを入力してください。

「ビルダー」⇔「JSON」で入力方式を切り替えることができます。
「JSON」の場合、以下のような画面となり、ステートメントはJSON形式で指定します。

例) Topic名「lora」、モノ(Things)名「loratest01」の場合の、
Shadowのアップデート許可と、トピック「<Topic名>/<モノ(Things)名>/rx」=「lora/loratest01/rx」への配信許可
を行うポリシー設定のステートメント

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:UpdateThingShadow",
      "Resource": "arn:aws:iot:ap-northeast-1:<AWSアカウントID>:thing/loratest01"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Publish",
      "Resource": [
        "arn:aws:iot:ap-northeast-1:<AWSアカウントID>:topic/lora/loratest01/rx"
      ]
    }
  ]
}
 

※<AWSアカウントID>の部分は御利用ユーザーの12桁のIDを入力してください。
※複数のモノ(Things)で同じポリシーを利用したい場合は、「loratest01」となっている部分を「*」とする事で共用可能です。

AWS IoT モノ(Things)名及び証明書の作成

同じく [IoT Core] 内の「管理」→ 「モノ」を開き、「モノを作成」ボタンをクリックして、モノの作成画面を開きます。

デバイス1台について設定する場合、「1つのモノを作成」にチェックを入れ、「次へ」をクリックします。

「モノの名前」に AWS IoTモノ(Things)名を入力して次へ進みます。
※その他の項目は設定する必要がある場合に行うので、未設定でも問題はありません。

証明書設定の画面が表示されるので、「新しい証明書を自動生成 (推奨)」を使って作成を行います。

「新しい証明書を自動生成 (推奨)」を選択して次へ進むと以下の画面が表示されます。

作成したポリシー名にチェックを入れて「モノを作成」をクリックします。

「デバイス証明書」及び「パブリックキーファイル」、「プライベートキーファイル」のダウンロードを行い、「完了」をクリックしてください。
ダウンロードした各証明書ファイルは、後ほど Mission Connect上のファイルシステムにアップロードします。※「パブリックキーファイル」は利用しませんが、この画面を完了するためにダウンロードが必要です。

下記画面が表示され、モノの作成/登録が完了です。

MissionConnect への設定

Mission Connect のアカウントが作成済みで、1つ以上のデバイスがアクティベート済み、通信が確認できていることが前提となります。
ブラウザの別タブ等で Mission Connect にログインし、以下の作業を行います。

デバイスの編集

Mission Connect の「デバイス管理」で「デバイス一覧」を表示してください。

MissionConnect Device Index

設定を行うデバイスを選択し「編集」ボタンをクリックすると、デバイス「編集」画面が表示されます。

MissionConnect Device Edit

「外部連携設定」の「設定」ボタンをクリックすると、「デバイス外部連携編集」画面が表示されます。

MissionConnect Device ExtrasEdit

外部連携設定の編集

「外部連携タイプ」リストボックスから「AWS IoT」を選択すると、画面右側に「AWS IoT Hub」の設定項目と、「ファイルシステム」ボタンが表示されます。

MissionConnect AWS Iot Edit

AWS IoTと連携するためには、プライベートキー、クライアント証明書ファイルのアップロードが必要になります。
「ファイルシステム」ボタンをクリックすると、ブラウザの別タブで「ファイルシステム操作」画面が表示されます。

ファイルシステムへの証明書アップロード

「参照」ボタンをクリックしてファイル選択ダイアログを表示して、「アップロード」ボタンでファイルをアップロードできます。
※アップロードできるのは 1ファイルにつき 1MBまでです。

MissionConnect FileSystem

AWS IoTの設定でダウンロードした以下の2つのファイル

  • プライベートキー
  • クライアント証明書

を順番にアップロードしてください。

MissionConnect FileSystem Close

アップロードが完了したら、「閉じる」ボタンをクリックして「ファイルシステム操作」画面(タブ)を閉じてください。

AWS IoT連携設定の編集

元の「デバイス外部連携編集」画面で、いったん F5キー等でブラウザのリロードを行ってください。
「外部連携タイプ」リストボックスから「AWS IoT」を選択して、画面右側の「AWS IoT Hub」の設定項目を入力/選択してゆきます。

MissionConnect AWS IoT Re-Edit

項目名 AWS IoT上の表記
エンドポイント AWS IoTエンドポイント
デバイス名 AWS IoTモノ(Things)名
プライベートキー プライベートキー
クライアント証明書 このモノの証明書
トピック AWS IoT上の配信先先頭Topic名
Shadow AWS IoTモノ(Things) Shadow

入力/選択し終わったら、左下の「更新」ボタンをクリックすると、外部連携編集を完了することができます。

AWS IoTとの連携設定は以上で完了です。

デバイスの表示や編集画面では「外部連携最新結果」に、AWS IoTと連携した上での最新のレスポンスが表示されます。
(自動更新はされませんので、適宜リロードを行ってください。)

DynamoDBへのUplinkデータ保管の例

例として、上記設定でデバイスから送信されたデータを、DynamoDBに格納する例を示します。
DynamoDB の利用の仕方については、https://aws.amazon.com/jp/dynamodb/ を参照してください。

事前にDynamoDBに、Table名「loradata01」を以下の条件で作成しておきます。

プライマリキー deveui
ソートキー date (文字列)
TTL expire

ルールの作成

[AWSマネージメントコンソール]の[IoT Core]内の「メッセージのルーティング」→「ルール」を開き、ルール画面内の「ルールを作成」ボタンをクリックして、「ルールの作成」画面を開きます

「ルール名」「ルールの説明」は任意に入力し「次へ」クリックして進んでください。

次にSQLステートメント設定画面が表示されますので、以下のクエリを入力し「次へ」をクリックして進みます。

※DynamoDBで2日間でデータを自動削除する場合のサンプル(SQL version: 2016-03-23)

select mod.devEUI AS deveui, get(gw,0).date AS date,
trunc(timestamp()/1000, 0) AS timestamp,
trunc(timestamp()/1000, 0)+(60*60*24*2) AS expire,
mod.data AS data, mod.cnt AS cnt, mod.port AS port, mod.fq AS freq, mod.dr AS dr, gw AS gwpayload
from 'lora/+/rx' 
 

アクションの追加

ルールアクションのアタッチ画面になりますので、ルールアクションの各項目を選択し「次へ」をクリックして進みます。

アクション1:DynamoDBv2

テーブル名:loradata01

IAMロール:(※新しいロールを作成で任意のロール名を作成する)

確認と作成画面が表示されるので、内容を確認し「作成」をクリックする事でルールの作成が完了となります。

以上で、デバイスから送信されたデータが、DynamoDBの「loradata01」Tableに格納されるようになります。

DynamoDB に格納したデータの利用の仕方については、https://aws.amazon.com/jp/dynamodb/ を参照してください。

前ページ:Azure IoT Hub 連携方法
次ページ:REST API 連携方法