GravioのMQTTPublishコンポーネントを使用して、Azure IoT Hubへ温度データをPublishしてみました。
#使用したもの
###ハードウェア
Windows 10 PC(バージョン1809)
Gravioクライメートセンサー(温湿度センサー)
###ソフトウェア
・Gravio
-Gravio Studio Ver.2.0.2065
-Gravio Server Ver.2.0.2153
#Azure IoT Hubの設定
Azure IoT Hubを作成します。
Azure IoT Hubを生MQTTS(mosquitto)やHTTP RESTで使う方法を参考に作業しました。
IoT Hub 名などの必要事項を設定します。今回は、下記内容で設定しました。
項目 | 設定内容 |
---|---|
サブスクリプション | 従量課金 |
リソースグループ | 任意のリソースグループ、ない場合は新規作成 |
リージョン | 任意のリージョン、今回は東日本を選択 |
IoT Hub 名 | 任意の名前、今回はgraviodemoで設定 |
IoT Hub 名はGravio上で設定に使用するため、メモしておきます。
次にサイズとスケールを設定します。
サイズとスケールでは、F1のFreeレベルを今回は設定します。設定後、”確認及び作成”をクリックします。
内容を確認後、作成をクリックすると、デプロイ進行中画面が表示されます。
2分くらいでデプロイが完了します。
次に、”リソースに移動”からリソースの画面を表示し、エクスプローラー>IoT デバイスを選択し、IoTデバイスを追加します。
任意のデバイスIDを入力し、保存します。Azure上で設定したデバイスIDはGravio上の設定においても使用するためメモしておきます。
ここまでで、Azure IoT Hub環境の設定は完了です。
#SAS Tokenの取得とビューアーの設定
SAS Tokenを取得するためにはSDKツールを使用します。
合わせて、データの送信確認のために、SDKツールのViewer機能を使用してモニタリングします。
SDKツールを利用するために、”iothubowner”に対する共有アクセスポリシーの取得が必要です。
設定>共有アクセスポリシーを選択し、"iothubowner"をクリックします。
表示される、共有アクセスキーの、接続文字列―プライマリーキーをメモします。
##SDKツールのインストールと起動
Device Explorerという、SDKツールを使用します。
下記サイトより、msiファイルをダウンロードし、インストールします。
https://github.com/Azure/azure-iot-sdk-csharp/releases/tag/2019-1-4
インストール後、スタートメニューからAzure IoT Hub>Device Explorerを開きます。
上段の赤枠内に、先程メモした接続文字列―プライマリーキーを貼り付け、Updateをクリックします。
ここまでの設定で、SDKツールが使えるようになりました。
##SAS Tokenの作成
Managementタブを開き、Azure上で作成したデバイスを選択し、"SAS Token..."ボタンをクリックします。
Generateをクリックし、'SharedAccessSignature sr'で始まる文字列をコピーします。こちらが、SAS Tokenとなります。
##ビューアーでモニタリングの開始
Dataタブを開き、"Monitor"をクリックすると、IoT Hubで受信するデータのモニタリングがスタートします。IoT Hubで受信したデータがリアルタイムで表示されます。
ここまでで、Gravioの設定に必要となる各種設定情報の取得、およびGravioからの実行結果をモニタリングする設定が完了しました。
#Gravioの設定
温度センサーのデータをAzure IoT HUBへPublishします。
##センサーの設定
センサーの設定については、下記記事をご参照ください。
温度センサーのデータをエクセルで簡単に表示
##動作(アクション)の設定
最新の温度データ(1レコード)をSensorDBコンポーネントで取得し、
MQTTPublishコンポーネントを用いてAzure IoT HubへデータをPublishします。
アクション作成画面で、SensorDBコンポーネント>MQTTPublishコンポーネントを並べます。
####(1)SensorDBコンポーネントの設定
プロパティを選択し、各種項目を設定します。
項目 | 設定値 |
---|---|
エリア、レイヤー、デバイス | 前節にて設定した内容 |
Latest Record Only | ☑ |
その他 | デフォルト値 |
次にMQTTPublishコンポーネントへ送るデータを設定します。
ステップ変数の横に表示されている矢印アイコンをクリックし、ステップ出力を設定します。
####(2)MQTTPublishコンポーネントの設定
プロパティを選択し、各種項目を設定します。
IoT Hub Hostnameは<IoT Hub 名>.azure-devices.net'です。
今回はIoT Hub名がgraviodemo
なので graviodemo.azure-devices.net
になります。
項目 | 設定内容 | 例 |
---|---|---|
Broker Hostname | IoT Hub Hostname | graviodemo.azure-devices.net |
Broker Port | 8883 | |
Client ID | Device ID | temperature-sensor |
MQTT Username | "<IoT Hub Hostname>/<Device ID>/api-version=2016-11-14" | "graviodemo.azure-devices.net/temperature-sensor/api-version=2016-11-14" |
MQTT Password | 作成したSAS Token | SharedAccessSignature sr=graviodemo.azure-devices.net&sig=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&se=xxxxxxxxxx&skn=xxxxxxxxxx |
Topic | "devices/<Device ID>/messages/events" | "devices/temperature-sensor/messages/events/" |
Data Format | JSON | JSON |
QoS | QoS2 以外 | QoS 0 |
Retain | - | - |
Secure Connection | ☑ | ☑ |
Client Certificate File | - | - |
Client Certificate Password | - | - |
CA Certificate File | - | - |
次にステップ出力変数を作成します。プロパティ>ステップ入力の横の矢印ボタンを選択し、IoT Hubへ送信するステップ出力変数を作成します。
設定後、右上の"▷"をクリックし、動作を確認します。
正常に動作している場合は、Gravio、SDKツールの画面は以下のようになります。
Gravio画面
SDKツール画面
##動作タイミング(トリガー)の設定
温度データを取得したタイミングでデータを送るように設定します。
トリガー画面から、新しいトリガーを設定します。
項目 | 内容 |
---|---|
エリア、レイヤー | 温度センサーを設定しているレイヤー |
アクション名 | 作成したアクション |
Classic/Threshold Trigger | Cassic Trigger |
温度 | >=0 |
今回の設定は、温度が0度以上でAzure側にデータを送信するアクションを5秒ごとに行なう、という設定です。
以上で設定終了です。
#動作確認
ビューアーを見ることで、Azure IoT Hubがデータを受け取っていることを確認できます。
温度センサーを温めたり冷やしたりすること、センサーがデータを何度も送信するので確認しやすいです。
#あとがき
Azure IoT Hubと接続することによって、Azureと接続している各種可視化・分析ソリューションを利用できます。
普段からMicrosoft Azureを使っていらっしゃる方はGravioを使うことで簡単にIoTを始められるのではないでしょうか?
次回は、GravioのMQTT機能を使い、AWS IoT Coreへ同様にデータ送信を行なう方法をご紹介します。
#参考
Azure SDKのインストールについて
Azure IoT Hubを触ってみた② SDK編
Azure IoT Hubからのデータ連携例
AzureとArduinoでIoT連携(IoTHub+StreamAnalytics+BlobStorage)