Soracom

Users

ドキュメント

MQTT エントリポイント

MQTT で受けた通信を、MQTT または MQTTS で転送を行う設定です。

MQTT の Publish、Subscribe を転送先となる MQTT ブローカーに転送します。MQTT ブローカーからのメッセージの Publish もデバイスに対して転送します。

設定項目

SORACOM ユーザーコンソールの場合

  • 設定名: 本設定の名前
  • 転送先
    • プロトコル: 転送先への送信プロトコル (MQTT もしくは MQTTS から選択)
    • ホスト名: 転送先の FQDN
    • ポート番号: 転送先のポート番号
    • ユーザー名: 転送先ブローカーへ送信するユーザー名 (オプション) (*1)
    • パスワード: 転送先ブローカーへ送信するパスワード (オプション) (*1)
    • パススルー: ON にした場合、クライアントデバイスから送信されるユーザー名/パスワードを転送先にパススルーします。
    • 証明書: クライアント証明書を送信するかどうかのフラグ
    • 認証情報: 送信するクライアント証明書
  • オプション
    • IMSI 付与: IMSI を送信するかどうかのフラグ (オンにするとトピックの末尾に、トピック名/IMSI という形式で IMSI が付与されます)。当 IMSI 付与は Publish に対応します。
    • トピック名にセッション情報を利用する: トピック名に存在するプレースホルダー ({{imsi}} / {{simId}} / {{imei}}) を各セッション情報で置換します。当プレースホルダーは Publish、Subscribe の両方に対応します。
      • {{imsi}} : IMSI で置き換えます。
      • {{simId}} : SIM ID で置き換えます。
      • {{imei}} : 通信モジュールの IMEI で置き換えます。IMEI は接続するキャリアやプランによっては取得できない場合があり、その場合は {{imei}}unknown-imei に置換します。
    • プラットフォームバージョン: 201912201509 が選択できます。201912201509 の違いは以下のとおりです。(*2)
      機能201912201509
      QoS接続先 MQTT ブローカーの対応状況に依存 (たとえば、ブローカー側が QoS 1 に対応している場合は、QoS 1 を利用できます)接続先 MQTT ブローカーの対応状況に関わらず、QoS 0 のみ利用可能
      will利用可能利用不可
  • (*1) ユーザー名、パスワードに #{imsi}, #{imei} が含まれている場合、接続した端末の IMSI、IMEI が自動的に置換されます。
  • (*2) プラットフォームバージョン 201912 は接続先ブローカーとの互換性・信頼性が向上しています。新たに利用いただく場合はこちらをご利用ください。移行については、プラットフォームバージョン変更時の注意事項 を必ずご確認ください。

SORACOM CLI / SORACOM API の場合

soracom groups put-config (Group:putConfigurationParameters API) を使用します。

{namespace} は、SoracomBeam です。

ボディで指定するプロパティについては、以下の keyvalue のペアを配列で指定します。

"mqtt://beam.soracom.io:1883": { // 固定
  "name": "string", // 任意の名称
  "destination": "mqtts://mqtt.example.com/topicname", // MQTT接続先
  "enabled": true | false, // エンドポイントの有効無効
  "addSubscriberHeader": true | false, // topic にIMSI を足すか否か
  "username": "USERNAME", // ユーザ名(任意)
  "password": "PASSWORD", // パスワード(任意)
  "useClientCert": true | false, // TLSクライアント証明書を使用するか否か
  "clientCerts": { // 上記を有効にした場合は必須
    "default": { // 現状は証明書を 1 つだけ登録可能
      "key": "...", // 秘密鍵(PEM形式)
      "cert": "...", // 証明書(PEM形式)
      "ca": "...", // CA証明書(PEM形式)
    }
  },
  "useCaCert": true | false, // 独自のCA証明書を使用するか否か
  "caCert": "...", // CA証明書(PEM形式)
  "usePubnub": true | false, // 転送先がPubNubの場合Trueにする(任意、指定なしの場合 false)
  "useAzureIoT": true | false, // 転送先がAzureIoTの場合Trueにする(任意、指定なしの場合 false)
  "useGoogleIoT": true | false // 転送先がGoogleIoTの場合Trueにする(任意、指定なしの場合 false)
}

設定例

[
  {
    "key": "mqtt://beam.soracom.io:1883",
    "value": {
      "name": "AWS IoT",
      "destination": "mqtts://data.iot.ap-northeast-1.amazonaws.com:8883",
      "enabled": true,
      "addSubscriberHeader": false,
      "useClientCert": true,
      "clientCerts": {
        "default": {
          "key": "-----BEGIN RSA PRIVATE KEY-----\n...",
          "cert": "-----BEGIN CERTIFICATE-----\n...",
          "ca": "-----BEGIN CERTIFICATE-----\n..."
        }
      }
    }
  }
]

エントリポイント URL

beam.soracom.io:1883

実際の利用例

Publish

mosquitto を使ってデバイスから beam へ実際に Publish してみます。

デバイス側

$ mosquitto_pub -h beam.soracom.io -p 1883 -t test -m message -d
Client mosqpub/82534-MBP sending CONNECT
Client mosqpub/82534-MBP received CONNACK
Client mosqpub/82534-MBP sending PUBLISH (d0, q0, r0, m1, 'test', ... (7 bytes))
Client mosqpub/82534-MBP sending DISCONNECT

転送先の MQTT ブローカー

1482290763: New connection from 52.198.245.54 on port 8080.
1482290763: New client connected from 52.198.245.54 as mosqpub/82534-MBP (c1, k60).
1482290763: Sending CONNACK to mosqpub/82534-MBP (0, 0)
1482290767: Received PUBLISH from mosqpub/82534-MBP (d0, q0, r0, m0, 'test/4401031********', ... (7 bytes))
1482290767: Received DISCONNECT from mosqpub/82534-MBP
1482290767: Client mosqpub/82534-MBP disconnected.

この試験では IMSI 付与をオンにしているのでトピックの末尾に IMSI が付与されているのが確認できます。(ドキュメントに載せるため、後半 8 桁をマスクしています。)

Subscribe

mosquitto を使ってデバイスから beam へ実際に Subscribe し、転送先の MQTT ブローカーからメッセージを Publish してみます。

デバイスからの Subscribe

$ mosquitto_sub -h beam.soracom.io -p 1883 -t test -d
Client mosqsub/82586-MBP sending CONNECT
Client mosqsub/82586-MBP received CONNACK
Client mosqsub/82586-MBP sending SUBSCRIBE (Mid: 1, Topic: test, QoS: 0)
Client mosqsub/82586-MBP received SUBACK
Subscribed (mid: 1): 0

Subscribe を受ける転送先 MQTT ブローカー

1482291094: New connection from 52.198.245.54 on port 8080.
1482291094: New client connected from 52.198.245.54 as mosqsub/82586-MBP (c1, k60).
1482291094: Sending CONNACK to mosqsub/82586-MBP (0, 0)
1482291094: Received SUBSCRIBE from mosqsub/82586-MBP
1482291094:     test (QoS 0)
1482291094: mosqsub/82586-MBP 0 test
1482291094: Sending SUBACK to mosqsub/82586-MBP

MQTT ブローカーに別のクライアントからメッセージを Publish

1482291169: New connection from 127.0.0.1 on port 8080.
1482291169: New client connected from 127.0.0.1 as mosqpub/3516-ip-10-0-0- (c1, k60).
1482291169: Sending CONNACK to mosqpub/3516-ip-10-0-0- (0, 0)
1482291169: Received PUBLISH from mosqpub/3516-ip-10-0-0- (d0, q0, r0, m0, 'test', ... (7 bytes))
1482291169: Sending PUBLISH to mosqsub/82586-MBP (d0, q0, r0, m0, 'test', ... (7 bytes))
1482291169: Received DISCONNECT from mosqpub/3516-ip-10-0-0-
1482291169: Client mosqpub/3516-ip-10-0-0- disconnected.

Publish されたメッセージを Beam 経由でデバイスが受け取る様子

Client mosqsub/82586-MBP received PUBLISH (d0, q0, r0, m0, 'test', ... (7 bytes))
message

MQTT エントリポイントに関する制約

制限事項と注意事項 をご確認ください。