Check! ESP-WROOM-02 から Azure Event Hubs にデータを送り、Power BI で可視化する（1） ～ 構成編

こんにちは、 @dz_ こと大平かづみです。

Prologue - はじめに
====
センサーデータを [Azure](https://azure.microsoft.com/ja-jp/ "Microsoft Azure") に送って、可視化する試みです！

まずは構成について整理します。

構成
====
Azure にも IoT に関するサービスがたくさんありますが、今回はできるだけ簡単にできるよう、以下の構成としました。

|用途| 使うもの |
|---------|--------------|
| マイコン | [ESP-WROOM-02](https://www.switch-science.com/catalog/list/?keyword=ESP-WROOM-02 "ESP-WROOM-02 関連製品一覧 - スイッチサイエンス") |
|開発環境 | [Arduino IDE](https://www.arduino.cc/en/Main/Software "Arduino - Software") |
| クラウド連携 | [Azure Event Hubs](https://azure.microsoft.com/ja-jp/services/event-hubs/ "Event Hubs - クラウド Big Data のソリューション - Microsoft Azure"), [Azure Stream Analytics](https://azure.microsoft.com/ja-jp/services/stream-analytics/ "Stream Analytics - リアルタイム データ分析 - Microsoft Azure") |
| 可視化 | [Microsoft Power BI](https://powerbi.microsoft.com/ja-jp/ "Power BI - 対話型のデータ視覚化 BI ツール") |

マイコンおよび開発環境
----
まず、マイコンボードには、インターネットへ通信ができるように [ESP-WROOM-02](https://www.switch-science.com/catalog/list/?keyword=ESP-WROOM-02 "ESP-WROOM-02 関連製品一覧 | スイッチサイエンス") というWiFiモジュールを利用します。

ESP-WROOM-02 は Arduino IDE を用いて Arduino 互換のプログラムを書くことができます。また、 Arduino の WiFiライブラリにのっとったライブラリが提供されており、簡単に WiFi 機能を利用できます。

なお、ESP-WROOM-02 は、単体で利用することもできるし、開発ボードも市販されています。それぞれの利用方法を下記の記事にまとめておりますので、必要に応じてご参照くださいませ。

- 単体で利用:  [Check! IoT ができるようになるまで ～ ESP-WROOM-02 にプログラムを焼く](http://qiita.com/dz_/items/eb7c80d3caf4a5c84274 "Check! IoT ができるようになるまで ～ ESP-WROOM-02 にプログラムを焼く")
- 開発ボードを利用: [Check! ESP-WROOM-02 開発ボードの始め方](http://qiita.com/dz_/items/27c2e19981e0bcddcf66 "Check! ESP-WROOM-02 開発ボードの始め方")

![20160216_arduino_023.png](https://qiita-image-store.s3.amazonaws.com/0/3812/142a0e76-cec0-03f9-4702-3ea3dc33b534.png)
(左:ESP-WROOM-02単体、右:ESP-WROOM-02開発ボード)

これ以降は、ESP-WROOM-02 で Arduino のスケッチを実行できる状態であることを前提に話を進めます。

クラウド連携および可視化
----
### Azure Event Hubs

マイコンは複雑な処理や通信には向かないため、比較的簡単にデータを送れるよう [Azure Event Hubs](https://azure.microsoft.com/ja-jp/services/event-hubs/ "Event Hubs - クラウド Big Data のソリューション - Microsoft Azure") を利用します。

簡単といっても、認証機構は必要です。Azure Event Hubs は [SAS (Shared Access Signature: 共有アクセス署名)](https://azure.microsoft.com/ja-jp/documentation/articles/storage-dotnet-shared-access-signature-part-1/ "Shared Access Signature: SAS モデルについて | Microsoft Azure") を用いて認証しますので、セキュリティが甘いというわけではありませんのでご安心ください。

### Azure Stream Analytics

そして、後述する Power BI に連携させるには、[Azure Stream Analytics](https://azure.microsoft.com/ja-jp/services/stream-analytics/ "Stream Analytics - リアルタイム データ分析 - Microsoft Azure") を利用します。Stream Analytics はリアルタイムのイベント処理が可能で、多くの入出力に対応しています。今回であれば、Event Hubs からの入力と、Power BI への出力（※）を利用します。

※ _Azure Stream Analytics の Power BI への出力は、2016年2月においてはプレビュー版での提供です。_

### Microsoft Power BI

Power BI はデータを分析して可視化できる、非常にパワフルな分析ソリューションです。最近ではウェブ公開機能のプレビュー版もリリースされており、自作せずにデータを公開できるようになるとのことで、期待です。

これらのサービスを組み合わせることで、ESP-WROOM-02 から送信したセンサーデータを自由に分析・可視化できるようになります。

![20160223_azure-event-hub_powerbi_001.png](https://qiita-image-store.s3.amazonaws.com/0/3812/12cf558e-648b-966c-b72b-2cea979080b5.png)

というこで、次回はこの構成でモノをインターネットにつないでみますよ！

Epilogue - おわりに
====
これらの Azure でのソリューションについては、 @yuyalush 吉田パクえさんにアドバイスをいただきました。ありがとうございます！

上記の構成で検証はできているので、引き続き実践編をまとめていきます。