2.13 Azure IoT Hubの設定

本チュートリアルでは下記利用を想定した設定方法とメッセージの送受信例を説明いたします。

・転送先クラウド:Azure

・認証:Azure IoT Hub

・IoT Connect Gateway:スタンダード機能

・プロトコル:MQTT→MQTTS、HTTP→HTTPS


Azure IoT Hubの設定

  1. Microsoft Azure Portal にアクセスし、サインインします。

    例) https://portal.azure.com/

  2. [IoT Hub] をクリックします。

    Azure
  3. [基本] タブにて、下記の通り設定し、[確認および作成]をクリックします。

    ・サブスクリプション:任意のサブスクリプションを選択します。

    ・リソースグループ:[新規作成]をクリックし、任意のグループ名を入力します。例) test

    注釈

    後述の「メッセージの送受信」で使用するので、リソースグループ名をコピーしておきます。

    ・IoT Hub 名:任意のIoT Hub 名を入力します。 例) azure-test

    注釈

    後述の「メッセージの送受信」で使用するので、IoT Hub 名をコピーしておきます。

    ・領域:任意の領域を指定します。

    ・1日あたりのメッセージの制限:任意の制限量を指定します。

    Azure
  4. [確認および作成]タブに移動するので、[作成] をクリックします。

    Azure
  5. デプロイが始まるので、完了するまで数分待ちます

    Azure
  6. デプロイが完了しましたと表示されたら、[ホーム]をクリックします。

    Azure
  7. [IoT Hub] をクリックします。

    Azure
  8. 作成したIoT Hubをクリックします。

    Azure
  9. [デバイス]→[デバイスの追加] の順にクリックします。

    Azure
  10. デバイスの作成で下記の通り設定し、[保存]をクリックします。

    ・デバイスID:任意のデバイスIDを入力 例) mydevice-[SIMのIMSI]

    ・IoT Edge デバイス:チェック無し

    ・自動生成キー:チェック有り

    ・このデバイスをIoTハブに接続する:有効化

    Azure
  11. [最新の情報に更新]をクリックすると作成したデバイスが表示されるので、作成したデバイスをクリックします。

    Azure
  12. デバイスIDと主キーをコピーし、「ホーム」をクリックします。デバイスIDと主キーは後述の「IoT Connect Gatewayの設定」、「メッセージの送受信」で使用します。

    Azure
  13. [IoT Hub] をクリックします。

    Azure
  14. 作成したIoT Hubをクリックします。

    Azure
  15. [概要]をクリックすると基本情報が表示されるのでホスト名をコピーします。ホスト名は後述の「IoT Connect Gatewayの設定」で使用します。

    Azure

以上で Azure IoT HUbの設定が完了となります。


IoT Connect Gatewayの設定

  1. 下記を参考に、SIMのAzure向け設定を実施します。

    https://sdpf.ntt.com/services/docs/icgw/tutorials/rsts/common/update_sims/index.html

    ・Azure向け設定 : 有効

    ・AzureデバイスID : Azure IoT Hub設定時にコピーしたデバイスIDを貼り付けます。

Azure

  1. 下記、ご利用クラウドの認証情報登録を参考に認証情報の設定をします。

    https://sdpf.ntt.com/services/docs/icgw/tutorials/rsts/common/create_auth/index.html

    ・クラウド : Azure

    ・証明書種別 : Azure IoT Hub

    ・認証名 : 任意の認証名


  1. 認証設定の下記赤枠にてAzure IoT Hub設定時にコピーしたデバイスIDと主キー(共有アクセスキー)を貼り付けます。
Azure

  1. 下記を参考に設定をします。

「グループ」の作成

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でメッセージを送信する

  1. ターミナルを起動します。下記コマンドを実行し、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


  1. インストール完了後、下記コマンドを実行します。Webブラウザが起動し、サインイン画面が表示されるのでサインインします。

    $ az login
    
  2. ターミナルに戻り、下記が表示されていることを確認します。

    "cloudName": "AzureCloud",
     "homeTenantId": "[ホームテナントID]",
     "id": ”[id]",
     "isDefault": true,
     "managedByTenants": [],
     "name": "[Azure サブスクリプション名]",
     "state": "Enabled",
     "tenantId": "[テナントID]",
     "user": {
      "name": "[ユーザ名]",
      "type": "user"
     }
    
  3. 下記コマンドを実行します。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

  1. 下記が表示されると、Azure側のメッセージ受信モニターが開始します。画面は開いたままにします。

    Starting event monitor, use ctrl-c to stop...
    
  2. ターミナルで新規タブを表示し、下記コマンドを実行してメッセージを送信します。[デバイス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"}'
    
  3. ターミナルのAzure側メッセージ受信モニタータブを開き、下記メッセージが受信できていることを確認します。"payload"に受信したメッセージが表示されます。

    {
      "event": {
        "origin": "[デバイスID]",
        "module": "",
        "interface": "",
        "component": "",
        "properties": {
          "application": {}
        },
        "payload": {
          "name": "test"
        }
      }
    }
    
  4. Control+Cを押下し、メッセージの受信を終了します。


Azure IoT HubからデバイスにMQTTでメッセージを受信する

  1. デバイス側でターミナルを開き、下記コマンドを実行します。コマンド実行後、ターミナルの画面は開いたままにします。[デバイスID]はAzure IoT Hub設定時にコピーしたデバイスIDを貼り付けます。

    $ mosquitto_sub -h an1.icgw.ntt.com -p 1883 -t 'devices/[デバイスID]/messages/devicebound/#' -i [任意のclient-id]
    

  1. Azure IoT コンソール にアクセスし、サインインします。

    例) https://portal.azure.com/


  1. [IoT Hub] をクリックします。

    Azure
  2. 作成したIoT Hubをクリックします。

    Azure
  3. [デバイス]をクリックし、作成したデバイスをクリックします。

    Azure
  4. [デバイスへのメッセージ]をクリックします。

    Azure
  5. [メッセージの本文]に任意のメッセージを入力し、[メッセージの送信]をクリックします。

    Azure
  6. デバイス側のターミナルに戻り、送信したメッセージが受信できていることを確認します。下記はデバイス側ターミナルに表示されるメッセージ受信例になります。

    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
    
  7. Control+Cを押下し、メッセージの受信を終了します。


デバイスからAzure IoT HubにHTTPでメッセージを送信する

  1. ターミナルを起動します。下記コマンドを実行し、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


  1. インストール完了後、下記コマンドを実行します。Webブラウザが起動し、サインイン画面が表示されるのでサインインします。

    $ az login
    
  2. ターミナルに戻り、下記が表示されていることを確認します。

    "cloudName": "AzureCloud",
     "homeTenantId": "[ホームテナントID]",
     "id": ”[id]",
     "isDefault": true,
     "managedByTenants": [],
     "name": "[Azure サブスクリプション名]",
     "state": "Enabled",
     "tenantId": "[テナントID]",
     "user": {
      "name": "[ユーザ名]",
      "type": "user"
     }
    
  3. 下記コマンドを実行します。

    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

  1. 下記が表示されると、Azure側のメッセージ受信モニターが開始します。画面は開いたままにします。

    Starting event monitor, use ctrl-c to stop...
    
  2. ターミナルで新規タブを表示し、下記コマンドを実行してメッセージを送信します。

    [Path]はIoT Connect Gatewayのエントリーポイントに設定したPathを使用します。

    例) /Azure_message_test'{"name":"test"}' が送信するメッセージになります。

    $ curl -XPOST "http://an1.icgw.ntt.com/[Path]" -d '{"name":"test"}' | jq
    
  3. ターミナルのAzure側メッセージ受信モニタータブを開き、下記メッセージが受信できていることを確認します。

    "payload"に受信したメッセージが表示されます。

    {
      "event": {
        "origin": "[デバイスID]",
        "module": "",
        "interface": "",
        "component": "",
        "properties": {
          "application": {}
        },
        "payload": {
          "name": "test"
        }
      }
    }
    
  4. Control+Cを押下し、メッセージの受信を終了します。