2022年12月号特集 第1部 サポート・ページ1…クラウド上にIoTデータ・サーバを作る

サポート・ページ1「クラウド上にIoTデータ・サーバを作る」

本サイトでは,Interface2022年12月号特集 第1部に関して,Amazon Web Services(以下,AWS)を活用したIoTデータ・サーバ構築手順の詳細を説明します。MQTTプロトコルを利用して,クラウドでデータを受け付け,それを順次蓄積していく構成を実現します.
サポート・ページ1では,AWS上で,MQTTメッセージでIoTデータを受信し,それを自動でS3に保存するための設定・手順について説明します.

ステップ1:AWSアカウントの作成
AWSを初めて利用する方は,以下のサイトを参考にしてアカウントを作成してください.アカウントの利用には,クレジットカードまたはデビットカードの登録が必要になります.

– AWS アカウント作成の流れ
https://aws.amazon.com/jp/register-flow/

ステップ2:AWSの構成を知る

本サイトでは,AWSのリージョン(AWSサービスの提供地域)は「東京リージョン(apnortheast-1)」を利用することを前提としています.
今回,主に以下のサービスを利用します.AWSのサイトでサービスの概要をご確認ください.

– Amazon S3(以下,S3)
https://aws.amazon.com/jp/s3/
– AWS IoT Core(以下,IoT Core)
https://aws.amazon.com/jp/iot-core/
– Amazon Kinesis Data Firehose(以下,Kinesis Firehose)
 https://aws.amazon.com/jp/kinesis/data-firehose/

ステップ3:AWS IoT Core の設定

AWSコンソールにログインし,「IoT Core」の設定画面を開きます.

 

AWS IoTの「設定」メニューから,「デバイスデータエンドポイント」の内容を確認します.
このエンドポイントが,デバイスからデータを送信する際のMQTTの接続先になります.

ステップ4:デバイスの登録

実際にデバイスと通信するために,AWS側でデバイスの登録が必要になります.今回は,FreeRTOSを利用することを前提に設定を行います.設定に必要なファイル群をダウンロードするため,AWS IoTの「デバイスソフトウェア」メニューから,「FreeRTOSデバイスソフトウェア」を選択します.

 

今回,FreeRTOSの内容で,「Windows-Simulator」というものがありますので,それを利用します.「Quick Connect」をクリックすると,デバイスを登録するためのウィザードが開始されるので,画面の内容に従って,デバイスの登録を進めてください.

 

以下の画面でダウンロードされるZIPファイルは今回は利用しません.実際にFreeRTOSで開発をする際に必要になります.

 

以下の画面でダウンロードされるZIPファイルは取っておいてください.このフィアルに含まれる証明書のファイルが後ほど必要になります.

 

最後に,接続確認用にデバイスからのメッセージ受信待ちになりますが,別途確認するので,そのまま「完了」をクリックしてください.

ステップ5:AWS IoT Core への接続確認

デバイスの代わりに,GUIのMQTTクライアント・ツールである「MQTT X」を利用します.

– MQTT X
https://mqttx.app/

MQTT X をダウンロードしたら,以下のように設定を行います.ここで,前ステップでダウンロードした証明書のファイルも利用します.

 

項目 設定値
名前 任意の名前を付けてください.
ClientID 英数字で任意のIDを指定してください.自動生成されますが,ClientIDはMQTTで接続する上で一意である必要があります.
ホスト IoTCoreの画面で確認した「デバイスデータエンドポイント」のURLを指定してください.
ポート 8883になります.
SST/TLS ONにしてください.
証明書種類 「Selfsigned」を選択してください.
SSL証明書 ONにしてください.
CAファイル 以下のURLからダウンロードできるCAファイルを指定してください.https://www.amazontrust.com/repository/AmazonRootCA1.pem
クライアント証明書 ダウンロードした証明書で,「xxxxxx.cert.pem」というファイルのパスを指定してください.
クライアントキー ダウンロードした証明書で,「xxxxxx.private.key」というファイルのパスを指定してください.

 

 

接続に成功したら,以下のような画面になるため,MQTTメッセージを送信してみます.

 

 

同時にAWSコンソール側で,IoT Core の「MQTT テストクライアント」メニューを開きます.この画面で,MQTT X で指定するトピックをサブスクライブするようにすると,MQTT X から送信されたメッセージが,AWSコンソール上で表示されることが確認できます.

接続に失敗する場合や,メッセージの受信が確認できない場合は,設定値やMQTTのトピックの値などを見直してみてください.

ステップ6:Amazon Kinesis Data Firehoseの設定

MQTTメッセージをクラウド・ストレージであるS3に保存できるように,AWSコンソールから「Kinesis Firehose」の設定画面を開きます.

 

メニューから「Delivery streams」を選択し,新しい Delivery stream を作成します.ここで指定されるS3バケットは,予め作成をしておいてください.S3バケットは,グローバルでユニークな名前を付ける必要があるので,「cqpub-iot-example-{yourname}」などと付けてください({yourname}はご自身の名前など).

 

Delivery stream の作成が完了すると,以下のように一覧に「Active」のステータスで表示されます.

ステップ7:AWS IoT Ruleの設定

最後に,IoT Core と Kinesis Firehoseを連携させるための設定を行います.これはIoT Coreのメニューで,「メッセージのルーティング」→「ルール」を選択し,IoTルールの作成を行います.

 

SQLステートメントで,MQTTメッセージの内容を取得できるようにします.

 

ルールのアクションを,前ステップで作成した Kinesis Firehose の内容に関連づけます.IAMロールは自動で新しいものが作成されるので,それを利用してください.

 

最後に,「作成」をクリックして,ルールの設定が完了です.

 

結果:Amazon S3へのデータの自動保存

ここまでの設定を行うと,IoT Coreで受信したMQTTメッセージをKinesis Firehoseに連携させ,S3に時系列でデータが自動で保存されていくことになります.

最後に,通信しなくなったら,今回作成した以下のリソースを削除してください.

– IoTルール
– Kinesis Firehoseのストリーム
– S3に蓄積されたファイル