2.13 Azure IoT Hubの設定¶
本チュートリアルでは下記利用を想定した設定方法とメッセージの送受信例を説明いたします。
・転送先クラウド:Azure
・認証:Azure IoT Hub
・IoT Connect Gateway:スタンダード機能
・プロトコル:MQTT→MQTTS、HTTP→HTTPS
Azure IoT Hubの設定¶
Microsoft Azure Portal にアクセスし、サインインします。
[IoT Hub] をクリックします。
[基本] タブにて、下記の通り設定し、[確認および作成]をクリックします。
・サブスクリプション:任意のサブスクリプションを選択します。
・リソースグループ:[新規作成]をクリックし、任意のグループ名を入力します。例) test
注釈
後述の「メッセージの送受信」で使用するので、リソースグループ名をコピーしておきます。
・IoT Hub 名:任意のIoT Hub 名を入力します。 例) azure-test
注釈
後述の「メッセージの送受信」で使用するので、IoT Hub 名をコピーしておきます。
・領域:任意の領域を指定します。
・1日あたりのメッセージの制限:任意の制限量を指定します。
[確認および作成]タブに移動するので、[作成] をクリックします。
デプロイが始まるので、完了するまで数分待ちます
デプロイが完了しましたと表示されたら、[ホーム]をクリックします。
[IoT Hub] をクリックします。
作成したIoT Hubをクリックします。
[デバイス]→[デバイスの追加] の順にクリックします。
デバイスの作成で下記の通り設定し、[保存]をクリックします。
・デバイスID:任意のデバイスIDを入力 例) mydevice-[SIMのIMSI]
・IoT Edge デバイス:チェック無し
・自動生成キー:チェック有り
・このデバイスをIoTハブに接続する:有効化
[最新の情報に更新]をクリックすると作成したデバイスが表示されるので、作成したデバイスをクリックします。
デバイスIDと主キーをコピーし、「ホーム」をクリックします。デバイスIDと主キーは後述の「IoT Connect Gatewayの設定」、「メッセージの送受信」で使用します。
[IoT Hub] をクリックします。
作成したIoT Hubをクリックします。
[概要]をクリックすると基本情報が表示されるのでホスト名をコピーします。ホスト名は後述の「IoT Connect Gatewayの設定」で使用します。
以上で Azure IoT HUbの設定が完了となります。
IoT Connect Gatewayの設定¶
下記を参考に、SIMのAzure向け設定を実施します。
https://sdpf.ntt.com/services/docs/icgw/tutorials/rsts/common/update_sims/index.html
・Azure向け設定 : 有効
・AzureデバイスID : Azure IoT Hub設定時にコピーしたデバイスIDを貼り付けます。
下記、ご利用クラウドの認証情報登録を参考に認証情報の設定をします。
https://sdpf.ntt.com/services/docs/icgw/tutorials/rsts/common/create_auth/index.html#id2
・クラウド : Azure
・証明書種別 : Azure IoT Hub
・認証名 : 任意の認証名
- 認証設定の下記赤枠にてAzure IoT Hub設定時にコピーしたデバイスIDと主キー(共有アクセスキー)を貼り付けます。
- 下記を参考に設定をします。
「グループ」の作成
https://sdpf.ntt.com/services/docs/icgw/tutorials/rsts/common/create_group/index.html
「グループ」へのSIMの割当
https://sdpf.ntt.com/services/docs/icgw/tutorials/rsts/common/add_sims/index.html
「スタンダード(MQTTプロトコル)」 でクラウドに接続する ※MQTTで接続する場合の設定手順 https://sdpf.ntt.com/services/docs/icgw/tutorials/rsts/standard/mqtt/index.html
注釈
- 宛先設定のホスト名にはAzure IoT Hub設定時にコピーしたエンドポイントを使用します。
「スタンダード(HTTPプロトコル)」 でクラウドに接続する ※HTTPで接続する場合の設定手順 https://sdpf.ntt.com/services/docs/icgw/tutorials/rsts/standard/http/index.html
注釈
エントリーポイントのデバイス側Path指定をOFFに設定し、Pathには任意のPathを設定します。
例) /Azure_message_test
宛先設定のホスト名にはAzure IoT Hub設定時にコピーしたホスト名を貼り付けます。
宛先Pathは、/devices/[デバイスID]/messages/events?api-version=2018-06-30 を設定します。[デバイスID]にはAzure IoT Hub設定時にコピーしたデバイスIDを使用します。
以上でIoT Connect Gateway側の設定が完了となります。
メッセージの送受信¶
デバイスとクラウド間のメッセージ送受信例を説明いたします。
デバイスからAzure IoT HubにMQTTでメッセージを送信する¶
ターミナルを起動します。下記コマンドを実行し、Azure CLIをインストールします。
$ brew update && brew install azure-cli
注釈
Windowsの場合は下記を参考にAzule CLIをインストールします。
https://learn.microsoft.com/ja-jp/cli/azure/install-azure-cli-windows?tabs=azure-cli
インストール完了後、下記コマンドを実行します。Webブラウザが起動し、サインイン画面が表示されるのでサインインします。
$ az login
ターミナルに戻り、下記が表示されていることを確認します。
"cloudName": "AzureCloud", "homeTenantId": "[ホームテナントID]", "id": ”[id]", "isDefault": true, "managedByTenants": [], "name": "[Azure サブスクリプション名]", "state": "Enabled", "tenantId": "[テナントID]", "user": { "name": "[ユーザ名]", "type": "user" }
下記コマンドを実行します。Azure IoT Hub設定時にコピーしたリソースグループ名とIoT Hub名を[リソースグループ名]と、[IoT Hub名]に貼り付けます。
$ az iot hub monitor-events -g [リソースグループ名] -n [IoT Hub名] --props app
注釈
下記が表示された場合は、yを入力して実行します。
The command requires the extension azure-iot. Do you want to install it now?
The command will continue to run after the extension is installed. (Y/n): y
Dependency update (uamqp X.X) required for IoT extension version: X.XX.X. Continue? (y/n) -> y
下記が表示されると、Azure側のメッセージ受信モニターが開始します。画面は開いたままにします。
Starting event monitor, use ctrl-c to stop...
ターミナルで新規タブを表示し、下記コマンドを実行してメッセージを送信します。[デバイスID]はAzure IoT Hub設定時にコピーしたデバイスIDを使用します。 '{"name":"test"}' が送信するメッセージになります。
$ mosquitto_pub -h an1.icgw.ntt.com -p 1883 -t 'devices/[デバイスID]/messages/events/' -i [任意のclient-id] -m '{"name":"test"}'
ターミナルのAzure側メッセージ受信モニタータブを開き、下記メッセージが受信できていることを確認します。"payload"に受信したメッセージが表示されます。
{ "event": { "origin": "[デバイスID]", "module": "", "interface": "", "component": "", "properties": { "application": {} }, "payload": { "name": "test" } } }
Control+Cを押下し、メッセージの受信を終了します。
Azure IoT HubからデバイスにMQTTでメッセージを受信する¶
デバイス側でターミナルを開き、下記コマンドを実行します。コマンド実行後、ターミナルの画面は開いたままにします。[デバイスID]はAzure IoT Hub設定時にコピーしたデバイスIDを貼り付けます。
$ mosquitto_sub -h an1.icgw.ntt.com -p 1883 -t 'devices/[デバイスID]/messages/devicebound/#' -i [任意のclient-id]
Azure IoT コンソール にアクセスし、サインインします。
[IoT Hub] をクリックします。
作成したIoT Hubをクリックします。
[デバイス]をクリックし、作成したデバイスをクリックします。
[デバイスへのメッセージ]をクリックします。
[メッセージの本文]に任意のメッセージを入力し、[メッセージの送信]をクリックします。
デバイス側のターミナルに戻り、送信したメッセージが受信できていることを確認します。下記はデバイス側ターミナルに表示されるメッセージ受信例になります。
Client IcgwMqttClientId4803 received PUBLISH (d0, q0, r0, m0, 'devices/[デバイスID]/messages/devicebound/ %24.to=%2Fdevices%2F[デバイスID]%2Fmessages%2FdeviceBound&%24.ct=text%2Fplain%3B%20charset%3DUTF-8&%24.ce=utf-8', ... (4 bytes)) test
Control+Cを押下し、メッセージの受信を終了します。
デバイスからAzure IoT HubにHTTPでメッセージを送信する¶
ターミナルを起動します。下記コマンドを実行し、Azure CLIをインストールします。
$ brew update && brew install azure-cli
注釈
Windowsの場合は下記を参考にAzule CLIをインストールします。
https://learn.microsoft.com/ja-jp/cli/azure/install-azure-cli-windows?tabs=azure-cli
インストール完了後、下記コマンドを実行します。Webブラウザが起動し、サインイン画面が表示されるのでサインインします。
$ az login
ターミナルに戻り、下記が表示されていることを確認します。
"cloudName": "AzureCloud", "homeTenantId": "[ホームテナントID]", "id": ”[id]", "isDefault": true, "managedByTenants": [], "name": "[Azure サブスクリプション名]", "state": "Enabled", "tenantId": "[テナントID]", "user": { "name": "[ユーザ名]", "type": "user" }
下記コマンドを実行します。
Azure IoT Hub設定時にコピーしたリソースグループ名とIoT Hub名を[リソースグループ名]と、[IoT Hub名]に貼り付けます。
$ az iot hub monitor-events -g [リソースグループ名] -n [IoT Hub名] --props app
注釈
下記が表示された場合は、yを入力して実行します。
The command requires the extension azure-iot. Do you want to install it now?
The command will continue to run after the extension is installed. (Y/n): y
Dependency update (uamqp X.X) required for IoT extension version: X.XX.X. Continue? (y/n) -> y
下記が表示されると、Azure側のメッセージ受信モニターが開始します。画面は開いたままにします。
Starting event monitor, use ctrl-c to stop...
ターミナルで新規タブを表示し、下記コマンドを実行してメッセージを送信します。
[Path]はIoT Connect Gatewayのエントリーポイントに設定したPathを使用します。
例) /Azure_message_test'{"name":"test"}' が送信するメッセージになります。
$ curl -XPOST "http://an1.icgw.ntt.com/[Path]" -d '{"name":"test"}' | jq
ターミナルのAzure側メッセージ受信モニタータブを開き、下記メッセージが受信できていることを確認します。
"payload"に受信したメッセージが表示されます。
{ "event": { "origin": "[デバイスID]", "module": "", "interface": "", "component": "", "properties": { "application": {} }, "payload": { "name": "test" } } }
Control+Cを押下し、メッセージの受信を終了します。