ESP32を始めてみる AWS IoTにデータを飛ばす編
ということをやってので備忘録として思い出して書いておきます。
抜けている個所や説明が間違っていたらすみません。
適時公式ドキュメントとかで保管して頂きたく。
下の写真でスイッチを押したらDHT11センサーから取得した温湿度をESP32でAWS IoTに飛ばしてS3にデータを保存します。
AWSの設定
AWS IoTのコンソールを開きモノを作成します。
次に接続時に使う証明書を作成してダウンロードします。
ポリシーを作成して証明書をひもづけます。
作成したモノと証明書をひもづけます。
今回作成したモノのAPIエンドポイントのURLをコピっておきます。
最後にデータをS3に保存するルールを作成します。
ESP32というルールを作成してS3にメッセージを格納するというアクションを設定します。
ルールクエリの'ESP32/DHT11'がトピックの部分になります。
これでAWS側の準備は完了だったはずです。
Arduinoでスケッチ作成
必要な以下のライブラリをライブラリマネージャから入れます。
・ArduinoJson
・DHT sensor library
・Adafruit Unified Sensor
スケッチ例にあるWiFiClientSecureをもとにスケッチを作成していきます。
スケッチ例の11行目と12行目にWifiのSSIDとパスワードをセットし、14行目にはコピっておいたAPIのエンドポイントを貼り付けます。
20行目のtest_root_caにダウンロードしたルート証明書の内容を貼り付けて置き換えます。
50行目のtest_client_keyにxxxxxxxxxx-certificate.pemの内容を貼り付け、
51行目のtest_client_certにxxxxxxxxxx--private.pem.keyの内容を貼り付けます。
最後に76行目と77行目のコメントアウトを除きます。
スイッチが押されてOFFを検知したらDHT11から読みだした温度と湿度をJSONにセットしてHTTPSに飛ばします。
最後にスケッチを貼り付けておくのでご笑覧ください。
スケッチができたらESP32に書き込んで動作確認を行います。
まずはシャドウステータスの更新を行ってみます。
シャドウステータスの場合はURLが "/thing/作成したモノの名前/shadow"になります。
それではスイッチを押してみると...
更新されました。
シャドウステータスが送信したJSONデータになっています。
次にURLをトピックのものに書き換えてデータがS3に保存されることを確認します。
トピックのURLは "/topics/ESP32/DHT11"になります。"/topics/"の後ろがルールクエリとなる仕組みのようです。
それではスイッチを押すと...
ちゃんとデータが保存されていました。
というわけでこんな感じでAWS IoTとESP32で遊ぶことができました。
今回は簡単にS3にデータ保存するだけでしたが、AWS lambdaでサーバーレス処理とかにもチャレンジしてみたいですね。
あと、HTTPSをMQTTにするとかも。
最後にスケッチを貼り付けておきます。