2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Azure IoT HubへGravioを使って温度データをPublish

Last updated at Posted at 2019-02-08

GravioのMQTTPublishコンポーネントを使用して、Azure IoT Hubへ温度データをPublishしてみました。

image.png

#使用したもの

###ハードウェア
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リソースを追加します。
image.png

IoT Hub 名などの必要事項を設定します。今回は、下記内容で設定しました。

項目 設定内容
サブスクリプション 従量課金
リソースグループ 任意のリソースグループ、ない場合は新規作成
リージョン 任意のリージョン、今回は東日本を選択
IoT Hub 名 任意の名前、今回はgraviodemoで設定

image.png

IoT Hub 名はGravio上で設定に使用するため、メモしておきます。

次にサイズとスケールを設定します。
サイズとスケールでは、F1のFreeレベルを今回は設定します。設定後、”確認及び作成”をクリックします。
image.png

内容を確認後、作成をクリックすると、デプロイ進行中画面が表示されます。
2分くらいでデプロイが完了します。
image.png

次に、”リソースに移動”からリソースの画面を表示し、エクスプローラー>IoT デバイスを選択し、IoTデバイスを追加します。
image.png

任意のデバイスIDを入力し、保存します。Azure上で設定したデバイスIDはGravio上の設定においても使用するためメモしておきます。
image.png

ここまでで、Azure IoT Hub環境の設定は完了です。

#SAS Tokenの取得とビューアーの設定

SAS Tokenを取得するためにはSDKツールを使用します。
合わせて、データの送信確認のために、SDKツールのViewer機能を使用してモニタリングします。

SDKツールを利用するために、”iothubowner”に対する共有アクセスポリシーの取得が必要です。

設定>共有アクセスポリシーを選択し、"iothubowner"をクリックします。
表示される、共有アクセスキーの、接続文字列―プライマリーキーをメモします。

image.png

##SDKツールのインストールと起動
Device Explorerという、SDKツールを使用します。

下記サイトより、msiファイルをダウンロードし、インストールします。
https://github.com/Azure/azure-iot-sdk-csharp/releases/tag/2019-1-4

image.png

インストール後、スタートメニューからAzure IoT Hub>Device Explorerを開きます。
image.png

開くと、下記ツールが表示されます。
image.png

上段の赤枠内に、先程メモした接続文字列―プライマリーキーを貼り付け、Updateをクリックします。
ここまでの設定で、SDKツールが使えるようになりました。

##SAS Tokenの作成
Managementタブを開き、Azure上で作成したデバイスを選択し、"SAS Token..."ボタンをクリックします。
image.png

Generateをクリックし、'SharedAccessSignature sr'で始まる文字列をコピーします。こちらが、SAS Tokenとなります。
image.png

##ビューアーでモニタリングの開始
Dataタブを開き、"Monitor"をクリックすると、IoT Hubで受信するデータのモニタリングがスタートします。IoT Hubで受信したデータがリアルタイムで表示されます。
image.png

ここまでで、Gravioの設定に必要となる各種設定情報の取得、およびGravioからの実行結果をモニタリングする設定が完了しました。

#Gravioの設定
温度センサーのデータをAzure IoT HUBへPublishします。
##センサーの設定
センサーの設定については、下記記事をご参照ください。
温度センサーのデータをエクセルで簡単に表示

##動作(アクション)の設定
最新の温度データ(1レコード)をSensorDBコンポーネントで取得し、
MQTTPublishコンポーネントを用いてAzure IoT HubへデータをPublishします。

アクション作成画面で、SensorDBコンポーネント>MQTTPublishコンポーネントを並べます。
image.png
####(1)SensorDBコンポーネントの設定

プロパティを選択し、各種項目を設定します。

項目 設定値
エリア、レイヤー、デバイス 前節にて設定した内容
Latest Record Only
その他 デフォルト値

image.png

次にMQTTPublishコンポーネントへ送るデータを設定します。
ステップ変数の横に表示されている矢印アイコンをクリックし、ステップ出力を設定します。
image.png

####(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 - -

プロパティ設定後は、以下のようになります。
image.png

次にステップ出力変数を作成します。プロパティ>ステップ入力の横の矢印ボタンを選択し、IoT Hubへ送信するステップ出力変数を作成します。

image.png

設定後、右上の"▷"をクリックし、動作を確認します。
正常に動作している場合は、Gravio、SDKツールの画面は以下のようになります。
image.png
Gravio画面
image.png
SDKツール画面

##動作タイミング(トリガー)の設定
温度データを取得したタイミングでデータを送るように設定します。
トリガー画面から、新しいトリガーを設定します。

項目 内容
エリア、レイヤー 温度センサーを設定しているレイヤー
アクション名 作成したアクション
Classic/Threshold Trigger Cassic Trigger
温度 >=0

今回の設定は、温度が0度以上でAzure側にデータを送信するアクションを5秒ごとに行なう、という設定です。
image.png

以上で設定終了です。

#動作確認
ビューアーを見ることで、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)

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?