AE2100でソルティスターの「SpeeDBee Hive」を使用してみよう(3) ―AWS連携編―

# 要約
* この記事では、株式会社ソルティスター（以下、ソルティスター）の「SpeeDBee Hive（AE2100対応版）」を使用して、IoTセンサーのデータ収集・可視化や制御、クラウドとの連携方法について解説します。
* 第3回の「AWS連携編」では、SpeeDBee HiveとAWSを連携してCO2濃度を可視化します。

# はじめに
本記事は、AE2100にインストールしたSpeeDBee Hiveを活用する3つ目の記事です。
第2回の記事では、CO2濃度の値によってパトランプの制御を行いました。

* [AE2100でソルティスターの「SpeeDBee Hive」を使用してみよう(1) ―SmartHopセンサーデータの収集・可視化編―](https://qiita.com/shimatak/items/14d2001b04620a25a242)
* [AE2100でソルティスターの「SpeeDBee Hive」を使用してみよう(2) ―パトランプ制御編―](https://qiita.com/shimatak/items/1dafcc8bb79574ab6052)
* AE2100でソルティスターの「SpeeDBee Hive」を使用してみよう(3) ―AWS連携編―　（本記事）

SpeeDBee HiveはSmartHopを含む様々なセンサーデータを収集するコレクタの他に、AWS IoT CoreやAzure IoT hub等のクラウドとも簡単に連携可能なエミッタという機能ももっています。
クラウドの膨大なリソースや各種サービスを活用することにより、データの一元管理やエッジ単体では処理が困難な部分の負荷分散等を実現できるようになります。

本記事ではSpeeDBee HiveとAWS IoT Coreを連携し、収集したCO2濃度をAWS環境で可視化するまでを解説します。


# 環境
実行環境は次の図のような構成を前提とします。
![環境図(SpeeDBee Hive第3回).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/b2533a49-81ac-d2f3-324a-49b6b08868f5.png)

本記事ではAE2100をAWS IoT Coreに接続します(※1)。
AE2100はLTE対応モデルをご使用いただくか(※2)、LANポート1から有線でインターネット回線に接続してください。
上図はLTE非対応モデルを使用する際の構成です。

なお、SpeeDBeeHiveのバージョンは3.3.1のものを使用しています。

※1 AWSのアカウントが必要となります。
※2 SIMカード（Micro SIM）はご自身で用意してください。


# AWS IoT Coreの設定（AWS環境）
今回は[前回の記事](https://qiita.com/shimatak/items/1dafcc8bb79574ab6052)で収集できるようにしたCO2データをAWS IoT Coreと連携します。
本章では、[AWSマネジメントコンソール](https://aws.amazon.com/jp/console/)でAWS IoT Coreの設定を行う方法を解説します。

### ■ ポリシーの作成
まずはAWS IoT Coreのポリシーを作成します。
AWSマネジメントコンソールにログインしてIoT Coreサービスを選択し、メニュー内の「安全性」＞「ポリシー」を選択し、「ポリシーを作成」をクリックします。
![AWS_ポリシー作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/5749fd3d-4fb0-f362-79e3-3370cfb2db20.png)

ポリシー名、ポリシー効果、ポリシーアクション、ポリシーリソースを入力し、「作成」をクリックします。
![AWS_ポリシー作成2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/50cd8bfb-4b42-e712-80d6-7b8d86bdaca0.png)
項目|設定内容
:-:|:-:
ポリシー名|任意（本記事では「Hive」）
ポリシー効果|許可
ポリシーアクション|*
ポリシーリソース|*

### ■ モノの作成
次に、モノを作成します。
メニュー内の「管理」＞「モノ」を選択し、「モノを作成」をクリックします。
![AWS_モノ作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/d4b6d352-e79c-b392-7fff-c87c33651849.png)

「1つのモノを作成する」を選択し、「次へ」をクリックします。
![AWS_モノ作成2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/85ba6fec-9a4e-22dd-3c2b-726457fc5705.png)

任意のモノの名前（本記事では「HiveThing」）を入力し、「次へ」をクリックします。
![AWS_モノ作成3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/db499700-3c78-0247-873c-92511594651f.png)

「新しい証明書を自動生成（推奨）」を選択し「次へ」をクリックします。
![AWS_モノ作成4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/a03df4d6-8777-fbe1-760d-e02c302816c2.png)

先程作成したポリシーを選択し、「モノを作成」をクリックします。
![AWS_モノ作成5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/0e2a7b27-31ef-6808-0166-0cf64fe5c27e.png)

「証明書とキーをダウンロード」にて下記をすべてダウンロードし、「完了」をクリックします。
* デバイス証明書
* プライベートキーファイル
* AmazonルートCA1
![AWS_モノ作成6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/b835ce6d-d649-3eed-e261-75cf7bbfffae.png)


# AWSエミッタの設定（SpeeDBee Hive側）
SpeeDBee Hiveのエミッタ機能を利用することで、前章で作成したAWS IoT Coreの環境に簡単にCO2データを送信することが可能です。

### ■ 出力先の設定
ここでは、前章で作成したAWS IoT Coreの環境とAE2100の接続を行います。
「エミッタ」タブにある「出力先」の「＋」アイコンをクリックし、出力先設定画面を表示します。
各項目は下表のように設定し、「保存」ボタンをクリックします。
![Hive_出力先設定1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/afbbb348-59df-c80a-be71-b844b873fc9c.png)
項目|設定内容|備考
:-:|:-:|:-:
タイプ|AWS|プルダウンから選択
出力先名|AWSサーバー|任意の名称
ホスト|[エンドポイントを入力]|AWS IoT Coreサービスの「設定」メニューから取得
ポート|443|AWS IoT Coreのポート番号(通常は443)

続けて、AWS IoT Core設定でダウンロードした証明書関連のファイルをアップロードし、「保存」ボタンをクリックします。
![Hive_出力先設定2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/1bcf6673-b99f-68c4-cc17-660e2fea563a.png)
項目|設定内容|
:-:|:-:
CA証明書|AmazonルートCA1を選択
SSL証明書|デバイス証明書を選択
秘密鍵|プライベートキーファイルを選択

証明書の登録が完了したらAWS IoT Coreとの接続確認が可能となります。
「Test」ボタンをクリックして「接続テストに成功しました。」の表示が出た場合、正常に接続が出来ていることになります。
![Hive_AWS接続テスト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/7f6ddf45-52ad-d804-e0f0-e7007b54ac75.png)

### ■ 送信データの設定
次に、送信するデータの登録を行います。
本記事ではCO2データを10秒間隔でAWS IoT Coreに送信します。

「エミッタ」タブにある「送信データ」の「＋」アイコンをクリックし、送信データの登録を行います。
下表を参考に登録が完了したら「保存」ボタンをクリックしてください。
ここで設定した「送信先」を次章で使用します。

※「送信データ」のラジオボタンで「分析データを送信する」を選択すると、最大や平均等の代表値を送信することも可能です。

![Hive_送信データ設定1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/73883944-c21f-b839-0834-c4d3939efc78.png)
項目|設定内容|備考
:-:|:-:|:-:
エミッタ名|CO2|任意の名称
クライアントID|AWS-1|任意の名称
出力先|AWSサーバー（AWS）|出力先で設定したものをプルダウンから選択
送信先|hive(AWS)|任意の名称。AWS環境で使用します。
送信間隔(秒)|10|任意の間隔

次に、実際に送信するデータ（今回はCO2データ）を選択します。
データ一覧の「編集」ボタンをクリックし、下表を参考に登録が完了したら「新規」ボタンをクリックしてください。
![Hive_送信データ設定2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/ce64592e-ceef-8091-22b2-51de34cdc1c6.png)
項目|設定内容|備考
:-:|:-:|:-:
コレクタ|CO2コントローラー|設定済みのコレクタをプルダウンから選択
データ|CO2濃度(PPM)|設定済みのデータをプルダウンから選択
送信スキーマ名|PPM|任意の名称
小数桁数|1|任意の桁数

以上でSpeeDBee Hive側の設定は完了です。

# AWS IoT Coreでのデータ受信確認（AWS環境）
SpeeDBee Hive から送信された生データは AWS IoT Coreのサービス画面で確認できます。
メニュー「MQTTテストクライアント」を選択し、トピックのフィルターに 前章で設定した送信先（今回はhive(AWS)）を入力し、「サブスクライブ」をクリックします。
![AWS_MQTTテスト1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/ef82acab-9127-b22a-f2b9-ab6b81baa62d.png)

ここまでの設定に問題がなければ、CO2データがJSON形式で10秒おきに表示されます。
![AWS_MQTTテスト2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/1ebb5d04-3f3e-daa3-7a76-882dc9ddbd8f.png)

取得したデータはAWSの他のサービスと連携することでデータの蓄積や可視化をすることが可能です。


# AWS CloudWatchでの可視化（AWS環境）
本記事ではAWSサービス連携の一例として、モニタリングサービスであるCloudWatchを使用してCO2濃度の可視化をしてみました。
CloudWatchの詳細や可視化方法については本記事では解説しないので、[「AWS IoTを使ってデバイスから受信した情報をCloudWatch Logsに記録、表示してみた」](https://dev.classmethod.jp/articles/iot-m5stick-cwatch-logs/)等の記事を参考に構築してみてください。
![CloudWatch_CO2可視化（AWS）.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660784/f2a0ee9f-cb7d-d532-a2b4-77163bbd91b5.png)


# まとめ
今回はAE2100にインストールしたSpeeDBee Hiveで収集したデータをAWS IoT Coreと連携する方法について解説しました。
本記事ではCloudWatchを使用した可視化を行いましたが、他のサービスを活用することでデータベースとしての蓄積や様々な分析をAWS側で行うことも可能です。

SpeeDBee Hiveは記事内で紹介したSmartHopコレクタやイベント設定、AWSエミッタの他にも様々な機能があります。（詳細は[こちら](https://www.saltyster.com/products-solutions/products/speedbee-hive/)）
エッジ（AE2100）側でFFT等のもう少し高度なリアルタイム分析を行ったり、AIと連携するような使い方も可能なので、是非皆さんの方で使い倒してみてください。

前回の記事：
・[AE2100でソルティスターの「SpeeDBee Hive」を使用してみよう(1) ―SmartHopセンサーデータの収集・可視化編―](https://qiita.com/shimatak/items/14d2001b04620a25a242)
・[AE2100でソルティスターの「SpeeDBee Hive」を使用してみよう(2) ―パトランプ制御編―](https://qiita.com/shimatak/items/1dafcc8bb79574ab6052)

SpeeDBee Hiveの関連記事：
・[～「SpeeDBee Hive」でBluetooth対応のセンサーコレクタを開発する(SwichBot温湿度計) ～](https://qiita.com/ss_nagahari/items/d26ad5e20a0fcd38a49a)
・[～「SpeeDBee Hive」でBluetooth対応のセンサーコレクタを開発する(INKBIRD温湿度計)　～](https://qiita.com/ss_nagahari/items/45ad50b2ced82b1c0354)