Azure IoTのチュートリアルをやってみた２

[前回](https://qiita.com/sirotosiko/items/ca588e6acad293a118b1)に続いて、Azure Machine Learningで天気予報を行うチュートリアルをやって見ました。

# 必要なもの
* Azureアカウント
* Azure Machine Learning Studioアカウント
* [前回](https://qiita.com/sirotosiko/items/ca588e6acad293a118b1)セットアップしたRaspberry PiとBME280センサー

# 作業概要
チュートリアル：[Azure Machine Learning で IoT Hub からのセンサー データを使用して天気予報を行う](https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-weather-forecast-machine-learning)

　1. 天気予報モデルをWebサービスとしてデプロイ
　2. IoT Hubへコンシューマーグループを追加
　3. Stream Analyticsジョブの作成・構成・実行
　4. Microsoft Azureストレージエクスプローラーで天気予報を表示

# 1. 天気予報モデルをWebサービスとしてデプロイ

[チュートリアル](https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-weather-forecast-machine-learning#deploy-the-weather-prediction-model-as-a-web-service)の通り、Azure Machine Learning Studio[^1]で出来合いの天気予報のモデルをWebサービスとしてデプロイします。

　1. [weather prediction model](https://gallery.cortanaintelligence.com/Experiment/Weather-prediction-model-1)のページに移動
　2. [Open in Studio]でMachine Learning Studioのページに移動
　3. [RUN]をクリックして、モデルの手順を検証
　4. [SET UP WEB SERVICE] - [predictive Web Service]を順にクリック
　5. [Web service input]モジュールを[Score Model]モジュールの入力に接続
　6. [RUN]をクリックして、モデルの手順を検証
　7. [DEPLOY WEB SERVICE]をクリックして、モデルを Web サービスとしてデプロイ
　8. Excelをダウンロードして、[WEB SERVICE URL]と[ACCESS KEY]をメモ


[^1]: Azure Machine Learning StudioはWeb上で機械学習ができるサービスです。Freeアカウントがあるので、無料で利用できます。以前[Microsoftの無料トレーニング](https://www.microsoft.com/ja-jp/mic/seminar/seminar.aspx)の時に作成したFreeアカウントがあったので、それを利用しました。

# 2. IoT Hubへコンシューマーグループを追加
AzureのポータルでIoT Hubにコンシューマーグループを追加します。
追加する際に指定するコンシューマーグループ名は、次のStream Analytics ジョブへの入力の追加手順で必要になります。

# 3. Stream Analyticsジョブの作成・構成・実行

[チュートリアル](https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-weather-forecast-machine-learning#create-configure-and-run-a-stream-analytics-job)の通り、Stream Analytics ジョブを作成します。

　1. Stream Analytics ジョブの作成[^2]
　2. Stream Analytics ジョブへの入力の追加
　3. Stream Analytics ジョブへの出力の追加
　4. デプロイした Web サービスを呼び出すための関数を Stream Analytics ジョブに追加
　5. Stream Analytics ジョブのクエリの構成
　6. Stream Analytics ジョブの実行

[^2]: チュートリアルには記載がありませんが、ホスティング環境は[クラウド]を選択します。[Edge]を選択するとRaspberry piにジョブがデプロイされるようですが、試していません。

# 4. Microsoft Azureストレージエクスプローラーで天気予報を表示

　1. 未インストールであれば、[Microsoft Azureストレージエクスプローラー](https://azure.microsoft.com/en-us/features/storage-explorer/)をインストール
　2. Microsoft Azureストレージエクスプローラーを起動
　3. Azureアカウントにサインインしてサブスクリプションを選択
　4. Azure サブスクリプション > [ストレージ アカウント] > 自分のストレージ アカウント > [BLOB コンテナー] > 自分のコンテナーの順にクリック
　5. CSVファイルを表示

下記のようなCSVファイルが生成されていれば成功です!!

```
time,temperature,humidity,probabalities of rain
2018-02-10T11:15:00.7620000Z,17.669537,58.713015,0.489944100379944
2018-02-10T11:15:02.7940000Z,17.669537,58.732272,0.489944100379944
2018-02-10T11:15:04.8610000Z,17.694883,58.786674,0.489944100379944
2018-02-10T11:15:06.9250000Z,17.694883,58.748158,0.489944100379944
2018-02-10T11:15:08.9570000Z,17.694883,58.627792,0.489944100379944
2018-02-10T11:15:11.0220000Z,17.679676,58.501743,0.489944100379944
2018-02-10T11:15:13.0540000Z,17.694883,58.396677,0.489944100379944
2018-02-10T11:15:15.0990000Z,17.689814,58.40602,0.489944100379944
2018-02-10T11:15:16.1940000Z,17.664468,58.433485,0.489944100379944
2018-02-10T11:15:18.2260000Z,17.659399,58.568004,0.489944100379944
2018-02-10T11:15:20.2470000Z,17.64926,58.605941,0.489944100379944
2018-02-10T11:15:22.3650000Z,17.64926,58.687782,0.489944100379944
2018-02-10T11:15:24.3810000Z,17.64926,58.678154,0.489944100379944
2018-02-10T11:15:26.3970000Z,17.65433,58.664001,0.489944100379944
```



# 雑感
* チュートリアルではとっても簡単に、Raspberry Piに接続したセンサーのデータをIoT Hubで受けて機械学習を利用して天気予測するシステムができましたが、実際は以下が必要そうです。まだまだ知識が足りないと痛感。。。
    * センサー出力をIoT Hubへ送るところのプログラミング（←チュートリアルではサンプルアプリを利用）
    * 機械学習の知識（←チュートリアルでは出来合いのモデルを利用）
    * 定期的に再学習してモデルを更新する仕組み（←今回やったチュートリアルの範囲外）