クラウドアダプタを利用してAzure IoT Hubへデータを送信する

本ページでは、クラウドアダプタを利用してAzure IoT Hubへデータを送信し、Azure Storageへ保存する一連の流れを説明します。

Azureの設定

IoT Hubの作成

ますは、Microsoft Azure Portal からIoT Hubを開きIoT Hubを設定します。
「IoT ハブ の作成」からIoT Hubを作成します。



以下のように入力し、IoT Hubを設定します。

項目入力値
リソースグループiij (新規作成)
領域東日本
IoT Hub 名CloudAdapter



「サブスクリプション」は適切な値を選択します。
「確認および作成」を選択して確認画面へ進みます。
入力項目に誤りがないかを確認し「作成」を選択してIoT Hubを作成します。



IoT Hubの作成には数分掛かります。
「最新の状態に更新」を選択し、作成が完了するまで待ちます。

「デプロイが完了しました」と表示されれば作成は完了です。
次に「リソースに移動」を選択し、デバイスを登録します。

デバイスの登録

IoT Hubのリソースを開き、検索ウィンドウに「デバイス」と入力します。
「IoT デバイス>新規作成」を選択し、デバイスを新規に登録します。



ここでは下記のように入力しデバイスを登録します。
「デバイス ID」にはIoTサービス上に登録されている、デバイスIDを使用します。

項目入力値
デバイス IDdvc-xxxxxxxxxx (マスクしています)
認証の種類対称キー
自動生成キー選択
このデバイスをIoTハブに接続する有効化

「保存」を選択しデバイスを登録します。

以上でIoT Hubへのデバイスの登録は完了です。

ストレージアカウントの設定

続いて、Azure StorageとAzure IoT Hubを連携させ、IoT Hubに送信したデータをファイルとして保存します。
ますは、「ストレージアカウント の作成」からストレージアカウントを作成します。



ここでは、下記のように入力しストレージアカウントを作成します。
赤枠の箇所を入力・選択し「確認および作成」を選択して確認画面へ進みます。
入力に誤りがないかを確認し「作成」を選択してストレージアカウントを作成します。

項目入力値
リソースグループiij
ストレージアカウント名cloudadapterstorage
場所(アジア太平洋) 東日本



ストレージアカウントの作成には数十秒かかります。
「最新の状態に更新」を選択し、作成が完了するまで待ちます。

「デプロイが完了しました」と表示されれば作成は完了です。
「リソースに移動」を選択し、コンテナーを作成します。

ストレージアカウントのリソースを開き、検索ウィンドウに「コンテナー」と入力します。
「コンテナー>+ コンテナー」を選択し、コンテナーを新規に登録します。



コンテナーの名前を「cloudadapter」として作成します。

以上でストレージアカウントの設定は完了です。

メッセージルーティングの設定

次にIoT Hubへ戻り、作成したストレージアカウントへデータを保存するようにメッセージのルーティングを設定します。
検索ウィンドウに「メッセージ」と入力します。
「メッセージルーティング>追加」から設定を追加します。



ここでは設定名を「StorageRoute」として作成します。
また「エンドポイントの追加>ストレージ」から、連携用の新たなエンドポイントを作成します。



エンドポイント名を「IoTData」とします。
「Azure Storage コンテナー」の下の「コンテナーを選択します」を選択し、コンテナーを設定します。



ストレージアカウントのリソース画面から、先ほど作成した「cloudadapter」を選択します。



「エンコード」に「JSON」を選択し「作成」を選択します。



上記までの手順で以下のようになります。
ここでは「ルーティング クエリ」を変更せず、デバイスから送信された全てのメッセージが保存されるようにします。

以上でAzure上への設定は完了です。


認証情報の確認

IoT Hubの認証情報として、以下のいずれかを使用することができます。

  • 共有アクセスポリシー
  • デバイス毎に発行されるアクセスポリシー

複数のデバイスを利用する場合、デバイス毎に認証情報を登録する必要のない「共有アクセスポリシー」の利用を推奨します。

共有アクセスポリシーの確認

「共有アクセスポリシー>device」からデバイスの共有アクセスポリシーを表示します。



「共有アクセスキー」の中の「主キー」か「セカンダリ キー」のいずれかを控えておきます。
後ほどコントロールパネル上で設定する際に使用します。



デバイス毎に発行されるアクセスポリシーの確認

「IoT デバイス」から「デバイス ID」を選択し、デバイスの情報を表示します。



表示された中の「主キー」か「セカンダリ キー」のいずれかを控えておきます。
後ほどコントロールパネル上で設定する際に使用します。



ホスト名の確認

最後にデータの送信先となる「ホスト名」を確認します。
「概要」に表示されている「ホスト名」を控えておきます。
後ほどコントロールパネル上で設定する際に使用します。



IoTサービスコントロールパネルの設定

次に、コントロールパネルからクラウドアダプタの設定をします。
画面の詳細については クラウドアダプタ画面 をご覧ください。

認証情報の設定

まずは認証情報を設定します。
「クラウドアダプタ>認証情報一覧>認証情報作成」から認証情報を作成します。



ここでは先ほど確認した認証情報を使用します。
認証方式により、入力項目が異なります。

共有アクセスポリシー
項目入力値
認証種別Azure IoT Hub(共有ポリシー) を選択
認証情報名azure iot hub shared
Policy Namedevice
Shared Access Key(控えた文字列)



デバイス毎に発行されるアクセスポリシー
項目入力値
認証種別Azure IoT Hub(デバイスポリシー) を選択
認証情報名azure iot hub device
Device IDdvc-xxxxxxxxxx (マスクしています)
Shared Access Key(控えた文字列)



転送先の設定

次に、転送先設定を作成します。
「転送先一覧>転送先作成」からHTTPの転送先設定を作成します。



下記のように入力し、転送先設定を作成します。
「転送先URL」には、控えておいた「ホスト名」と、設定した「デバイス ID」を入力します。
また「認証情報」は、先ほど作成した「azure iot hub shared(device)」を選択します。
「デバイス選択」は使用するデバイスを適切に選択します。

項目入力値
転送先サービスAzure IoT Hub を選択
転送先名Azure IoT Hub
転送先URLhttps://CloudAdapter.azure-devices.net/devices/dvc-xxxxxxxxxx/messages/events
認証情報【Azure IoT Hub(共有ポリシー)】azure iot hub shared を選択
or
【Azure IoT Hub(デバイスポリシー)】azure iot hub device を選択
デバイス選択使用するデバイスを選択

以上でコントロールパネル上の設定は完了です。

デバイスからのデータ送信と受信確認

それでは実際にデバイスからデータを送信します。
ここでは、ラズベリーパイからコマンドを使用してデータを送信します。
下記コマンドを実行し、データを送信します。

pi@raspberrypi:~ $ curl -i -X POST -H 'Content-Type: application/json' http://gw.iot.iij.jp/v1 -d '{}'
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 10 Dec 2019 07:33:09 GMT
Transfer-Encoding: chunked
Connection: keep-alive

コマンドを実行するとストレージアカウントの「Storage Explore」からファイルが保存されているのが確認できます。


以上で説明は終了です。
この他にも「Service Bus topic/queue」への送信や「Azure Function」の実行 等、様々なAzureのサービスと連携することができます。
是非お試し下さい。