Windowsで AWS IoTを体験してみる

「AWS IoTってどんなの？」を体験するため 日本語の AWSマネジメントコンソールから「デバイスの設定」ウィザードを利用して動作を確認します。

* Windows10で行っております。
* 予め Pythonと gitをインストールしておいてください。
* ポート8883で外部インターネットに接続できる必要があります。
* こちらの手順を行ったとしても**「AWS IoTが動いた」以外の事は何一つわかりません**。

## 1. AWS IoT選択
AWS マネジメントコンソールから「AWS IoT」を選択。
構築するリージョンを右上で選択し「今すぐ始める」を選択します。

![aws1.jpg](https://qiita-image-store.s3.amazonaws.com/0/10796/c1c0b755-9d64-d42f-d98b-6a81afa2f7fc.jpeg)

## 2. 「AWS IoTコンソールにようこそ。」
左のメニューから「オンボード」を選択します。

![aws2.jpg](https://qiita-image-store.s3.amazonaws.com/0/10796/307c6c48-15ba-4079-6d00-8621bdd2fd98.jpeg)

## 3. 「AWS IoTに接続する」その１
「デバイスの設定」の「今すぐ始める」を選択します。

![aws3.jpg](https://qiita-image-store.s3.amazonaws.com/0/10796/23cba83c-60f8-3133-3c9d-2afaeb02c5f9.jpeg)

## 4. 「AWS IoTに接続する」その２
作業の内容が表示されます。
査読後に「今すぐ始める」を選択します。

![aws4.jpg](https://qiita-image-store.s3.amazonaws.com/0/10796/7e15f917-99af-d79e-ab73-8df1d4eeb8c9.jpeg)

## 5. 「AWS IoTにどのように接続していますか？」
プラットフォームと、AWS IoTデバイスSDKの選択をします。
今回は Windowsと Pythonを選択します。

選択後「留意が必要な前提条件」が表示さるので確認し「次へ」を選択します。

![aws5.jpg](https://qiita-image-store.s3.amazonaws.com/0/10796/d0263593-6d59-fb02-08d3-d476cee6e095.jpeg)

## 6. 「モノの登録」 ステップ 1/3
名前に任意の名称を記入し、「次のステップ」を選択します。

![aws6.jpg](https://qiita-image-store.s3.amazonaws.com/0/10796/75681d00-9039-6a4a-e4f4-088720faeae4.jpeg)

## 7. 「接続キットのダウンロード」 ステップ 2/3
表示内容を確認し「Windows」を選択。
必要なファイル一式が、 connect_device_package.zipとしてダウンロードされます。
ダウンロードを確認したら「次のステップ」を選択します。

![aws7.jpg](https://qiita-image-store.s3.amazonaws.com/0/10796/a93c19e8-ba8e-49cd-6042-6f0ed52acc64.jpeg)

## 8. 「デバイスの設定とテスト」 ステップ 3/3
ダウンロードしたファイルを使用したテストの方法が表示されます。
ブラウザは **この状態のままとし、「完了」は選択しないでください。**

![aws8.jpg](https://qiita-image-store.s3.amazonaws.com/0/10796/80c6ba6c-1993-078d-7035-a0a7e1dd245b.jpeg)

## 9. デバイスで接続キットを解凍する
ここから Windowsで操作を行います。
任意のフォルダでダウンロードした connect_device_package.zipを展開します。
こちらの例では PowerShell で Expand-Archiveを利用しました

![aws9.jpg](https://qiita-image-store.s3.amazonaws.com/0/10796/37f9d028-0204-2a2c-2cb7-dd4a1833a5a7.jpeg)

## 10. 実行権限を追加する
「デバイスの設定とテスト」の説明通りにコマンドを入力します。
実行ポリシーの変更の確認を求められますので「Y」を入力します。

![aws10.jpg](https://qiita-image-store.s3.amazonaws.com/0/10796/c19ed031-40f1-50d2-0b9f-7d9e9c309b88.jpeg)

## 12. デバイスから AWS IoTを使用してデータの送信を行います
.\start.ps1 を実行します。
SDK等はスクリプトが gitで取得します。
しばらくするとAWS マネジメントコンソールの画面にデバイスから送られたメッセージが表示されます。
※なんかこの画面 "sequence"が 0ばっかりですが...

![aws11.jpg](https://qiita-image-store.s3.amazonaws.com/0/10796/303943ea-d5c0-c050-2dd9-a0ca504210fc.jpeg)

## 13. デバイスにメッセージを送信する
ブラウザの「ステップ4:デバイスにメッセージを送信する」に文字列を入力し「メッセージ」を選択すると、

![aws12_1.jpg](https://qiita-image-store.s3.amazonaws.com/0/10796/5c7047e7-70e6-00ec-1aad-4ff78dde236c.jpeg)

入力文字列が Windows側に表示されます。
※そのままですとデバッグ表示が多い為、見づらいですが....

![aws12_2.jpg](https://qiita-image-store.s3.amazonaws.com/0/10796/3bc2a045-900b-85a1-b3d4-4cab77534f0a.jpeg)

## おまけ

* basicPubSub.py は「sdk/test/Python」トピックを使用しています。

* .\star.ps1 で実行されるスクリプトは、 aws-iot-device-sdk-python\samples\basicPubSub\basicPubSub.py ファイルです。
basicPubSub.pyの 74行目のデバック出力を logging.DEBUGから、logging.INFOにする事で表示が抑えられます。

```python
# logger.setLevel(logging.DEBUG)
logger.setLevel(logging.INFO)
```
![omake1.jpg](https://qiita-image-store.s3.amazonaws.com/0/10796/3c3c739a-dd7c-c9b9-4383-e4708b878b99.jpeg)