家の環境（温度・湿度・大気圧）をAWSに蓄積して分析してみるの巻　その１

# ゴール
- センサーデバイスからAWSにデータを送り、集めたデータをもとに家の環境を可視化すること。

# 目的
- 来年からAWSを使ったDB周りの開発をやる予定なのですが、これまで実務で経験なかったので、勉強のためにやってみようと思いました。
- とは言え何作ろう？と思ったときに、来年第一子が生まれるので、家の環境のデータを集めて分析して、改善できるようにしたいなと思ったので。

# 環境
* 開発PC(mac)
* [ESP-IR+TPH Monitor 完成品](http://indoor.lolipop.jp/IndoorCorgiElec/ESP-IR+TPHMonitor.php)
* [GY-BME280-3.3 大気圧センサーモジュール](https://www.amazon.co.jp/Sunkee-MKOT0013-GY-BME280-3-3-%E5%A4%A7%E6%B0%97%E5%9C%A7%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB/dp/B01CQBDKA2/ref=as_li_ss_tl?ie=UTF8&qid=1482903503&sr=8-2&keywords=gy-bme280&linkCode=sl1&tag=mitani8307-22&linkId=15b43f5e5a33b4b0b917c6d5c5dd87c3)(これはデバイスにくっつけます)
* [USB変換チップとケーブル（DSD TECH USB to TLL Serial）](https://www.amazon.co.jp/gp/product/B072K3Z3TL/ref=ppx_yo_dt_b_asin_title_o00_s01?ie=UTF8&psc=1)
* [ACアダプタ](https://www.amazon.co.jp/gp/product/B01NBMDZQH/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)
* AWS IoT


# セットアップ
## 開発PCのセットアップ
1. pythonのバージョンを3に上げます([参考](https://qiita.com/sebeckawamura/items/4bc5945245877f250d2e))。
2. Arduino IDEのセットアップをします（以下手順参照）。
    3. https://poche.xsrv.jp/iot-gym/2019/03/01/002/
    4. https://www.indoorcorgielec.com/resources/arduinoide%E8%A8%AD%E5%AE%9A/esp-wroom-02%E6%90%AD%E8%BC%89%E8%A3%BD%E5%93%81/
5. Mosquittoのセットアップをします（mqtt接続確認用）（[参考](https://qiita.com/segur/items/0536ced1fe741b55713d)）
6. USB変換チップのドライバインストール  
[ここにあるMac用インストーラーをDLしてインスコ](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers)

## AWS IoTのセットアップ
バージョンによって操作手順が変わったりするので、参考程度に読んでください。

1. AWSコンソールで`IoT Core`のサービスを選択します。
3. ポリシーの作成
    4. `安全性 > ポリシー`を選択します。
    5. こんな画面が表示されるので`ポリシーの作成`を選択します。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411926/49644bc1-4349-eeaf-e4d5-111d43d2b152.png)
    6. ポリシーの名前とアクションの認可を設定します。とりあえず今回はずぶずぶの設定にします。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411926/10de8ac4-73a1-98a1-970d-e5c65598956c.png)
    7. 作成を選択します。問題なかったら正常に作成されたよのメッセージが出ます。

2. `Things`と`証明書`の作成
    3. `管理 > モノ`を選択します。まだデバイス登録がない場合はこんな画面が出るので、`モノの登録`を選択します。  
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411926/e7e15a48-70a2-98ce-4dd1-5cfeca04cdee.png)
    4. `単一のモノを作成する`を選択します。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411926/6b5e1cf7-8c4a-3ab5-628d-e1ce54afc6c3.png)
    5. デバイスの名前や属性（≒タグ）などの設定をおこないます。今回は家の環境を測定をするということで、名前に`house_environment_sensor`と名付けました。
また、`検索可能なモノの属性の設定 (オプション)`というところでタグ登録ができるので製品名と機能(何が測定できるか)を設定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411926/2bb2ec86-fe73-76b4-bbfa-c45f85504615.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411926/dea05509-dcec-b16d-82e5-32daf1eb54d9.png)
    2. 証明書の設定画面に移ります。  
    今回は`1-Click 証明書作成 (推奨)`で証明書作成をおこないます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411926/67f957bb-9d79-cdb6-9a26-4adf33d575f6.png)

    2. 証明書が作成されるので作成されたキー等のファイルをダウンロードします（ページ閉じるとダウンロードできなくなるので注意。ただしルートCA証明書は[ここ](https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/server-authentication.html)でもダウンロードできます）。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411926/73b79591-7ef0-7d3f-d861-36fc2507a661.png)
    3. 同じ画面下にある、`ポリシーをアタッチ`を選択します。
    4. 作成したポリシーが選択されていることを確認して、`モノの登録`を選択します。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411926/75f55a32-d272-587f-08f8-8d7ab5afaf2f.png)これでデバイスの設定が作成されました。
    5. 最後に、証明書を有効化します。`安全性 > 証明書`で、作成した証明証の`アクション`で`有効化`を選択します。

## AWS IoTへの接続確認
PCからAWS IoTへmqtt接続の確認をします。Mosquittoを使ってテストしてみようと思います。

1. Mosquittoをインストールします([参考](https://qiita.com/segur/items/0536ced1fe741b55713d))。
2. [こちら](https://qiita.com/is_ryo/items/ecf822b12513be1bc156)を参考に接続テストをおこないます。注意としては、ルートCAのファイルは`Amazon Trust Services エンドポイント`のルートCAじゃないと接続できません（新しく作成した場合はこれじゃないとダメっぽい）。

# 次回
[家の環境（温度・湿度・大気圧）をAWSに蓄積して分析してみるの巻　その２](https://qiita.com/KG_/items/aa5101e2656678899c51)