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

センスウェイ株式会社

2019.09 Ver.01

MissionConnect上で設定に必要な項目

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 IoTエンドポイントの確認

「AWSマネージメントコンソール」の [サービス] → [IoT Core] 内の「設定」を選択して以下の画面を開き、
「カスタムエンドポイント」の「エンドポイント」を確認してください。

AWS IoT endpoint

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

同じく [IoT Core] 内の「安全性」→ 「ポリシー」を開き、右上の「作成」ボタンをクリックして、ポリシーの作成画面を開きます。

AWS IoT policy

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

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

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

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

AWS IoT policy

例) 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] 内の「管理」→ 「モノ」を開き、右上の「作成」ボタンをクリックして、モノの作成画面を開きます。

AWS IoT Things

デバイス1台について設定する場合、「単一のモノを作成する」をクリックすると、以下の画面が表示されます。

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

AWS IoT Things2

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

AWS IoT Things2

「1-Click 証明書作成 (推奨)」の「証明書の作成」ボタンをクリックすると以下の画面が表示されます。

「このモノの証明書」及び「プライベートキー」ファイルのダウンロードを行い、「有効化」を選択した後、
「ポリシーをアタッチ」をクリックしてください。
(ダウンロードした各証明書ファイルは、後ほど Mission Connect上のファイルシステムにアップロードします。)

AWS IoT cert make

「モノにポリシーを追加」の画面が表示されるので、先ほど作成したポリシー名のチェックボックスを選択し
「モノの登録」をクリックする事で、モノの作成/登録が完了します。

AWS IoT policy attach

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
ソートキー data (文字列)
TTL expire

ルールの作成

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

DynamoDB make Rule

「名前」「説明」は任意に入力してください。

DynamoDB make Rule 2

アクションの追加

「1 つ以上のアクションを設定する」から「アクションの追加」をクリックすると、「アクションの選択」画面が表示されます。

DynamoDB make Rule

「データーベーステーブル(DynamoDBv2)の複数列にメッセージを分割する」を選択し「アクションの設定」をクリックして、「アクションの設定」画面を開きます。

DynamoDB make Rule

「テーブル名」に作成してあるDynamoDBのテーブル名「loradata01」を選択し、「ロールの作成」をクリックして任意の「ロールの名前」を入力してロールを作成完了後、「アクションの追加」をクリックして、アクションの設定を完了させます。

DynamoDB make Rule

ルールクエリステートメントの入力

アクションの設定が完了すると、「ルールの作成」画面に戻ります。

DynamoDB make Rule

「ルールクエリステートメント」に以下のクエリを入力します。
※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' 

「ルールの作成」をクリックすると、ACTルールの作成が完了します。

以上で、デバイスから送信されたデータが、DynamoDBの「loradata01」Tableに格納されるようになります。
DynamoDB に格納されたデータの利用の仕方については、https://aws.amazon.com/jp/dynamodb/ を参照してください。