SORACOM Developers

Getting Started

SORACOM Beam を使用して Azure IoT Hub と接続する

はじめに

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

当ガイドの前提は以下のとおりです。

SORACOM Beam とは

Beam は SORACOM Air の SIM を使用したデバイスからのデータ・アップロード時にクラウド側でデータ処理を行うためのプロキシーサービスです。

Beam概要

Beam を使用することで、以下が可能となります。

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

IoT Hub を作成する

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

IoT Device を作成する

認証情報を確認する

認証情報としては、以下のいずれかを使用する事が出来ます。

  1. 共有アクセスポリシーを利用する
  2. 各デバイス毎に発行される認証情報を利用する

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

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

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

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

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

グループを作成する

SIMを登録した際にグループを作成していない場合には、左上の[MENU]→[SIMグループ]を開き、+追加 から新規のグループを追加します。 SIM一覧画面から SIM を選択し、操作から所属グループ変更で、作成したグループを紐付けます。

グループで Beam を設定します。

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

以下を入力します。

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

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

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

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

デバイスの準備

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

sudo apt-get install mosquitto-clients

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

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

当ガイドでは、IoT Hub Explorer を利用します。以下のコマンドを実行してインストールします。

npm install -g iothub-explorer

インストールが終わったら、下記のコマンドを実行します。

$ connection_string='HostName=xxxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XXXXXXXXXXXXXXXXXXXXX='

$ iothub-explorer monitor-events --login $connection_string

Monitoring events from all devices...

接続の際には、IoT Hub の 共有アクセスポリシー(Shared access policies)の、iothubowner 権限が必要となりますので、Connection String のどちらかをクリップボードにコピーします。

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

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

デバイスからのデータは、 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!'
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

iothub-explorer 側で以下のように表示されることが確認できます。

==== From: myDevice ====
Hello from SORACOM Beam!
---- application properties ----
{
  "imsi": "440101234567890"
}
====================

なお、今回はBeamの設定で、「IMSI 付与」をONとしたので、プロパティとして、IMSI(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/#"
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!

Getting Started

SORACOM Air for セルラー

SORACOM Air for LoRaWAN

SORACOM Air for Sigfox

SORACOM Beam

SORACOM Canal/Direct/Door

SORACOM Endorse

SORACOM Funnel

SORACOM Gate

SORACOM Harvest

SORACOM Inventory

SORACOM Junction

SORACOM Krypton

SORACOM Lagoon

サービス機能詳細

Developer Tools

pagetop