Howto

Armadillo-IoT G4 から AWS IoT Greengrassストリームマネージャーを用いた AWS IoT SiteWise へのデータの取り込み方法

本 Howto では AWS IoT SiteWise へのデータ送信のために、Armadillo-IoT G4 に AWS IoT Greengrass Core がインストールされており、カスタムコンポーネントのデプロイ方法を習得している必要があります。Armadillo-IoT G4 での AWS IoT Greengrass V2 の自動プロビジョニング方法とカスタムコンポーネントのデプロイについては、Armadillo-IoT G4 で AWS IoT Greengrass V2 を使用する方法をご確認ください。

Armadillo-IoT G4 から AWS IoT Greengrassストリームマネージャーを用いた AWS IoT SiteWise へのデータ送信方法について説明します。AWS IoT Greengrassストリームマネージャーを用いた AWS IoT SiteWise へのデータ送信のためには、Armadillo-IoT G4 に AWS IoT Greengrass Core がインストールされており、またカスタムコンポーネントのデプロイ方法を習得している必要があります。そのため今回は Howto: Armadillo-IoT G4 で AWS IoT Greengrass V2 を使用する方法 を終えている環境を使用します。

本 Howto の構成は以下です。

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

Armadillo-IoT G4 では Podman を使用して AWS IoT Greengrass Core をインストールするコンテナを作成します。作成したコンテナ上で AWS IoT Greengrass Core を動かします。カスタムコンポーネントで Stream Manager Client を使用し、AWS IoT Greengrassストリームマネージャーを経由して AWS IoT SiteWise にデータストリームを送信します。このデータストリームに宛先となるアセットのプロパティエイリアスを指定します。

AWS IoT SiteWise とは

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

AWS IoT Greengrassストリームマネージャーとは

AWS IoT Greengrass が提供するパブリックコンポーネントの一つです。AWS IoT Greengrassストリームマネージャーを使用すると、大量のIoTデータを AWS クラウドに転送する際の効率と信頼性が向上します。ストリームマネージャーは、AWS クラウドにエクスポートする前に AWS IoT Greengrass Core でデータストリームを処理します。 Stream Managerは、機械学習(ML)推論などの一般的なエッジシナリオと統合されます。詳細はAWS IoT Greengrass Core でデータストリームを管理するをご覧ください。

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

本 Howto では一例として AWS IoT Greengrassストリームマネージャーを使用して AWS IoT SiteWise にデータを取り込む方法について紹介します。AWS IoT Core ルールを使用する場合は Howto: Armadillo-IoT G4 から 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 Greengrassストリームマネージャーを用いた AWS IoT SiteWise へのデータの取り込み

設定手順についてはこちらのストリームマネージャを使用するカスタムコンポーネントを作成するを参考にしています。

AWS IoT SiteWise の設定

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

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

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

  • [モデルの詳細]に以下の情報を入力
    名前: stream-manager-model
  • [測定の定義]に以下を入力してモデルを作成
    名前 単位 データ型
    double-val 空欄 ダブル

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

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

  • [モデル情報]で 1 で作成したアセットモデルを選択
  • [アセットの情報]に以下を入力してデバイスアセットを作成
    名前: stream-manager-asset

    作成後の stream-manager-asset を選択して右上の[編集]を押します。すると [測定]にアセットモデルで作成した[測定の定義]の名前が表示されているのでプロパティエイリアスを入力します。このプロパティエイリアスがデータストリームの宛先となります。
名前 プロパティエイリアス MQTT 通知ステータス
double-val /stream-manager-asset/double-val 無効

保存したら AWS IoT SiteWise での設定は終了です。

AWS IoT Greengrassストリームマネージャーを使用するカスタムコンポーネントの作成とデプロイ

次に Armadillo-IoT G4 のコンテナ上で動作するカスタムコンポーネントを作成します。今回は Howto: Armadillo-IoT G4 で AWS IoT Greengrass V2 を使用する方法 で設定した、コンテナ名 "my_container" 上で動作するカスタムコンポーネントになります。カスタムコンポーネントには Python 用のストリームマネージャー SDK を含める必要があります。

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

コンテナに必要なパッケージをインストールします。"my_container" 内で以下のコマンドを実行してください。

[container ~]# pip install greengrasssdk

2. カスタムコンポーネントの作成とデプロイ

以下のコンポーネントを作成します。

  • コンポーネント名: "com.example.StreamManagerSiteWisePython"
  • バージョン: "1.0.0"

3. Amazon S3 へのアーティファクトのアップロード

アーティファクトには以下の三つのファイルを含める必要があります。

  • Python 用のストリームマネージャー SDK の zip アーカイブ:
    stream_manager_sdk.zip
  • Python 用のストリームマネージャー SDK が必要とするパッケージのリスト:
    requirements.txt
  • ストリームマネージャーを使用するアプリケーション:
    stream_manager_ioT_siteWise.py

上記ファイルの用意のためにこちらのAWS Greengrass Stream Manager SDK for Pythonを開発用 PC にダウンロード・解凍します。解凍したフォルダ直下の以下のファイルを使用します。

  • Python 用のストリームマネージャー SDK の zip アーカイブ:
    直下にある stream_manager フォルダを stream_manager_sdk.zip に圧縮します。

  • Python 用のストリームマネージャー SDK が必要とするパッケージのリスト:
    直下にある requirements.txt ファイルになります。

  • ストリームマネージャーを使用するアプリケーション:
    直下にある samples フォルダ内の stream_manager_ioT_siteWise.py を編集して使用します。このアプリケーションは指定したプロパティエイリアスに対してランダムな double を送信するサンプルプログラムになります。39行目付近にある "property_alias" の値を [2. デバイスアセットの作成および設定] で入力した "/stream-manager-asset/double-val" に変更して保存します。アプリケーションの内容についての詳細は ストリームを操作するために StreamManagerClient を使用する をご覧ください。

property_alias = "/stream-manager-asset/double-val"

上記で用意した三つのファイルを S3 バケットに配置します。

4. AWS IoT Greengrass にコンポーネント作成

以下の json 記述のレシピを用いてコンポーネントを作成します。 は使用している名前に置き換えてください。

{
  "RecipeFormatVersion": "2020-01-25",
  "ComponentName": "com.example.StreamManagerSiteWisePython",
  "ComponentVersion": "1.0.0",
  "ComponentDescription": "Uses stream manager to send data stream a SiteWise",
  "ComponentPublisher": "Amazon",
  "ComponentDependencies": {
    "aws.greengrass.StreamManager": {
      "VersionRequirement": "^2.0.0" 
    }
  },
  "Manifests": [
    {
      "Platform": {
        "os": "linux" 
      },
      "Lifecycle": {
        "Install": "pip3 install --user -r {artifacts:path}/requirements.txt",
        "Run": "export PYTHONPATH=$PYTHONPATH:{artifacts:decompressedPath}/stream_manager_sdk; python3 {artifacts:path}/stream_manager_ioT_siteWise.py" 
      },
    "Artifacts": [
            {
                  "URI": "s3://<S3 バケット名>/artifacts/com.example.StreamManagerSiteWisePython/1.0.0/stream_manager_sdk.zip",
            "Unarchive": "ZIP" 
               },
            {
                  "URI": "s3://<S3 バケット名>/artifacts/com.example.StreamManagerSiteWisePython/1.0.0/stream_manager_ioT_siteWise.py" 
            },
            {
                  "URI": "s3://<S3 バケット名>/artifacts/com.example.StreamManagerSiteWisePython/1.0.0/requirements.txt" 
            }
      ]
    }
  ]
}

コンポーネントが作成されたら、"my_container" で AWS IoT Greengrass Core が動作していることを確認したうえで、コンポーネントをデプロイしてください。

5. AWS IoT SiteWise でのデータストリームの確認

AWS IoT SiteWise Console の左側のメニューの [ビルド] 内の [データストリーム] を選択します。

[データストリームエイリアス] に指定したプロパティエイリアスが表示されていればデータストリームが送信されています。数分経過しても表示されない場合は再度設定手順を確認してください。

以上で Armadillo-IoT G4 から AWS IoT Greengrassストリームマネージャーを用いた AWS IoT SiteWise へのデータの取り込み方法についての説明を終了します。