Azure IoT Suiteでリモート監視体験

IoTビジネス共創ラボ」という、AzureをIoTにおいて活用するプロジェクトを推進しているグループが、2016年8月に「Pepperワーキンググループ」を開設しました。
すでに何回か勉強会やハンズオンが開催されています(2017年1月時点)。

 2016年9月に開催された「Cloud Robotics Azure Platform基本セット構築ハンズオン」では、PepperとSurface HubがAzureを通じて通信する仕組みを体験することができました。そこで使用されていたのがAzure IoT Hubという、デバイス間の双方向通信を実現するための仕組みです。

試しにAzure IoT Hubでデバイスを繋げてみたいけど、デバイス実機も無い、いちいちネットワーク構成したりDBを作ったりするのは面倒、という方には、Microsoft IoT Suiteが便利です。
IoT Hubを使った双方向通信に必要な環境をまとめて作ってくれます。

今回は、Azure IoT Suiteで、既定のサンプルとして用意されている、リモート監視ソリューションの作成を試してみます。

※以下の情報は特記のない限り全て2016年10月現在のものです。2017年1月現在の仕様とは異なる可能性があります。

 

Azure IoT Suiteを実際に使ってみる

 

使用準備

利用手順ですが、まずはAzureポータルでAzureアカウントを作成する必要があります。※Azure IoT Suiteのサイトとは別なので気をつけてください
Azureアカウントは無料トライアル期間が30日となっており、この期間ならAzureのサービスを無料で使うことができます。
※アカウント作成時にクレジットカード情報が必要ですが、料金支払いのための登録ではありません。また、無料期間が切れた時に、継続使用料が自動的に引き落とされることもありません(執筆時点 / 参照)。

Azureアカウントを作成したら、Azure IoT Suiteポータルから新しいソリューションを作成します。
以下、ポータルで配布している自習用資料に添ってチュートリアルを進めます。初級者向けの内容ですので、ぜひ参考にしてみてください。

Microsoft Azure IoT Suite ポータル:https://www.azureiotsuite.com

 

Azure IoT Suiteでのソリューション作成

今回は、上記の自習用資料にある監視ソリューションのチュートリアルに添って、手順を進めます。
(執筆時点において、一部自習用資料との相違があります)

Azure IoT SuiteポータルにAzureアカウントでサインインした後、「新しいソリューションの作成」>「リモート監視」と進み、以下のように入力します。

ソリューション名は、誰にも使用されていない名前を入力する必要がありますので注意してください。
リージョンは東日本 / 西日本どちらでも構いません。

今回作成されるAzureサービスですが、以下の通りになります。

各サービスについて:
Azure Active Directory: クラウドのIDやディレクトリを管理・同期
IoT Hub: デバイスの双方向通信を中継
Document DB: JSON形式のデータベース
Event Hub: 大規模なイベントを受信
Storage : Azure上に作成されるストレージ
Stream Analytics:  リアルタイムデータ分析
Web App: Webアプリ
・Web job: Webアプリ中で実行するプログラム

これだけのサービスをまとめて作ってくれるので、非常に楽ですね!

 

「ソリューションの作成」をクリックしてしばらく待つと…

「準備完了」と表示されますので、「起動」をクリックして、作成した監視システムを開いてみます。

リモート監視システムポータル

ダッシュボード

ワシントン州レドモンド(マイクロソフト本拠地)周辺の地図上に表示される仮想デバイス
監視システムポータルを開くと、左端にメニュー、中央にダッシュボードが表示されます。ダッシュボード左側には、監視中の仮想デバイスの位置(上図の緑、赤の◯)を示す地図が表示されます。また、ダッシュボード右側の折れ線グラフでは、各デバイスが計測している温度、湿度の変化がリアルタイムで記録されています。
※監視システムを開くときにエラーが発生する場合は、ブラウザの広告ブロック拡張機能をオフにしてみてください。

デバイスの追加

左メニューの一番下にある「デバイスの追加」で、新規にデバイスを追加できます。
新規デバイスにも使用されていないIDを付ける必要がありますが、自分でIDを付ける他にも、IDの自動生成が可能です。

コマンド送信

各デバイスには、監視システム側から様々なコマンドを送ることができます。
監視ポータルの左メニューの「デバイス」から任意のデバイスを選択すると、以下のメニューが表示されます。

基本的に、各デバイスに対する操作はこのメニューから行います。
メニューから「コマンド」を選択し、プルダウンから”Ping Command(疎通確認)”を選んで「コマンドの送信」をクリックすると、デバイスにコマンドが送信されます。
送信が成功したかを確認するには、送信後の画面をリロードしてください。
コマンド送信直後。リロードすると結果が「成功」になる
 
Ping Commandの他にも、デバイスからのデータ送信停止や、送信するデータを変更するコマンド等を送信することができます。

デバイスのアラート設定

デバイスの計測値が一定の値を超えた場合、デバイスから監視システムにアラートを送ることができます。
ここでは、温度が38度を超えた場合にデバイスがアラートを出すように設定します。
左メニュー「デバイス」> 任意のデバイスを選択 > 「ルールの追加」と進み、下図のように設定します。

「ルールを保存して表示」をクリックした後、左メニューの「ダッシュボード」を選択し、「アラーム履歴」を参照すると、デバイスの温度が38度を超えた時に、デバイスからのアラートが表示されます。
地図上のデバイスの位置を示す◯は、アラートを出すと緑から赤に変わります。

 

念のため、ダッシュボード右上の「表示するデバイス」からisn-device-blog-01を選択し、折れ線グラフ中の11時51分14秒付近の温度を見てみます。

確かに、45.2度を計測しています。

このデバイスは、35度くらいの温度が急激に45度まで上昇し、またすぐに35度前後に下がる一連の動きを、一定間隔で繰り返すような温度変化を計測しているようです。

デバイスのログを確認

デバイスへのコマンド送信や、デバイスからのアラート送信のログは、(サイトが分かれていてややこしいのですが)Azureポータル上で確認することができます。

Azureポータル左メニューから「App Service」> App Serviceブレード中央「isn-blog-01-jobhost」と進むと、先程作成したソリューションの詳細説明と、デバイスからのログの出力状況を示した折れ線グラフが表示されます。

このログを使うと、作成したソリューションや、Azureを使用したWebアプリのデバッグが便利になります。

 

ソリューションにおける各Azureサービスの役割

ここで、Azure IoT Suiteでのソリューション作成の項で触れたAzureの各サービスが、今回のソリューションのどこで動作しているかを解説します。
ソリューションポータルはWeb Appで作成されています。
各デバイスはWeb jobで仮想的に作成されています(isn-blog-01-jobhostのこと)。このデバイスは、定期的にテレメトリーデータ(デバイスが測定したデータ)を送信しています。

ソリューションポータルから、各デバイスにコマンドを含むメッセージを送信する場合、

  1. ソリューションポータルからIoT Hubにメッセージを送信
  2. IoT Hub側で指定されたデバイスIDに対応するデバイスにメッセージを送信
  3. デバイスからIoT Hubにフィードバックを送信
  4. Web job「イベントプロセッサ」がフィードバックを受信
  5. イベントプロセッサが、Document DB内にあるデバイス情報のコマンド履歴を更新
  6. ソリューションポータル側でDocument DB内のコマンド履歴を取得し、表示
という流れになります。

また、アラート規則の作成と通知の流れは、

  1. 作成した規則をBLOB Strageに格納
  2. 各デバイスからIoT Hubにテレメトリーデータを送信
  3. テレメトリーデータと規則をStream Analyticsに入力
  4. Stream Analyticsで規則にマッチしたテレメトリーデータをBLOB StrageとEvent Hubに送信
  5. ソリューションポータルは定期的にBLOB Strageを確認し、新しいアラームを取得した場合はダッシュボードに表示
  6. Event Hubで受信したテレメトリーデータをイベントプロセッサで取得、Document DBに格納
となります。
上記より、IoT Hubサービスが、デバイスとAzure上の各サービスを繋ぎ、データの送受信を中継していることが分かります。

今回はデバイスとWebアプリ間の通信を解説しましたが、IoT Hubではデバイス間通信の中継も可能です。

 

所感など

今回は、Azure IoT Suiteで、ウェブから仮想デバイスシミュレータを監視しました。
IoT SuiteでIoT Hubに関係する一連のサービスをまとめて作成してくれるのはとても便利です。

まだ実際のデバイスと接続できているわけではないのですが、Azure IoT Hubは既存デバイスへの接続に追加機器などが必要ないそうです。

2016年11月開催の特大ペッパソンにおいて、MicrosoftからCloud Robotics API V1が提供されており、実際にChoregrapheのプロジェクト中にCloud Robotics API用のボックスを設置することでAzure IoT Hubに接続することができましたので、将来、Cloud Robotics APIとAzure IoT Suiteの連携にも期待したいところです。

%d人のブロガーが「いいね」をつけました。