Dynamics 365: Connected Field Service いかに安く試すか!および拡張のポイント概要

先日 Japan Dynamics User Community の勉強会に参加してきました。とても楽しかったです。

第4回JDUC勉強会 - Dynamics 365とPowerAppsとIoTの世界

その中で Dynamics MVP の杉本さんが Connected Field Service (CFS) の概要を紹介し、以下のブログに技術詳細も公開されています。分かりやすくていいです Smile Connected Field Serviceをやってみた その1 概要 Connected Field Serviceをやってみた その2 構成手順 Connected Field Serviceをやってみた その3 Azure PaaSがどうなってんの?

セッションの中で CFS を使った際の Azure 課金が話題になったので、今日は「いかに安く試すか!」について紹介します。またそれだけだとちょっと寂しいので、CFS の拡張ポイントも紹介します。

いかに安く試すか

CFS を構成すると Azure に多くのリソースが構成されます。詳細は上記記事の「その3」の部分をご覧ください。
まずは初期状態のままだとコストが心配ですので、以下の場所を変更して、基本的にかかるコストを節約します。

App Service プラン

既定で 4 つの App Service が配置されますが、すべて同じ App Service プランを使っていますので、まずはここを変更します。

1. リソースの一覧より App Service プランを選択します。

image

2. スケール アップメニューを選択します。

image

3. プランの一覧より、F1 フリーを選択して、「選択」をクリックします。

IoT Hub

1. リソースの一覧より IoT Hub を選択します。

image

2. 価格とスケールを選択します。

image

3. S1 になっているか、また IoT Hub ユニットが 1 になっているか確認します。

次にデータの節約についてです。CFS で展開されたリソースは基本的には使った分だけ消費されるタイプのサービスとなります。リソースを使ってしまう原因は、シミュレーターで IoT デバイスの挙動を試した場合に、停止しないとその後ずっとデータを送信し続けることになり、コストがかかります。

image

これを停止して節約しますが、方法はいくつかります。

リフレッシュで停止

1. シミュレーターの画面で Refresh ボタンをクリックします。

image

2. Device 一覧から何も選ばないままにしておきます。これでデータは送信されません。

App Service を停止

1. リソース一覧より Simulator で始まる App Service を選択します。

image

2. 停止ボタンをクリックします。これでシミュレーターごと停止されます。

image

リソースグループの削除

検証が終わったら、展開されたリソースをすべて削除します。

1. 展開時に指定したリソースを選択します。

2. 削除ボタンをクリックします。

image

3. 削除の確認画面が出るので、リソース名を指定して削除します。

image

CFS 拡張ポイント

次に CFS の拡張ポイントを紹介します。

閾値の変更

既定のサービスに関する閾値はストレージに格納されています。

1. リソースよりストレージアカウントを選択します。

image

2. BLOB を選択します。

image

3. devicerules | 2016-05-30 | 22-40 フォルダより devicerules.json を選択します。

image

4. ダウンロードをクリックしてファイルをダウンロードします。

image

5. 任意の閾値に変更して、ファイルをアップロードします。

クエリの変更

IoT デバイスから送信されたデータは、IoT Hub を経由して、Stream Analytics で処理されます。各 Stream Analytics のクエリを変更することで内容を変えることができます。

1. リソースより Stream Analytics ジョブを選択します。

image

2. 出力が PowerBISQL の場合は、データ分析用です。AlertQueue の場合はアラート用となります。

3. 変更したい Stream Analytics ジョブで停止をクリックします。

image

4. ステータスが停止になったら、クエリをクリックします。

5. 任意のクエリに書き換えます。

6. クエリを保存後、ジョブを開始します。

異なる種類のデバイスの追加

既存で提供されるシミュレーターは内容を変更することができないため、シミュレータを別途自作するか、実際のデバイスを IoT Hub につなぎます。ここで上記の閾値ファイルとクエリをカスタマイズすることで、より柔軟に環境を構成することが可能です。例えば温度と湿度だけでなく、電気の On/Off 状況をとるデバイスや GPS を使った位置情報を送るサンプルを作ってみてはどうでしょうか。

シミュレータを自作する場合は、IoT Hub につなぐサンプルを利用するのが簡単です。
https://github.com/Azure/azure-iot-sdk-csharp/tree/master/device

また実機をつなぐ例としては、井上さんの GitHub にサンプルがあります。
https://github.com/keijiinoue/CFS-Photon

私も今度時間があれば、詳細を書いてみます。

PowerBI レポート

これは言うまでもなく、ご自由にカスタマイズしてください。

他のリソースは?

他のリソースはあまり変更の余地がありません。App Service はソースコードが公開されていませんし、LogicApp も追加の動作を差し込む程度でしょう。

Dynamics 365 側のカスタマイズ

Dynamics 側では柔軟にカスタマイズが可能です。CFS デモの基本は閾値を超えた場合にアラートレコードが作られますので、これをトリガーに色々な動作を仕込むことができます。

- ワークフローで作業指示書やサポート案件を作ったり、メールで通知を行う
- コマンドをデバイスに自動で送ってみる

また関連エンティティに対してビジネスプロセスフローを入れるなど、自由自在です。

参考情報
Connected Field Service アーキテクチャ
https://msdn.microsoft.com/ja-jp/library/mt744253.aspx
Connected Field Service ソリューションを拡張する
https://msdn.microsoft.com/ja-jp/library/mt790243.aspx

IoT Connector Web API Reference
https://msdn.microsoft.com/ja-jp/library/mt744242.aspx

- 中村 憲一郎