Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

【Dynamics 365】【Azure】Connected Field Serviceをやってみた その1 概要

2017年3月23日に開かれた「第4回JDUC勉強会 - Dynamics 365とPowerAppsとIoTの世界」で「手軽に試せる Dynamics 365 & Azure の IoT ソリューション」というタイトルで1セッション担当しました!

dynamics.connpass.com

Dynamics 365が発表された際にデモとして大きく取り上げられたConnected Field Serviceに関するセッションです。

以下に発表時に使用したスライドもあるので、是非ご覧ください!

docs.com

さて、セッションではちょっと時間が短かったので話しきれなかった部分もありましたので、改めてBlogとしてまとめていきたいと思います。

Connected Field Serviceってなに?

まず最初にConnected Field Serviceですが、ざっくり言ってしまえば、Dynamics 365のField Serviceモジュールと連携することができるIoT アドオンになります。

Connected Field Service for Microsoft Dynamics 365 を使用し、接続されたデバイスを監視し、顧客の装置が正しく操作されているかが常に分かります。 装置に障害が発生すると、通知が送信され、問題を遠隔でトラブルシュートするか、または技術者を派遣し解決できます。

Connected Field Service を使用した遠隔監視および顧客装置 (現場使用) の点検

Field Serviceについては、MSが自習書を公開していますので、そちらを参照してもらうのが一番いいですが

「顧客や取引先への機器の設置や、設置されている機器のメンテナンスなどのフィールド業務を効率的に管理、遂行するための顧客サービス機能」、フィールドエンジニアへの作業指示からスケジューリング、ディスパッチ、報告・請求までビジネスプロセスをカバーしているモジュールです。

f:id:sugimomoto:20170325131145p:plain

(自習書から抜粋)

Dynamics 365 CRM 系アプリケーション自習書シリーズ - Microsoft Dynamics

その機器のメンテナンス部分にIoTとしての機能を追加し、機器から発信された各種センサーなどの情報を元に、フィールドサービスのビジネスプロセスにつなげていく、というのがConnected Field Serviceになります。

Connected Field Serviceではどんなことができるの?

私の見解では以下のことが実施できます。

  1. Dynamics 365上でIoT Deviceの登録・管理
  2. IoT DeviceからDynamics 365へアラート・サポート案件へ繋げる
  3. Dynamics 365からIoT Deviceへコマンドの送信しIoT Deviceを制御
  4. IoT Deviceの状況をPower BIへの連携しDynamics 365上で可視化

シナリオとしては、お客様に導入した製品をDynamics 365上で顧客資産として、接続・管理

その後、製品から発生している情報を分析し、ある一定の閾値を超えたらDynamics 365へアラートとして登録

登録されたアラートは、必要に応じてDynamics 365上からコマンドを送信して、制御を試行。シナリオ次第では、フィールドエンジニアへ作業指示(Field Serviceに繋げる)

といった感じになります。

実際に触ってみよう

というわけで、以下の画面が実際にConnected Field Serviceを構成したあとの画面です。(実際の構成手順やアーキテクチャは次回以降で解説していきます。)

フィールドサービスのエリアにIoTに関するモジュールが追加されていることがわかります。ここから一連の機能を利用することが可能です。

f:id:sugimomoto:20170325130811p:plain

それではまずDeviceの登録をしてみたいと思います。

最初に「登録済み資産」に移動します。

f:id:sugimomoto:20170325130816p:plain

ここで顧客ごとに紐付けた機器、デバイス情報を管理しています。

「新規」をクリックして

f:id:sugimomoto:20170325130821p:plain

必要な情報を入力していきます。

ここでポイントになるのはデバイスIDの部分です。これがIoT Hubに登録されるDevice IDになりますので、最終的にはDeviceからプログラムを使って通知する際のIDにもなりますので、注意しましょう。

必要な情報を入力後、「デバイスの登録」ボタンをクリックします。そうすると、非同期でIoT Hubへの登録処理が進んでいき

f:id:sugimomoto:20170325130825p:plain

最終的には以下のような形で「登録済み」にステータスが変わればOKです。

f:id:sugimomoto:20170325130830p:plain

Connected Field Serviceの一つの特徴として、Deviceが無い人のためのデモ環境 WEB Siteベースで作られたシュミレータが存在します。

このシュミレーター利用することで、IoT Hubに対して、現在のDeviceの温度・湿度状況を送信することができるようになっています。

Deviceが正常に登録されていれば、以下のDevice IDから先程登録したDeviceが選択できるようになっているので、選択し、温度をコントロールしてみてください。

f:id:sugimomoto:20170325130838p:plain

ちょっとキャプチャが取れていなかったので画面は割愛しますが、「Message Send」のところで、一定間隔置きに湿度情報と温度情報が通知されていくのがわかるかと思います。

これが一定以上の温度(初期設定では70度だったはず)になると、Dynamics 365上にアラートとして登録され、サポート活動を実施することができるようになります。

通知は「IoT 通知」から確認できます。

f:id:sugimomoto:20170325130842p:plain

以下のような感じで、それぞれのDeviceから異常がありましたよという通知が登録されていることがわかるかと思います。

f:id:sugimomoto:20170325130846p:plain

通知の詳細を開くと、この通知を元にしたサポート活動に繋げるためのビジネスプロセスフローとDeviceから通知された各種情報、JSON情報が確認できます。

f:id:sugimomoto:20170325130850p:plain

もちろんこのままビジネスプロセスフローに従ってサポート活動を実施することもできるのですが、Connected Field Serviceでは、IoT Device に対してコマンドを通知して、温度や湿度をコントロールすることができる機能も存在しています。

コマンドバーの「コマンドの作成」をクリックし

f:id:sugimomoto:20170325131434p:plain

以下のようなウインドウが立ち上がるので、コマンド名を入力(識別用の名称なので、なんでもかまいません)

f:id:sugimomoto:20170325131558p:plain

そして大事なのが「送信するメッセージ」です。ここにJSON形式のコマンドを入力することで、先程のシュミレータに対して、様々な機能を命令することができます。

今回はサンプルとして提供されている以下のようなJSONを入力し「送信して閉じる」をクリックします。

{“CommandName”:“Set Values”,“Parameters”:{“Reading”:{“Temperature”:“30”,“Humidity”:“30”}}}

f:id:sugimomoto:20170325130918p:plain

そうすると、先程のシュミレータのMessage Receive欄にコマンドの受信が表示され、温度と湿度が自動的に下がっていくことがわかります。

このような形でサンプルのシュミレータを通して、Connected Field Service・Dynamics 365+IoTがどのように使えるか簡単に試すことができるようになっています。

Connected Field Serviceの個人的おすすめポイント

とまあ、ビジネスプロセス目線として色々と述べてきましたが、個人的にこのConnected Field Serviceを気に入っているポイントは以下のようなところです。

・Dynamics 365 + Azure IoTの標準テンプレートと試用環境が簡単に整えられる!

・結構素直な構成になっているので、自前のDeviceなどを接続してDynamics 365と連携させやすい!

・標準はField Service用だけど、Dynamics 365の中ではモジュールが独立しているため、SFAマーケティングにも応用しやすいかも!

後述しますが、このConnected Field Serviceを構成すると、自動的にAzure IoT Hubをベースとして、以下のようなPaaSサービス郡が構成されます。

f:id:sugimomoto:20170325130930p:plain

初期状態ではIoT Deviceの温度を計測して、その計測結果を元にしたアラートを飛ばすというのがサンプルシナリオとして構成されていますが、

それぞれのPaaSサービスは自由にいじることができるようになっていますので、ここにさらに新しい機能を拡張したり既存の機能に手を加えることが比較的安易にできるよに構成されていると思います。

1からこのようなIoT Hubをベースにした機能を構成しようとすると、それぞれのPaaSを把握するだけでも一苦労ですが、これを一つのクラウドアーキテクチャパターンとして捉えて、触ってみると随分学習が捗るなーと思います。

それでは、次回は実際にConnected Field Serviceを立ち上げるところをやってみたいと思います。