ESP32をAWSに接続してみた(2) モノの登録

2022.04.08

こんにちは、CX事業本部 IoT事業部のアッキーです。前回に引き続き、ESP32から取得したデータをIoT Coreに送信するシステムを構築していきます。

前回の記事

ESP32をAWSに接続してみた(1) ハードウェアの製作

モノの登録

今回は、IoT Coreへモノの登録を行います。IoT Coreでは、接続したいデバイスをモノ(Thing)として登録する必要があります。

AWSマネジメントコンソールからIoT Coreを開き、左メニューの管理→モノを選択します。モノの一覧が表示されます(今回は私が実験で作成したモノも表示されています)ので、「モノを作成」をクリックします。

モノを作成の画面に遷移しますので、デフォルトの「1つのモノを作成」のまま次へ

モノのプロパティを指定します。今回は「ESP32AirSensor01」としました。この名前が、ESP32ソースコードのSecret.hで指定するTHINGNAMEになります。

Device Shadowなどは設定する必要はありません。デフォルトのまま次へ

デバイスの証明書を設定します。AWS側で生成したものを使用しますので、「新しい証明書を自動生成」を選択して次へ

ESP32がMQTTへの接続とパブリッシュを行えるよう、ポリシーを設定します。ポシリーを作成をクリックしてください。

ポシリー名にはESP32AirSensorPolicy01と入力し、ポリシードキュメントに2つのポリシーステートメントを追加します。

共にポリシー効果を許可とし、MQTT接続するための「iot:Connect」とパブリッシュするための「iot:Publish」を追加します。ポリシーリソースにはともに「*」を入力してください。作成をクリックします。

証明書にポリシーをアタッチの画面に戻り、今作成したESP32AirSensorPolicy01にチェックを入れて、モノの作成をクリックします。

証明書と公開鍵が発行されます。デバイス証明書、パブリックキーファイル、プライベートキーファイル、AmazonルートCA1をダウンロードしてください。この画面を閉じるとダウンロードできなくなります。

モノの一覧の画面に戻ると、デバイスの作成が完了したことが表示されます。

デバイスデータエンドポイントの確認

左メニュー下の「設定」をクリックし、デバイスデータエンドポイントを確認します。このアドレスがESP32ソースコードのSecret.hで指定するAWS_IOT_ENDPOINTとなります。

PCで動作確認

ここまでの手順でMQTTへ接続できるようになっているはずです。まずはPCで動作確認を行いました。

今回はMQTT Xというクライアントを使用しました。

https://mqttx.app/

New ConnectionをクリックするとEdit画面が表示されますので、NameとClientIDにESP32AirSensor01、Hostにデバイスデータエンドポイント、Portに8883、SSL/TLSをオンにし、CertificateをSelf signedを選択します。CertificatesのCA Fileにはそれぞれ先ほどダウンロードしたルートCA、Client Certificate Fileにはクライアント証明書、Client key fileにはクライアント秘密鍵のファイルを指定します。Connectをクリックすると設定完了です。

IoT Coreのクライアントコンソールの左側メニュー→テスト→MQTTテストクライアントをクリックします。

トピックのフィルターにtest/topic01を入力してサブスクライブをクリックします。

MQTTXに戻り、topicにtest/topic01を入力して送信ボタンをクリックすると、AWS側のMQTTテストクライアントにも同じメッセージが表示されることが確認できます。

デバイスへ秘密鍵の登録とビルド

先ほどダウンロードしたデバイス証明書、秘密鍵、ルートCAをSecret.hに設定します。

ファイルをテキストエディタで開き、デバイス証明書をAWS_CERT_CRT、秘密鍵をAWS_CERT_PRIVATE、ルートCAをAWS_CERT_CAに書き込みます。

この状態になればソースコードをビルドし、ESP32に書き込むことができます。

動作確認

ここまでできれば、デバイスからMQTTでデータが送信できています!トピックのフィルターをnode/airsensorに変更し、しばらく待つと、デバイスから送信される温度、湿度、ほこりセンサの値が表示されます。

 

おわりに

今回はデバイスをIoT Coreに登録し、MQTTでデータが送信できることを確認できました。次回はこの値をOpenSearchで確認できるようにしていきます。

次回

ESP32をAWSに接続してみた(3) OpenSearchの設定

参考にしたページ

AWS IoT Core 初級ハンズオン