寝台急行はまなす

札幌駅 22:00発 増結12両編成 青森行き

ESP32を始めてみる AWS IoTにデータを飛ばす編

ということをやってので備忘録として思い出して書いておきます。

抜けている個所や説明が間違っていたらすみません。

適時公式ドキュメントとかで保管して頂きたく。

 

下の写真でスイッチを押したらDHT11センサーから取得した温湿度をESP32でAWS IoTに飛ばしてS3にデータを保存します。

 

 

AWSの設定

AWS IoTのコンソールを開きモノを作成します。

f:id:ken5owata:20171021184228p:plain

 

次に接続時に使う証明書を作成してダウンロードします。

f:id:ken5owata:20171021185207p:plain

f:id:ken5owata:20171021185244p:plain

ポリシーを作成して証明書をひもづけます。

f:id:ken5owata:20171021194624p:plain

f:id:ken5owata:20171021194703p:plain

 

作成したモノと証明書をひもづけます。

f:id:ken5owata:20171021190552p:plain

 

今回作成したモノのAPIエンドポイントのURLをコピっておきます。

f:id:ken5owata:20171021192104p:plain

 

最後にデータをS3に保存するルールを作成します。

ESP32というルールを作成してS3にメッセージを格納するというアクションを設定します。

ルールクエリの'ESP32/DHT11'がトピックの部分になります。

f:id:ken5owata:20171021195626p:plain

これでAWS側の準備は完了だったはずです。

 

Arduinoでスケッチ作成

必要な以下のライブラリをライブラリマネージャから入れます。

・ArduinoJson

・DHT sensor library

・Adafruit Unified Sensor

 

スケッチ例にあるWiFiClientSecureをもとにスケッチを作成していきます。

スケッチ例の11行目と12行目にWifiSSIDとパスワードをセットし、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"になります。

それではスイッチを押してみると...

f:id:ken5owata:20171021234903p:plain

f:id:ken5owata:20171021221146p:plain

 更新されました。

シャドウステータスが送信したJSONデータになっています。

 

次にURLをトピックのものに書き換えてデータがS3に保存されることを確認します。

トピックのURLは "/topics/ESP32/DHT11"になります。"/topics/"の後ろがルールクエリとなる仕組みのようです。

それではスイッチを押すと...

f:id:ken5owata:20171021234921p:plain

f:id:ken5owata:20171021234545p:plain

 

ちゃんとデータが保存されていました。

f:id:ken5owata:20171021234944p:plain

というわけでこんな感じでAWS IoTとESP32で遊ぶことができました。

今回は簡単にS3にデータ保存するだけでしたが、AWS lambdaでサーバーレス処理とかにもチャレンジしてみたいですね。

あと、HTTPSをMQTTにするとかも。

 

最後にスケッチを貼り付けておきます。

GitHub - satoken5/ESP32Sample: ESP32のサンプルスケッチ

gistf1bed342d0058e04fefcd897c1b0d00f