Howto

Armadillo-IoT G4 から AWS IoT Core のルールを用いた AWS IoT SiteWise へのデータの取り込み方法

本 Howto では AWS IoT SiteWise へのデータ送信のために、AWS IoT Core のモノに Armadillo-IoT G4 がプロビジョニングされている必要があります。Armadillo-IoT G4 での AWS IoT Greengrass V2 の自動プロビジョニング方法については、Armadillo-IoT G4 で AWS IoT Greengrass V2 を使用する方法をご確認ください。

Armadillo-IoT G4 から AWS IoT Core のルールを用いた AWS IoT SiteWise へのデータ送信方法について説明します。AWS IoT Core のルールを用いた AWS IoT SiteWise へのデータ送信のためには、AWS IoT Core のモノに Armadillo-IoT G4 がプロビジョニングされている必要があります。そのため今回は AWS IoT Greengrass V2 の自動プロビジョニングを終えているデバイスを使用します。Armadillo IoT G4 での AWS IoT Greengrass V2 の自動プロビジョニング方法についてはHowto: Armadillo-IoT G4 で AWS IoT Greengrass V2 を使用する方法をご覧ください。

本 Howto の構成は以下です。

システム構成

以下にシステム構成図を示します。

Armadillo-IoT G4 では Podman を使用して AWS IoT Greengrass Core をインストールするコンテナを作成します。作成したコンテナ上で AWS IoT Greengrass Core を動かします。コンテナ上でデバイスクライアントスクリプトを実行して、AWS IoT Core ルールに基づいて AWS IoT SiteWise にデータを送信します。

AWS IoT SiteWise とは

AWS IoT SiteWise は、産業機器から大規模にデータを収集し、モデル化、および分析や視覚化を行わせてくれるマネージドサービスです。AWS IoT SiteWise Monitor を使えば、技術者以外のユーザー向けに、リアルタイムで産業データの表示と分析を行う Web アプリケーションを簡単に作ることができます。詳細は、AWS IoT SiteWise とはをご確認ください。

Armadillo-IoT G4 からの AWS IoT SiteWise へのデータの取り込み方法について

本 Howto では一例として AWS IoT Core ルールを使用して AWS IoT SiteWise にデータを取り込む方法について紹介します。

AWS IoT SiteWise へのデータの取り込み方法についてはAWS IoT SiteWise へのデータの取り込みでいくつか紹介されています。その中の一つに掲載日時点では Armadillo-IoT G4 で使用できないものがあります。 AWS IoT SiteWise ゲートウェイを使用してサーバーからデータをアップロードする方法において AWS IoT Greengrass を使用してゲートウェイをセットアップする必要があるのですが、掲載日時点ではゲートウェイソフトウェアが Armadillo-IoT G4 の環境に未対応のため、この方法は使用できません。

Armadillo-IoT G4 から AWS IoT Core のルールを用いた AWS IoT SiteWise へのデータの取り込み

設定手順についてはこちらのAWS IoT のモノからの AWS IoT SiteWise へのデータの取り込みを参考にしています。Armadillo-IoT G4 での AWS IoT Greengrass V2 の自動プロビジョニングを終えている場合、リンク先の [AWS IoT ポリシーの作成] と [AWS IoT のモノの作成および設定] は不要です。Armadillo-IoT G4 での AWS IoT Greengrass V2 のプロビジョニング方法についてはArmadillo-IoT G4 で AWS IoT Greengrass V2 を使用する方法をご覧ください。

AWS IoT SiteWise の設定

最初に AWS IoT SiteWise の設定を行います。

1. デバイスのアセットモデルの作成

デバイスのアセットモデルの作成についてはデバイスのアセットモデルの作成を参照します。

2. デバイスフリートのアセットモデルの作成

デバイスフリートのアセットモデルの作成についてはデバイスフリートのアセットモデルの作成を参照します。

3. デバイスアセットの作成および設定

デバイスアセットの作成および設定についてはデバイスアセットの作成および設定を参照します。

4. デバイスフリートアセットの作成および設定

デバイスフリートアセットの作成および設定についてはデバイスフリートアセットの作成および設定を参照します。以上で AWS IoT SiteWise の設定を終わります。

AWS IoT Core のルール作成

次に AWS IoT Core のルールを作成します。作成方法についてはデバイスアセットにデータを送信するための AWS IoT Core ルールの作成を参照しますが、ルールクエリステートメントについては使用しているコアデバイス名に変更する必要があります。名前が一致しない場合は除外されるため、AWS IoT SiteWise にデータは送信されません。以下はコアデバイス名を "PodmanGreengrassCore" に設定する場合のルールクエリステートメント例です。コアデバイス名の先頭が "PodmanGreengrassCore" で始まる場合に AWS IoT SiteWise にデータが送信されます。

SELECT
  *
FROM
  '$aws/things/+/shadow/update/accepted'
WHERE
  startsWith(topic(3), "PodmanGreengrassCore")

ルールを作成したら AWS IoT Core のルールの設定は終了です。

Armadillo-IoT G4 のコンテナ上でのデバイスクライアントスクリプトの実行

次に Armadillo-IoT G4 のコンテナ上で動作するデバイスクライアントスクリプトの作成と実行についてはデバイスクライアントスクリプトの実行を参照します。

1. AWS IoT コンソールからカスタムエンドポイントの取得

AWS IoT コンソールからカスタムエンドポイントの取得についてはデバイスクライアントスクリプトの実行の 1~3 を参照します。

2. Armadillo-IoT G4 のコンテナに必要なパッケージのインストール

以下のコマンドを実行してコンテナに必要なパッケージをインストールします。

[container ~]# pip3 install AWSIoTPythonSDK
[container ~]# apt-get install gcc python3-dev
[container ~]# pip3 install psutil

3. デバイスクライアントスクリプトの作成

デバイスクライアントスクリプトの作成についてはデバイスクライアントスクリプトの実行の 7 を参照し、 thing_performance.py を作成してください。

4. デバイスクライアントスクリプトの実行

実行するためには以下の引数が必要です。

オプション 説明
--thing-name コアデバイス名 > コアデバイス名を指定します。下記コマンド例では "PodmanGreengrassCore" を指定します。
--endpoint カスタムエンドポイント > AWS IoT コンソールから取得したカスタムエンドポイントを指定します。下記コマンド例では "identifier.iot.region.amazonaws.com" を指定します。
--rootCA ルート CA 証明書のパス > AWS IoT Greengrass V2 の自動プロビジョニング済の場合は /greengrass/v2 以下にある pem ファイルのパスを指定します。下記コマンド例では "/greengrass/v2/rootCA.pem" を指定します。
--cert コアデバイスの証明書のパス > AWS IoT Greengrass V2 の自動プロビジョニング済の場合は /greengrass/v2 以下にある crt ファイルのパスを指定します。下記コマンド例では "/greengrass/v2/thingCert.crt" を指定します。
--key コアデバイスの秘密鍵のパス > AWS IoT Greengrass V2 の自動プロビジョニング済の場合は /greengrass/v2 以下にある key ファイルのパスを指定します。下記コマンド例では "/greengrass/v2/privKey.key" を指定します。

必要な引数に置き換えて以下のコマンドを実行します。

[container ~]# python3 thing_performance.py \
  --thingName PodmanGreengrassCore \
  --endpoint identifier.iot.region.amazonaws.com \
  --rootCA /greengrass/v2/rootCA.pem \
  --cert /greengrass/v2/thingCert.crt \
  --key /greengrass/v2/privKey.key

"Update request" と出力されたら成功です。最後に表示された "CPU" と "Memory" の内容が送信されているか AWS IoT Core 上で確認します。

5. デバイスシャドウの更新確認

デバイスシャドウの更新確認についてはデバイスクライアントスクリプトの実行の 10 を参照します。

6. AWS IoT SiteWise でのデータの確認

デバイスシャドウの更新確認についてはデバイスクライアントスクリプトの実行の 11 を参照します。

作成したリソースのクリーンアップ

作成したリソースのクリーンアップついては作成したリソースのクリーンアップを参照します。

以上で、Armadillo-IoT G4 から AWS IoT Core のルールを用いた AWS IoT SiteWise へのデータの取り込み方法についての説明を終了します。