Soracom

Users

ドキュメント

Azure IoT Hub と接続する

はじめに 

このドキュメントでは、SORACOM Beam (以下、Beam) を使用して、Azure IoT Hub にデータを送信します。当ガイドの前提は以下のとおりです。

  • SORACOM のアカウントを作成済みで、SORACOM IoT SIM をお持ちであること
  • MQTT を使用できるデバイス (Raspberry Pi + AK-020 / Wio LTE など) をお持ちであること
  • Microsoft Azure アカウントをお持ちであること

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

IoT Hub を作成する 

Microsoft Azure Portal から、IoT Hub を開き、“IoT Hub の作成” から IoT Hub を作成します。(既に作成済みのものがある場合には、そちらを利用ください。)

IoT Device を作成する 

  • IoT Hub の Explores メニューから “IoT Devices” をクリックします。
  • “+ New” ボタンから、デバイスを新規作成します。
    • Authentication Type は、Symmetric Key を選択します。

認証情報を確認する 

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

デバイス毎にクレデンシャル情報を登録しなくてよいので、デバイス数が多い場合には「共有アクセスポリシーを利用する」をお勧めします。

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

  • IoT Hub の SETTINGS メニューから Shared acess policies を開きます。
  • 使用する POLICY を選択します。(デフォルトで作成済みの “device” など)
  • Shared access keys の Primary key か Secondary key を使います。(右のボタンをおしてクリップボードにコピーしておくと便利です)

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

デバイスを選択した際に表示される Primary key または Secondary Key を使います (右のボタンをおしてクリップボードにコピーしておくと便利です)

ステップ 2: SORACOM Beam を設定する 

グループを作成する 

IoT SIM を登録した際にグループを作成していない場合には、左上の[MENU]→[SIM グループ]を開き、+追加 から新規のグループを追加します。 ユーザーコンソールの SIM 管理画面より対象の IoT SIM を選択し [操作][所属グループ変更] より、作成したグループを紐付けます。

グループで Beam を設定する 

作成したグループを選択し、グループ詳細画面から[SORACOM Beam 設定]タブを開き、[+]ボタンから「MQTT エントリポイント」を選択します。

以下を入力します。

  • 設定名 (任意の文字列)
  • 種別から Azure IoT Hub を選択
  • ホスト名に、<IoT Hub 名>.azure-devices.net を入力
  • オプションの IMSI 付与を ON に
  • 認証情報を右の+を押す

認証情報では、以下を入力します。

  • 認証情報 ID (任意文字列) を入力
  • Shared access key にコピーしておいた Primary key または Secondary key をペースト
  • もし共有アクセスポリシーの鍵である場合には、ポリシー名を Access policy name に入力

Azure IoT Hub の認証で「各デバイス毎に発行される認証情報を利用する」を選択した場合は Access policy name はブランクです。

登録を押して、認証情報が選択されていることを確認して、保存を押します。

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

デバイスの準備 

当ガイドでは、Mosquitto のクライアントを利用します。Raspbian であれば、下記コマンドでインストール可能です

sudo apt-get install mosquitto-clients

送信されたデータ確認の準備 

送信されたデータは、以下のようなツールを使用して確認します。

当ガイドでは、Azure IoT extension for Azure CLI を利用します。Azure Cloud Shell での利用も可能です。

下記のコマンドより、デバイスから送信されたメッセージをモニターできます。

$ az iot hub monitor-events -n ${iothub-name} -g ${resource-group}
Starting event monitor, use ctrl-c to stop...
${iothub-name} には IoT Hub 名を、${resource-group} にはリソースグループ名を設定してください。

デバイスからデータを送信 

デバイスからクラウドへデータを送信します。

デバイスからのデータは、 devices/<デバイスID>/messages/events/ というトピックに Publish する必要があります。また、MQTT のクライアント ID として、作成した device の、deviceId を指定する必要があります (-i オプション)。

pi@raspberrypi: ~$ deviceId=myDevice
pi@raspberrypi: ~$ mosquitto_pub -d -h beam.soracom.io -i $deviceId -t "devices/$deviceId/messages/events/" -m "Hello from SORACOM Beam!" -V mqttv311
Client myDevice sending CONNECT
Client myDevice received CONNACK
Client myDevice sending PUBLISH (d0, q0, r0, m1, 'devices/myDevice/messages/events/', ... (24 bytes))
Client myDevice sending DISCONNECT

Azure IoT extension for Azure CLI 側で以下のように表示されることが確認できます。

{
    "event": {
        "origin": "myDevice",
        "module": "",
        "interface": "",
        "component": "",
        "properties": {
            "application": {
                "imsi": "44010XXXXXXXXXX"
            }
        },
        "payload": "Hello from SORACOM Beam!"
    }
}

なお、今回は Beam の設定で、「IMSI 付与」を ON としたので、プロパティとして、IMSI (IoT SIM の固有番号) も一緒に送信されているのを確認できます。

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

次に、クラウドからデバイスへデータを送信します。

クラウドからのデータは、 devices/デバイスID/messages/devicebound/# というトピックに Subscribe する必要があります。また、MQTT のクライアント ID として、作成した device の、deviceId を指定する必要があります (-i オプション)。

pi@raspberrypi: ~$ mosquitto_sub -d -h beam.soracom.io -i $deviceId -t "devices/$deviceId/messages/devicebound/#" -V mqttv311
Client myDevice sending CONNECT
Client myDevice received CONNACK
Client myDevice sending SUBSCRIBE (Mid: 1, Topic: devices/myDevice/messages/devicebound/#, QoS: 0)
Client myDevice received SUBACK
Subscribed (mid: 1): 0

この状態で、Azure Portal のデバイス画面から、“Message To Device"をクリックし、メッセージ送信画面からデータを送信してみましょう。

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

Client myDevice received PUBLISH (d0, q0, r0, m0, 'devices/myDevice/messages/devicebound/%24.to=%2Fdevices%2FmyDevice%2Fmessages%2FdeviceBound', ... (24 bytes))
Hello from Azure Portal!