M5StickCとAzure IoT Centralを連携してデータを可視化する③　～M5StickCとAzure IoT Centralの接続編～

# はじめに
この記事はシリーズになっています。
目標は、「M5StickCとAzure IoT Centralを連携してデータを可視化すること」です。必要な人が必要な記事を読んでもらうことで、ゴールまでたどり着けることを意識しています。
構築するシステム構成は、以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/17c632b7-2be7-a3ee-ae60-9933db7fac4c.png)

1. [M5StickCとAzure IoT Centralを連携してデータを可視化する① ～M5StickC開発環境準備編～](https://qiita.com/yukimatsu/items/52c6b8435cc81d1c9dfa)
1. [M5StickCとAzure IoT Centralを連携してデータを可視化する② ～Azure IoT Central環境構築編～](https://qiita.com/yukimatsu/items/e35542e16792e7818720)
1. [M5StickCとAzure IoT Centralを連携してデータを可視化する③ ～M5StickCとAzure IoT Central接続編～](https://qiita.com/yukimatsu/items/c72ee84fb64cb4ba5118)

# この記事で出来るようになること
* M5StickCとAzure IoT Centralを連携する
* Azur IoT Central で受信したデータをグラフにして可視化する

# 対象
* M5StickCやAzureなども比較的得意だが、実際に両方を接続して試してみたい人
* [「M5StickCとAzure IoT Centralを連携してデータを可視化する① ～M5StickC開発環境準備編～」](https://qiita.com/yukimatsu/items/52c6b8435cc81d1c9dfa)や[「M5StickCとAzure IoT Centralを連携してデータを可視化する② ～Azure IoT Central環境構築編～」](https://qiita.com/yukimatsu/items/e35542e16792e7818720)を読んで、いよいよAzure IoT Centralに接続しようと考えている人

# 手順
以下の点を前提として手順を記載します。
以下の点が不明な場合は、以前の記事を参考にして下さい。

* M5StickCの開発が出来る環境が整っていること
* Azure IoT Central の環境構築が終わっていて、接続情報などを取得できること

## １．UI Flowを開く

UI Flowのリンク

https://flow.m5stack.com/

## ２．接続しているデバイスを追加
今回使用するセンサは以下になります。

* [M5StickC ENV II Hat（SHT30/BMP280/BMM150搭載）](https://www.switch-science.com/catalog/6559/)
* [M5Stack用光センサユニット](https://www.switch-science.com/catalog/4051/)

こちらの [＋]ボタンからセンサを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/0d30e6ef-6217-ef4d-0c93-f465080a1a1d.png)

M5StickC ENV II Hat：Hat側の選択して、[＋]ボタン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/3e2992b5-b89a-20d6-55e7-03d8fa198ffb.png)


M5Stack用光センサユニット：Units側の選択して、[＋]ボタン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/011c36c5-541f-2e2b-0e8c-0da323e6145d.png)

それぞれのデバイスにチェックを入れて、使用できるようにします。

ブロックに、[Units] と [HAT] が追加されていることを確認します。
[ライト]と[ENV Ⅱ]が確認できたら、これらのセンサモジュールを使用することが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/22c0555f-13c2-6642-fc61-8c9ed24d5da7.png)

## ３．Azure IoT Central に接続するブロックを追加

[IoTCloud] - [Azure] を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/4c69d64a-e7c9-80a5-23a9-13dc183fd27d.png)

Azure IoT Central に接続するブロックがあるので、これを使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/fc914c17-62ab-9b11-8386-38a9b95b9e17.png)

Azure IoT Central で、デバイスを作成した時にメモをした、
**[IDスコープ]**
**[デバイスID]**
**[主キー]**
を、[IoT Central]のブロック内に記述します。
以下がプログラムの全体になります。これで、Azure IoT Centralにデータを送信することが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/067f48ff-b6d6-4552-136e-f05e3928e456.png)

また、Azure IoT Central にデータを送る場合には、[Publish D2C message] のブロックを使用します。
送信するデータはJSON形式で、[key]に指定される名前は、Azure IoT Central 上のデバイステンプレートで指定した名前と一致させる必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/cb9c9348-1180-2eae-46f8-bb46f1d2af48.png)

[key]のブロックは、[マップを作成] のブロックの [＋] をクリックすることで追加できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/ebc2194e-ddef-cb3c-0e9c-59dbf02a5024.png)



※Azure IoT Central で[デバイステンプレート]を作成した時のここの名前を一致させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/0e90bced-9495-07ba-eedf-3f2d48e870e7.png)

## ４．Azure IoT Central でデータが受信できていることを確認
ここからは、Azure IoT Central側の操作になります。
Azure IoT Central の画面から、既に作ってあるデバイス一覧を開き、[デバイス名] から、デバイスを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/f398fc60-58b5-3fd2-ce85-b7f0ef110d49.png)

データを受信していない状態は、このように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/7c54f33d-7248-ffef-1970-6bb255adaf9a.png)

データを受信した状態は、このように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/099a53f1-fe53-2b5b-dc41-ebccddbf8881.png)

M5StickCからデータをアップロードして、データを受信していることが確認できます。

１つのデータを更に詳しく見てみると、M5StickC側でJSONにした形式でデータが送られていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/a3e61f46-0e50-4099-6626-c6db5bfa0755.png)

## ５．ダッシュボードで可視化する

少しずつデータが溜まってきました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/e8834bd8-89d9-7893-bfbe-5796b09dd1ce.png)

メニューより、[ダッシュボード] - [新しいダッシュボード] で新しいダッシュボードを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/4ba022be-698d-d9e1-bf9a-41ef867ebc9c.png)

適当な名前を付けて、ダッシュボードを作成します（デフォルトでも大丈夫です）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/033f4bce-e079-97b1-5fb5-4f53e6e85b10.png)


新しいダッシュボードが出来ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/d5ea1979-5e78-cecb-32ba-a61ff3346c8c.png)


[ダッシュボードを編集] より、ダッシュボードを編集します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/ff12f4dd-73f0-40cd-5ffe-21caa972534a.png)

様々なタイルが選択可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/45638f8e-cc83-ab9a-0f64-ee8267a9dbb6.png)

[タイル] を設置する場合は、ドラッグ＆ドロップで設置できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/9c025726-9ec1-a9b9-71a0-af5ce6ee14f2.png)

[折れ線グラフ] を設置しました。中身はまだありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/5da13e01-c667-3009-1ff4-8ad7082cef82.png)

[設定] ボタンから各種設置を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/6dc9c62f-71b2-bc62-4b6f-e3a7e30a2993.png)

[グラフの構成] から [タイル] に表示されるデータや表示の仕方を設定できます。
画像は見切れてますが、[humidity] を選択しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/70367aaf-2ae0-2a2d-cfe3-ace1c4d54b72.png)

[更新] を押すと、[タイル] の情報が更新されます。
ダッシュボードしても、[保存] しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/88b4315c-4098-d944-4850-fb11357a4928.png)

今後は、[ダッシュボード] として、データをグラフ化してみることが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/04b74d04-c7ed-71d1-02e2-b3f177c2216e.png)

すこしそれっぽくカスタマイズしてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/762c105e-e5e3-a6c6-2572-845b17fc01bf.png)

以上で、以下のことが出来るようになりました。

* M5StickCとAzure IoT Centralを連携する
* Azur IoT Central で受信したデータをグラフにして可視化する

## ５．おまけ：[分析]を使ってグラフ化する
メニューから、[分析] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/0f55cfe3-4159-d9f8-6fac-84ab50c0f237.png)

[デバイスグループ]：グラフ化したいデバイスのグループ
[テレメトリ]：今回は、温度データをグラフ化します
設定が終わったら、[分析] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/f362e2b7-83b0-b298-084b-679ba44ae315.png)

以下のようにグラフ化して分析することが出来ます。
時間のスケールなどを調整してみるとより見やすくなると思います。
以下は、温度センサなので変化させるのが難しいですが、後半はちょっとM5StickCのENV HATを掌で握ってみました。ちょっと温度が上がりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/90247deb-fe04-6bed-4402-d851cc10c3dc.png)

以下が、湿度をグラフ化したものになります。
温湿度センサを手で握っていたタイミングと、息を吹きかけてたタイミングで、値が上がっているのが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/a622a7ab-4953-751f-31d6-5dcc89082c31.png)

グラフの右上から、以下のオプションも使えます
[データをテーブルとして]：テーブルで表示
[CSVとしてダウンロード]：CSV形式でダウンロード
[マーカーをドロップする]：グラフにマーカーを表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/584d24ae-fad7-1f57-f883-f6d5937128e6.png)

[マーカーをドロップする]を選択すると以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/040bfc20-39a0-8fa5-489d-cd824497e995.png)

# 最後に
「M5StickC と Azure IoT Central を連携してデータを可視化する」までの流れが１通り完了しました。
あとは、デバイス側に液晶があるのでそちらでもセンサの値が見えるようにしたり、クラウド側でルール付けを行ってある閾値を超えたらメール送信したりなどの活用を出来ると思います。

Azure IoT Centralにデータがアップされれば、それ以降の処理などもAzure側でいろいろ処理することが可能になります。気が向いたら、もう少しトライした内容を追記したいと思います。

# おまけ
本記事は、以下のキャンペーンに参加しています。

https://qiita.com/official-events/b7811ce1542be54e6efe