**AzureのIoT系SaaSサービスの「IoT Central」**を活用する方法についてまとめていきます。
#IoT CentralとAzureサービスの連携
IoT CentralはSaaSのサービスであるため、取り立てて連携の必要がないようにも思われるかもしれないですが、
基本的にはIoTデバイスを管理し、データを見て、一定の閾値に対して反応を返すことが主な役割であるので、IoTを始めるうえでのお手軽なサービスとしては有用と考えられます。
今回はIoT Centralでデバイスを接続し、データの可視化を実施する方法を試したいと思います。
#IoT Centralを構築する
まず、IoT Centralを作成します。手順については大幅に割愛しますが、以下の公開情報より作成が可能です。
一点言及しておくと、最近新しい料金体系が導入され、以前より少しわかりにくくなりましたが、2台未満の検証もしくは今後本格的に利用を視野に入れており、メッセージ数が多い場合はStandard 2のプランを利用するほうが良いかと思われます。
https://docs.microsoft.com/ja-jp/azure/iot-central/core/quick-deploy-iot-central
#IoT Centralアプリケーションにデバイスを接続する
作成が完了したら、IoT Centralアプリケーションに接続するデバイスを定義します。
今回は既存の製品テンプレートを使用しないので、カスタムで作成します。
IoT Centralアプリケーションのメニューバーより「Device Templates」を選択します。
Device Templatesの右上の3つあるアイコンの「+(New)」を選択して、テンプレートを追加します。
作成するテンプレートの種類がいくつかありますが、「Custom」で作成します。
デバイスの製品名を決める必要があるので任意の名前でOKです。名前を決めたら「Create」を選択します。
次にデバイスが送信するデータを定義します。
「Device Template」から作成したデバイスを選択し、「Measurements」からデバイスの送信データを定義します。
簡単に説明すると「Telemetry」は温度センサなどの値の表示が必要なデータ、「State」は1or0などで状態を表すデータ、「Event」はデバイス側で付随させて送られるデータ、「Location」は緯度経度を値とするデータの利用にそれぞれ適しています。
設定ができたら、「Save」で記載した設定を保存します。
※かなり前に検証した際にはセンサデータは多数階層構造になっていないキーバリューペアの形式で送ることでIoT Centralアプリケーション側で認識することができました。Locationの場合はカンマで緯度経度を区切ることで対応できました。
現在は詳細な公開情報がなくなっていて詳細にはわかりませんが、以下のシミュレーションデバイスと同様の送信データであれば利用できると思います。
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-raspberry-pi-web-simulator-get-started
ここまでで、IoT Centralアプリケーションでデバイスからのデータを表示することができるようになります。
次にデバイスをIoT Centralアプリケーションに紐づける方法ですが、DPSを用いた証明書での認証をしない場合は以下GitHubのコマンドから接続文字列を生成します。DPSについては割愛します。
https://github.com/Azure/dps-keygen
生成した接続文字列を利用してIoT Centralアプリケーションへデバイスを接続します。
#まとめ
以前に利用したときに比べて公開ドキュメントがかなり減少していましたが、仮想的なデータを表示することができたので、データ表示の内部仕様はそこまで変化していないように感じています。
とりあえず、公開情報をもっと充実させてほしい。。。切実に。
引き続きIoT Centralを利用したAzureサービスとの連携を実施していきます!