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 を用意します。
例:
- Raspberry Pi + AK-020
- Raspberry Pi + Soracom Onyx - LTE™ USB ドングル
- Wio LTE
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 にデバイスを作成します。
Microsoft Azure Portal にアクセスし、IoT Hub を作成する で作成した IoT Hub の設定画面で の をクリックします。
をクリックします。
以下の項目を設定します。
項目 説明 IoT Hub でデバイスを区別するための識別子を入力します。1 つの IoT Hub に複数のデバイスを作成する場合は、prefix (例: myDevice-
) とデバイスで利用する IoT SIM の IMSI (例:295012345678901
) を連結します (例:myDevice-295012345678901
)。なお、IMSI は SIM 管理画面の 一覧表示 で確認できます。「対称キー」を選択します。 「有効化」を選択します。 → の順にクリックします。
認証情報を確認する
SORACOM プラットフォームの認証情報ストアに登録する情報を、IoT Hub で確認します。
認証情報としては、以下のいずれかを使用できます。
認証情報 | 説明 |
---|---|
共有アクセスポリシーを利用する | 認証情報ストアに、共有アクセスポリシーの認証情報を 1 つだけ登録して、すべてのデバイスで共有する方法です。 |
デバイスごとに発行される認証情報を利用する | 認証情報ストアに、デバイスの数だけ認証情報を登録する方法です。デバイスごとの認証情報を使用したほうが、認証情報が漏洩したときの影響を小さくできます。 |
認証情報ストアに登録できるキーの個数の上限は緩和できます
認証情報ストアに登録できるキーの個数の上限 を超えた数のデバイスで Beam を利用する場合は、SORACOM サポートに上限緩和を申請してください。
共有アクセスポリシーを利用する
認証情報ストアに、共有アクセスポリシーの認証情報を 1 つだけ登録して、すべてのデバイスで共有する方法です。デバイス数が多い場合には、共有アクセスポリシーを利用できます。
Microsoft Azure Portal にアクセスし、IoT Hub を作成する で作成した IoT Hub の設定画面で の をクリックします。
使用するポリシーを選択します。
ここでは、デフォルトで作成されている
をクリックします。または の をクリックします。
プライマリキーまたはセカンダリキーが、クリップボードにコピーされます。
SORACOM ユーザーコンソール にアクセスし、手順 3 でコピーした内容を認証情報ストアに登録します。
認証情報ストアの表示方法については、認証情報を登録する を参照してください。
認証情報は、以下のように登録します。
情報 ファイル名 認証情報を識別するために任意の文字列を入力します。ほかの認証情報と同じ名前は入力できません。また、登録後は変更できません。例: Shared-Access-Key
「Azure IoT 認証情報」を選択します。 共有アクセスポリシー名 (例: device
) を入力します。手順 3 でコピーした共有アクセスポリシーのプライマリキーまたはセカンダリキーを入力します。
デバイスごとに発行される認証情報を利用する
認証情報ストアに、デバイスの数だけ認証情報を登録する方法です。以下の手順を 1 回行うと、1 個のデバイスの認証情報が登録されます。
Microsoft Azure Portal にアクセスし、IoT Hub を作成する で作成した IoT Hub の設定画面で の をクリックします。
デバイス ID をクリックします。
または の をクリックして、クリップボードにコピーします。
SORACOM ユーザーコンソール にアクセスし、手順 3 でコピーした内容を認証情報ストアに登録します。
認証情報ストアの表示方法については、認証情報を登録する を参照してください。
認証情報は、以下のように登録します。
情報 ファイル名 IoT Hub に接続するデバイスを作成する で指定したデバイス ID を入力します。それ以外の文字列を入力するとデータを送受信できません。例: myDevice-295012345678901
「Azure IoT 認証情報」を選択します。 空欄のままにします。 手順 3 でコピーしたデバイスの主キーまたはセカンダリキーを入力します。
ステップ 2: SORACOM Beam を有効にして MQTT エントリポイントを設定する
ここでは、デバイスごとに発行される認証情報を利用する で登録した認証情報を利用する場合の設定例を説明します。
Beam の設定はグループに対して行います
ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。
SIM グループ画面で
をクリックします。SIM グループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。
→ の順にクリックします。
以下の項目を設定します。
項目 説明 MQTT エントリポイントを識別するために任意の文字列を入力します。 「Azure IoT Hub」を選択します。 IoT Hub のホスト名を入力します。ホスト名は、Microsoft Azure Portal にアクセスし、IoT Hub を作成する で作成した IoT Hub の設定画面にアクセスし、 をクリックすると確認できます。例: {IoT Hub 名}.azure-devices.net
(*1)- 共有アクセスポリシーを利用する 場合は、登録した認証情報を選択します。この場合は、プレースホルダー (
#{imsi}
) は入力しません。 - デバイスごとに発行される認証情報を利用する 場合は、デバイス ID の prefix (例:
myDevice-
) にプレースホルダー (#{imsi}
) を追加した文字列を入力します。例:myDevice-#{imsi}
。(*1)
トピックの末尾に IMSI を付与する場合は、オンにします。 - (*1)
{IoT Hub 名}
は、IoT Hub を作成する で作成した IoT Hub の名前を入力します。一方、プレースホルダー (#{imsi}
) はそのまま入力します。IMSI を入力しないでください。
- 共有アクセスポリシーを利用する 場合は、登録した認証情報を選択します。この場合は、プレースホルダー (
をクリックします。
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 向けの IoT 拡張機能 (Microsoft Azure IoT extension for Azure CLI)
- Azure IoT エクスプローラー
Azure CLI で送信データを確認する
ここでは、Azure CLI および Azure CLI 向けの IoT 拡張機能 (Microsoft Azure IoT extension for Azure CLI) を使用して、デバイスから送信したデータを確認する操作例を説明します。
PC に Azure CLI をインストールします。
詳しくは、Azure CLI をインストールする方法 を参照してください。
以下のコマンドを実行し、画面の指示に従って操作してください。
$ az login
以下のコマンドを実行します。
$ az iot hub monitor-events -g ${resource_group_name} -n ${iot_hub_name} --props app
Starting event monitor, use ctrl-c to stop...
デバイスから送信するデータのモニターが開始されます。
${resource_group_name}
にはリソースグループ名を、${iot_hub_name}
には IoT Hub 名を設定してください。- 初めて実行するときは、Azure CLI 向けの IoT 拡張機能 (Microsoft Azure IoT extension for Azure CLI) のインストールが始まります。画面の指示に従って操作してください。
Azure IoT エクスプローラーで送信データを確認する
ここでは、Azure IoT エクスプローラーを使用して、デバイスから送信したデータを確認する操作例を説明します。
PC に Azure IoT エクスプローラーをインストールします。
詳しくは、Azure IoT エクスプローラーをインストールして使用する を参照してください。
Microsoft Azure Portal にアクセスし、IoT Hub を作成する で作成した IoT Hub の設定画面で の をクリックします。
→ または の をクリックします。
プライマリ接続文字列またはセカンダリ接続文字列がクリップボードにコピーされます。
Azure IoT エクスプローラーを起動して、
→ の順にクリックします。に、手順 3 でコピーした内容を貼り付け、 をクリックします。
IoT Hub に作成したデバイスが表示されます。
デバイス ID →
→ の順にクリックします。デバイスから送信するデータのモニターが開始されます。
デバイスからデータを送信する (デバイスの操作)
デバイスから 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 からデータを送信する
Microsoft Azure Portal にアクセスし、IoT Hub を作成する で作成した IoT Hub の設定画面で の をクリックします。
デバイス ID をクリックして、
をクリックします。に「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!