catch-img

CONEXIOBlackBearでAWS IoT Greengrassを使ってみる


はじめに

こんにちは。コネクシオIoTブログ 技術記事担当のHです。

さて、今回はCONEXIOBlackBearとAmazon Web Service(以下、AWS)との連携について取り上げます。

CONEXIOBlackBear は、IoT Greengrass用AWSデバイス認定を取得しており、AWSサービスで機能するデバイスとして、すぐに利用できます。AWS IoT Greengrassを活用すると、例えば、AWS上で作成した学習モデルをCONEXIOBlackBear内にデプロイし、エッジAIで即座に処理するといったことが、セキュアかつ容易にできます。これにより、製造現場におけるモーター故障予兆検知や画像AIによる不良個体識別といった、現場でのエッジAI活用が期待できます。



そこで、今回はサンプルプログラムをAWS IoT Greengrassを使ってCONEXIOBlackBearへデプロイし動作させる手順を紹介したいと思います。CONEXIOBlackBearは認定デバイスなので、AWS公式のドキュメントに沿った手順が多いのですが、一部CONEXIOBlackBear上での作業が必要になるため、その作業内容を本記事で具体的に示すことで、よりイメージが沸くのではと思います。

なお、こちらの資料ダウンロードページから入手できる簡易プログラミングマニュアルには、CONEXIOBlackBearへのAWS IoT Greengrass Coreソフトウェアをインストールする手順が掲載されていますが、この記事ではもう少し詳しい内容となっています。


詳細

0. 実施環境

- CONEXIOBlackBear OSバージョン1.1.5

- AWS IoT Greengrass Coreソフトウェア バージョン 1.9.2

- AWS Lambdaプログラムのランタイム Python 2.7


1. CONEXIOBlackBearへのAWS IoT Greengrass Coreソフトウェアのインストール

AWS IoT Greengrassを CONEXIOBlackBear で利用するには、「AWS IoT Greengrass Coreソフトウェア」を CONEXIOBlackBear にインストールすることが必要です。


1.1 CONEXIOBlackBearの準備

まず、こちらを参考にCONEXIOBlackBear上で、以下のようにユーザーとグループを作成します。

adduser --system ggc_user
addgroup --system ggc_group


1.2 Greengrassグループ・コアの作成と、セキュリティリソース・設定ファイルをダウンロード

次は、PC上で作業を行います。

以下のリンクを参考に、AWS IoT Greengrassコンソールにて、Greengrassグループ、コアの作成およびコアのセキュリティリソースと設定ファイルをダウンロードしていきます。

https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/gg-config.html

手順10まで進めます。手順9で、作業しているPC上にセキュリティリソースと設定ファイル一式0123456789-setup.tar.gzというファイルのダウンロードを忘れないでください。​ ​​​​(0123456789は、実際はランダムな文字列)


1.3 AWS IoT Greengrass Core ソフトウェアをダウンロード、インストール

CONEXIOBlackBearに戻って、以下のコマンドにてソフトウェア一式を配置します。

cd /tmp
wget https://d1onfpft10uf5o.cloudfront.net/greengrass-core/downloads/1.9.2/greengrass-linux-armv7l-1.9.2.tar.gz
tar -xzvf greengrass-linux-armv7l-1.9.2.tar.gz -C /

参考


1.4 Greengrass Coreのセキュリティリソースと設定ファイルを配置

さらに、AWS IoT Greengrassコンソールでダウンロードした0123456789-setup.tar.gzをCONEXIOBlackBear上にコピーします。

そして、コピー先にて、

tar -xzvf 0123456789-setup.tar.gz -C /greengrass

として展開します。また、以下のようにrootCA証明書をダウンロードします。

cd /greengrass/certs
wget -O root.ca.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem

ここまでで、AWS IoT Greengrass Coreソフトウェアのインストールが完了しました。


1.5 AWS IoT Greengrass Coreソフトウェア デーモンの起動

以下で、デーモンが起動できます。このデーモンが起動している状態であれば、AWS IoT Greengrass コンソールから、エッジソフトウェアをデプロイできます。

cd /greengrass/ggc/core/    
./greengrassd start

以下のように、出力されれば、デーモンの起動が完了です。

Setting up greengrass daemon
Validating hardlink/softlink protection
Waiting for up to 1m10s for Daemon to start

Greengrass successfully started with PID: 29962

ということで、次はデプロイを行っていきます。


2. サンプルのプログラムをCONEXIOBlackBearにデプロイして動作を確認する

ここでは、AWS IoT Greengrass Core SDKに同梱のサンプルプログラムを、AWS IoT GreengrassからCONEXIOBlackBearへデプロイし、動作させてみます。以下を参考に進めます。

https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module3-I.html


2.1 AWS IoT Greengrass Core SDKのダウンロードとサンプルLambdaプログラムの作成

以下の2つのリンクにある手順に従って、AWS IoT Greengrass Core SDK同梱のサンプルプログラムをAWS Lambda上に作成し、AWS IoT Greengrass Coreに追加します。少し手順が多いですが、順番通り進めます。注意が必要なのは、手順15で、ストリームマネージャーを無効化するのを忘れないことです。有効化されていると、今回使用しているAWS IoT Coreソフトウェア v1.9.2ではデプロイに失敗します。

https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/create-lambda.html

https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/config-lambda.html

今回はPython用のサンプルを使用するため、

https://github.com/aws/aws-greengrass-core-sdk-python/

からバージョン1.2.0をPC上にダウンロード、展開し、Greengrass_HelloWorldというlambda関数をAWS上に作成しました。


2.2 CONEXIOBlackBearへLambdaプログラムをデプロイ

そして、こちらに従って、CONEXIOBlackBearへデプロイします。

デプロイされた様子が以下です。成功しました。


3. デプロイされたプログラムの動作確認

正しくデプロイされると、CONEXIOBlackBearからAWS IoT CoreへMQTTメッセージがパブリッシュされているはずなので、確認してみます。参考

AWS IoTコンソールのテストページで"hello/world"トピックをサブスクライブすると、以下のように表示されました。5秒ごとに飛んできます。


まとめ

以上のように、AWS IoT GreengrassをCONEXIOBlackBearで利用する実際の手順をご紹介しました。今回は簡単なサンプルプログラムを動作させましたが、CONEXIOBlackBearがAWS IoT Greengrassとの連携で威力を発揮するのは、エッジAIを扱うときだと思いますので、今後、エッジAIをデプロイして動かす記事についても取り上げていきたいと思います。


H

H

コネクシオ株式会社・IoT開発担当者