Soracom

Users

ドキュメント
Home ドキュメント SORACOM Beam Microsoft Azure に送信する

Azure IoT Hub と接続する

Beam の MQTT エントリポイントを利用して、Azure IoT Hub (以下、IoT Hub) にデバイスからデータを送信したり、デバイスで IoT Hub からのデータを受信したりできます。

X.509 CA 証明書を使用するには

Beam では、X.509 CA 証明書を利用した認証にも対応しています。詳しくは、Azure IoT Hub と X.509 証明書で認証した接続をする を参照してください。

操作を始める前に準備が必要です (クリックして確認してください)

(1) SORACOM のアカウントを作成して IoT SIM を申し込む / デバイスを購入する

MQTT を使用できるデバイスと、そのデバイスで利用できる IoT SIM を用意します。

例:

SORACOM アカウントの作成方法、IoT SIM の申し込み方法、およびデバイスの購入方法について詳しくは、SORACOM の利用を始める を参照してください。

(2) Microsoft Azure アカウントを用意する

Microsoft Azure Portal にアクセスして、Microsoft Azure アカウントを作成します。

準備完了

ステップ 1: IoT Hub を準備する

IoT Hub を準備して、IoT Device を作成します。

IoT Hub を作成する

Microsoft Azure Portal にアクセスして、IoT Hub を作成します。詳しくは、Azure Portal を使用して IoT Hub を作成する を参照してください。

IoT Hub に接続するデバイスを作成する

IoT Hub にデバイスを作成します。

  1. Microsoft Azure Portal にアクセスし、IoT Hub を作成する で作成した IoT Hub の設定画面で [デバイス管理][デバイス] をクリックします。

  2. [+デバイスの追加] をクリックします。

  3. 以下の項目を設定します。

    項目説明
    [デバイス ID]IoT Hub でデバイスを区別するための識別子を入力します。1 つの IoT Hub に複数のデバイスを作成する場合は、prefix (例: myDevice-) とデバイスで利用する IoT SIM の IMSI (例: 295012345678901) を連結します (例: myDevice-295012345678901)。なお、IMSI は SIM 管理画面の 一覧表示 で確認できます。
    [認証の種類]「対称キー」を選択します。
    [このデバイスを IoT ハブに接続する]「有効化」を選択します。

  4. [保存][最新の情報に更新] の順にクリックします。

認証情報を確認する

SORACOM プラットフォームの認証情報ストアに登録する情報を、IoT Hub で確認します。

認証情報としては、以下のいずれかを使用できます。

認証情報説明
共有アクセスポリシーを利用する認証情報ストアに、共有アクセスポリシーの認証情報を 1 つだけ登録して、すべてのデバイスで共有する方法です。
デバイスごとに発行される認証情報を利用する認証情報ストアに、デバイスの数だけ認証情報を登録する方法です。デバイスごとの認証情報を使用したほうが、認証情報が漏洩したときの影響を小さくできます。
認証情報ストアに登録できるキーの個数の上限は緩和できます

認証情報ストアに登録できるキーの個数の上限 を超えた数のデバイスで Beam を利用する場合は、SORACOM サポートに上限緩和を申請してください。

共有アクセスポリシーを利用する

認証情報ストアに、共有アクセスポリシーの認証情報を 1 つだけ登録して、すべてのデバイスで共有する方法です。デバイス数が多い場合には、共有アクセスポリシーを利用できます。

  1. Microsoft Azure Portal にアクセスし、IoT Hub を作成する で作成した IoT Hub の設定画面で [セキュリティ設定][共有アクセスポリシー] をクリックします。

  2. 使用するポリシーを選択します。

    ここでは、デフォルトで作成されている [device] をクリックします。

  3. [プライマリキー] または [セカンダリキー][] をクリックします。

    プライマリキーまたはセカンダリキーが、クリップボードにコピーされます。

  4. SORACOM ユーザーコンソール にアクセスし、手順 3 でコピーした内容を認証情報ストアに登録します。

    認証情報ストアの表示方法については、認証情報を登録する を参照してください。

    認証情報は、以下のように登録します。

    情報ファイル名
    [認証情報 ID]認証情報を識別するために任意の文字列を入力します。ほかの認証情報と同じ名前は入力できません。また、登録後は変更できません。例: Shared-Access-Key
    [種別]「Azure IoT 認証情報」を選択します。
    [ACCESS POLICY NAME]共有アクセスポリシー名 (例: device) を入力します。
    [SHARED ACCESS KEY]手順 3 でコピーした共有アクセスポリシーのプライマリキーまたはセカンダリキーを入力します。

デバイスごとに発行される認証情報を利用する

認証情報ストアに、デバイスの数だけ認証情報を登録する方法です。以下の手順を 1 回行うと、1 個のデバイスの認証情報が登録されます。

  1. Microsoft Azure Portal にアクセスし、IoT Hub を作成する で作成した IoT Hub の設定画面で [デバイス管理][デバイス] をクリックします。

  2. デバイス ID をクリックします。

  3. [主キー] または [セカンダリキー][] をクリックして、クリップボードにコピーします。

  4. SORACOM ユーザーコンソール にアクセスし、手順 3 でコピーした内容を認証情報ストアに登録します。

    認証情報ストアの表示方法については、認証情報を登録する を参照してください。

    認証情報は、以下のように登録します。

    情報ファイル名
    [認証情報 ID]IoT Hub に接続するデバイスを作成する で指定したデバイス ID を入力します。それ以外の文字列を入力するとデータを送受信できません。例: myDevice-295012345678901
    [種別]「Azure IoT 認証情報」を選択します。
    [ACCESS POLICY NAME]空欄のままにします。
    [SHARED ACCESS KEY]手順 3 でコピーしたデバイスの主キーまたはセカンダリキーを入力します。

ステップ 2: SORACOM Beam を有効にして MQTT エントリポイントを設定する

ここでは、デバイスごとに発行される認証情報を利用する で登録した認証情報を利用する場合の設定例を説明します。

Beam の設定はグループに対して行います

ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。

  1. SIM グループ画面で [SORACOM Beam 設定] をクリックします。

    SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。

  2. [+設定を追加する][MQTT エントリポイント] の順にクリックします。

  3. 以下の項目を設定します。

    項目説明
    [設定名]MQTT エントリポイントを識別するために任意の文字列を入力します。
    [種別]「Azure IoT Hub」を選択します。
    [ホスト名]IoT Hub のホスト名を入力します。ホスト名は、Microsoft Azure Portal にアクセスし、IoT Hub を作成する で作成した IoT Hub の設定画面にアクセスし、[概要] をクリックすると確認できます。例: {IoT Hub 名}.azure-devices.net (*1)
    [認証情報]
    [IMSI 付与]トピックの末尾に IMSI を付与する場合は、オンにします。
    • (*1) {IoT Hub 名} は、IoT Hub を作成する で作成した IoT Hub の名前を入力します。一方、プレースホルダー (#{imsi}) はそのまま入力します。IMSI を入力しないでください。

  4. [保存] をクリックします。

  5. IoT SIM が所属するグループを切り替えます。

    IoT SIM の Beam の設定が完了しました。

ステップ 3: Beam を使用して IoT Hub にデータを送信する

MQTT クライアントを準備する (デバイスの操作)

ここでは、MQTT クライアントとして mosquitto-clients を利用します。

mosquitto-clients のインストール

mosquitto-clients は、サイト からダウンロードおよびインストールしてください。

なお、Raspberry Pi の場合は、以下のコマンドでインストールできます。

$ sudo apt install mosquitto-clients

送信データを確認するツールを準備する (PC の操作)

デバイスから送信されたデータは、以下のようなツールで確認できます。

Azure CLI で送信データを確認する

ここでは、Azure CLI および Azure CLI 向けの IoT 拡張機能 (Microsoft Azure IoT extension for Azure CLI) を使用して、デバイスから送信したデータを確認する操作例を説明します。

  1. PC に Azure CLI をインストールします。

    詳しくは、Azure CLI をインストールする方法 を参照してください。

  2. 以下のコマンドを実行し、画面の指示に従って操作してください。

    $ az login
    
  3. 以下のコマンドを実行します。

    $ az iot hub monitor-events -g ${resource_group_name} -n ${iot_hub_name} --props app
    
    Starting event monitor, use ctrl-c to stop...
    

    デバイスから送信するデータのモニターが開始されます。

Azure IoT エクスプローラーで送信データを確認する

ここでは、Azure IoT エクスプローラーを使用して、デバイスから送信したデータを確認する操作例を説明します。

  1. PC に Azure IoT エクスプローラーをインストールします。

    詳しくは、Azure IoT エクスプローラーをインストールして使用する を参照してください。

  2. Microsoft Azure Portal にアクセスし、IoT Hub を作成する で作成した IoT Hub の設定画面で [セキュリティ設定][共有アクセスポリシー] をクリックします。

  3. [iothubowner][プライマリ接続文字列] または [セカンダリ接続文字列][] をクリックします。

    プライマリ接続文字列またはセカンダリ接続文字列がクリップボードにコピーされます。

  4. Azure IoT エクスプローラーを起動して、[IoT hubs][+Add connection] の順にクリックします。

  5. [Connection string] に、手順 3 でコピーした内容を貼り付け、[Save] をクリックします。

    IoT Hub に作成したデバイスが表示されます。

  6. デバイス ID → [Telemetry][Start] の順にクリックします。

    デバイスから送信するデータのモニターが開始されます。

デバイスからデータを送信する (デバイスの操作)

デバイスから IoT Hub にデータを送信します。

デバイスからのデータは、devices/${device_id}/messages/events/ というトピックに Publish します。また、MQTT のクライアント ID (-i オプション) として、IoT Hub に作成したデバイスのデバイス ID を指定します。

なお、以下のコマンドの例では、device_id に、IoT Hub に接続するデバイスを作成する で IoT Hub に作成したデバイスの ID (例: myDevice-295012345678901) を代入すると、上記のとおりにデバイス ID が指定されます。

$ device_id="myDevice-295012345678901"
$ mosquitto_pub -d -h beam.soracom.io -V mqttv311 \
-i ${device_id} -t "devices/${device_id}/messages/events/" \
-m '{"message": "Hello from SORACOM Beam!"}' -q 1
Client myDevice-295012345678901 sending CONNECT
Client myDevice-295012345678901 received CONNACK (0)
Client myDevice-295012345678901 sending PUBLISH (d0, q0, r0, m1, 'devices/myDevice-295012345678901/messages/events/', ... (39 bytes))
Client myDevice-295012345678901 sending DISCONNECT

Azure IoT extension for Azure CLI では、以下のように出力されます。

{
    "event": {
        "origin": "myDevice-295012345678901",
        "module": "",
        "interface": "",
        "component": "",
        "properties": {
            "application": {
                "imsi": "295012345678901"
            }
        },
        "payload": "{\"message\": \"Hello from SORACOM Beam!\"}"
    }
}
Azure IoT エクスプローラーで Telemetry を取得した場合

Azure IoT エクスプローラーで Telemetry を取得した場合は、Azure IoT extension for Azure CLI で確認する場合とは異なり、properties の下に application が出力されないことを確認しています (2022-06-27 現在)。

{
  "body": {
    "message": "Hello from SORACOM Beam!"
  },
  "enqueuedTime": "Fri Jun 24 2022 10:00:00 GMT+0900 (Japan Standard Time)",
  "properties": {
    "imsi": "295012345678901"
  }
}

ステップ 4: IoT Hub からのデータをデバイスで受信する

次に、IoT Hub からデータを送信し、デバイスで受信します。

受信したデータを確認するツールを準備する

IoT Hub からのデータを受信するには、devices/デバイス ID/messages/devicebound/# というトピックを Subscribe します。また、MQTT のクライアント ID (-i オプション) として、IoT Hub に作成したデバイスのデバイス ID を指定します。

なお、以下のコマンドの例では、device_id に、IoT Hub に接続するデバイスを作成する で IoT Hub に作成したデバイスの ID (例: myDevice-295012345678901) を代入すると、上記のとおりにデバイス ID が指定されます。

$ device_id="myDevice-295012345678901"
$ mosquitto_sub -d -h beam.soracom.io -V mqttv311 \
-i ${device_id} -t "devices/${device_id}/messages/devicebound/#"
Client myDevice-295012345678901 sending CONNECT
Client myDevice-295012345678901 received CONNACK (0)
Client myDevice-295012345678901 sending SUBSCRIBE (Mid: 1, Topic: devices/myDevice-295012345678901/messages/devicebound/#, QoS: 0)
Client myDevice-295012345678901 received SUBACK
Subscribed (mid: 1): 0

IoT Hub からデータを送信する

  1. Microsoft Azure Portal にアクセスし、IoT Hub を作成する で作成した IoT Hub の設定画面で [デバイス管理][デバイス] をクリックします。

  2. デバイス ID をクリックして、[デバイスへのメッセージ] をクリックします。

  3. [メッセージの本文] に「Hello from Azure Portal!」を入力して、[メッセージの送信] をクリックします。

    デバイスにメッセージが届き、以下のように表示されます。

    Client myDevice-295012345678901 received PUBLISH (d0, q0, r0, m0, 'devices/myDevice-295012345678901/messages/devicebound/%24.to=%2Fdevices%2FmyDevice-295012345678901%2Fmessages%2FdeviceBound&%24.ct=text%2Fplain%3B%20charset%3DUTF-8&%24.ce=utf-8', ... (24 bytes))
    Hello from Azure Portal!