ESP32とAWSIoTとAlexaを繋げてみた(ESP32とAWSIoT編)

#ESPからAWSIoTにデータをあげる
ポリシーを作りましょう
AWS IoTを始めよう
<img width="823" alt="スクリーンショット 2018-04-28 16.15.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/243994/0237e3a0-66da-41b9-77c9-9d6a9814c9bd.png">
ここからIoTデバイス（ESP32）の登録を行う
<img width="978" alt="スクリーンショット 2018-04-28 16.16.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/243994/738501d1-6d23-ebf3-de48-2892cfe5d967.png">
今回は単一のモノを作成します
<img width="829" alt="スクリーンショット 2018-04-28 16.17.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/243994/6764a9bf-3334-2967-d54e-a2912348c073.png">
将来的にESP32を複数台繋げる予定、BME280センサデータを取得する予定ですのでこのようにしました
<img width="847" alt="スクリーンショット 2018-04-28 16.25.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/243994/91e0c560-34b5-4f5a-b067-d86f9bce185f.png">
証明書を作成します
ダウンロード画面が現れるので全てダウンロードしましょう
**AWS IoT のルート CAも忘れずに**
<img width="848" alt="スクリーンショット 2018-04-28 16.25.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/243994/d602c963-70b4-694e-83c6-b39c739ab1c2.png">

１回戻ってポリシーを作りましょう
<img width="880" alt="スクリーンショット 2018-04-28 16.31.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/243994/08abd88f-32c3-1ec2-317f-6c6c442832a6.png">
<img width="764" alt="スクリーンショット 2018-04-28 16.34.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/243994/5ff293af-cfb4-c303-e026-a292aa496c0e.png">

さきほど作ったモノにポリシーをアタッチします
<img width="946" alt="スクリーンショット 2018-04-28 17.13.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/243994/802c4af4-119a-2744-0646-eeed0031b120.png">

ここからespに入ります
esp-ifd内`examples/protocols/_aws-iot/subscribe_publish`に入っていきます
`aws-root-ce.pem`を先ほど落としたAWSIoTのルートCAに書き換えます
先ほど落とした証明書のうち二つを
`・private.pem.key`
`・certificate.pem.crt`
にファイル名を変更しmain/certsに配置します

`make menuconfig`で各種設定をします
`WiFi SSID`
`WiFiPassword`
`AWS IoT Client ID(さきほど作ったモノの名前)`
`AWS IoT Endpoint Hostname`
を設定します

最後にシリアル通信の設定を行い
make flashで書き込み完了です

<img width="513" alt="スクリーンショット 2018-04-29 11.33.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/243994/0af0811f-a2bc-4c76-c486-c60b9ee6dda3.png">

<img width="791" alt="スクリーンショット 2018-04-29 11.34.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/243994/fc816029-e9bc-fccc-161d-320b876ab9ec.png">

繋がりました

#ESP32でBME280のデータを取得しよう
今回はこいつを使います
ＢＭＥ２８０使用　温湿度・気圧センサモジュール
http://akizukidenshi.com/catalog/g/gK-09421/


I2CとSPIが使えるらしいですね
I2Cのほうが線が少なくて済むのでここではI2Cを選択します
**I2Cの場合はJ1 J2 J3をはんだジャンパしましょう**
(ここでずっとこけてた＾＾；データシートは使う前に読もうね＾＾；)

Sample code for reading values from a BME280 via ESP-IDF's I2C master driver
https://github.com/yanbe/bme280-esp-idf-i2c

先人様の力を借ります
make flashでエラーが出る場合
cloneがうまくいっておらずcomponents内でこけている場合が多いので
components/bme280/driver内に
https://github.com/BoschSensortec/BME280_driver
これらをいれてあげてください

自分の環境はDevkit-Cなので
SCK-GPIO22
SCL-GPIO21
SDO-VDD
と接続し、main.c内のdefineを
`#define SDA_PIN GPIO_NUM_21`
`#define SCL_PIN GPIO_NUM_22`
とし、make flash
make monitorをしてみるとデータが取得できました。
<img width="540" alt="スクリーンショット 2018-04-30 1.05.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/243994/4e70c461-aa39-54ed-6fd4-c7c828351877.png">


#BME280のデータをAWS IoTにPublishしよう
とりあえずとれました。
https://github.com/notitle420/upload_bme280_to_aws_iot
<img width="793" alt="スクリーンショット 2018-04-30 14.15.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/243994/89ef8a14-99f7-1210-7f68-e347fa13ffe3.png">


これじゃどこにもログが残らなくて　Lambdaから取得できないことに気づく涙