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上での配信内容
- AWS IoTモノ(Things)名
{ "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 の「デバイス管理」で「デバイス一覧」を表示してください。
設定を行うデバイスを選択し「編集」ボタンをクリックすると、デバイス「編集」画面が表示されます。
「外部連携設定」の「設定」ボタンをクリックすると、「デバイス外部連携編集」画面が表示されます。
外部連携設定の編集
「外部連携タイプ」リストボックスから「AWS IoT」を選択すると、画面右側に「AWS IoT Hub」の設定項目と、「ファイルシステム」ボタンが表示されます。
AWS IoTと連携するためには、プライベートキー、クライアント証明書ファイルのアップロードが必要になります。
「ファイルシステム」ボタンをクリックすると、ブラウザの別タブで「ファイルシステム操作」画面が表示されます。
ファイルシステムへの証明書アップロード
「参照」ボタンをクリックしてファイル選択ダイアログを表示して、「アップロード」ボタンでファイルをアップロードできます。
※アップロードできるのは 1ファイルにつき 1MBまでです。
AWS IoTの設定でダウンロードした以下の2つのファイル
- プライベートキー
- クライアント証明書
を順番にアップロードしてください。
アップロードが完了したら、「閉じる」ボタンをクリックして「ファイルシステム操作」画面(タブ)を閉じてください。
AWS IoT連携設定の編集
元の「デバイス外部連携編集」画面で、いったん F5キー等でブラウザのリロードを行ってください。
「外部連携タイプ」リストボックスから「AWS IoT」を選択して、画面右側の「AWS IoT Hub」の設定項目を入力/選択してゆきます。
項目名 | 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/ を参照してください。