投稿日

SORACOM Beam の MQTT エントリポイントに IMSI 等の ID 情報をプレースホルダーとしてトピックに指定可能となりました!

みなさま、こんにちは。

SORACOM Beam MQTTエントリポイントで、MQTTのトピックにIMSI、IMEI、SIMIDをプレースホルダーとして指定できるようになりました。
当プレースホルダーはPublish、Subscribeに対応しています。

当プレースホルダーオプションはIoTシステムにとってとても重要な機能です。

当機能を使用することで、デバイスは自身のIMSIを知る必要がありません。何百、何千とあるIoTデバイスをすべて同じ設定にしても(同じトピック beamdemo/{{imsi}}に送信しても)、サーバー側はどのデバイスから送信されたか特定できるためです。
数多くあるデバイスを個別に設定するのはとても大変で現実的ではありませんが、SORACOM Beamがこれらの作業を肩代わりします!

「MQTT」と「トピック」

ここで改めて、今回のアップデートのキーワードとなるMQTTとトピックを振り返りましょう。
MQTTとは、機器同士の通信向けのプロトコルで、「軽量」そして「プッシュ通信」という特徴があります。IoTにおいては特に、デバイスとクラウドの双方向通信が必要な際に検討されます。
MQTTは「トピック」呼ばれる受信箱のようなものを利用してメッセージの送受信を行います。トピックは /iot/data/device1 と、フォルダのように指定します。
データ転送サービス SOARCOM Beamは、HTTP/TCP/UDPといったプロトコルをクラウドへ転送できるサービスで、MQTTにも対応しています。
今回のアップデートはMQTTのトピックの指定に、例えばSIMが持つID(IMSI)といった、SORACOMプラットフォームで識別できるID情報を動的に設定できるようになりました。

使用方法

当設定は、SORACOM Beam MQTTエントリポイントのオプションで「トピック名にセッション情報を利用する」を有効にすることで適用されます。

試してみます!

では、AWS IoT Core をMQTTブローカーとして試してみたいと思います。(当機能はAWS IoT CoreだけでなくAzure IoT Hub などのMQTTブローカーでももちろんご利用いただけます!)

まずは、AWS IoTの設定を行い、SIMグループの設定を行います。
設定方法は「SORACOM Beam を使用して AWS IoT と接続する」をご確認ください。

そして、忘れずに「トピック名にセッション情報を利用する」をONにします。

では、SORACOM IoT SIMを使用したデバイスからデータを送信してみたいと思います。

$ mosquitto_pub -d -h beam.soracom.io -t "beamdemo/{{imsi}}/{{simId}}/{{imei}}" -m "HelloBeam!"
Client mosqpub|30850-raspi01 sending CONNECT
Client mosqpub|30850-raspi01 received CONNACK (0)
Client mosqpub|30850-raspi01 sending PUBLISH (d0, q0, r0, m1, 'beamdemo/{{imsi}}/{{simId}}/{{imei}}', … (10 bytes))
Client mosqpub|30850-raspi01 sending DISCONNECT

AWS IoTの「MQTT テストクライアント」からトピック、ペイロードを確認します。

IMSI、SIMID、IMEIに置き換えられていますね!

当プレースホルダーはSubscribeにも対応しています。

デバイスからはトピックに beamdemo/{{imsi}}を指定して、Subscribeします。

$ mosquitto_sub -d -h beam.soracom.io -t 'beamdemo/{{imsi}}'
Client mosqsub|30920-raspi01 sending CONNECT
Client mosqsub|30920-raspi01 received CONNACK (0)
Client mosqsub|30920-raspi01 sending SUBSCRIBE (Mid: 1, Topic: beamdemo/{{imsi}}, QoS: 0)
Client mosqsub|30920-raspi01 received SUBACK
Subscribed (mid: 1): 0

同様にAWS IoTの「MQTT テストクライアント」からPublishします。

Subscribeできました!

$ mosquitto_sub -d -h beam.soracom.io -t 'beamdemo/{{imsi}}'
Client mosqsub|30920-raspi01 sending CONNECT
Client mosqsub|30920-raspi01 received CONNACK (0)
Client mosqsub|30920-raspi01 sending SUBSCRIBE (Mid: 1, Topic: beamdemo/{{imsi}}, QoS: 0)
Client mosqsub|30920-raspi01 received SUBACK
Subscribed (mid: 1): 0
Client mosqsub|30920-raspi01 received PUBLISH (d0, q0, r0, m0, 'beamdemo/4401xxxxxxxxxx', … (45 bytes))
{
"message": "Hello from AWS IoT console"
}

最後に

当機能はソラコムサンタへの依頼をソラコムのエンジニアが準備しました。(その他のお客様からもリクエストいただいています。)

@Y_uuuさんをはじめ、みなさま、ご要望ありがとございました。
ぜひご利用ください!!

江木