MQTT エントリポイント
MQTT で受けた通信を、MQTT または MQTTS で転送を行う設定です。
MQTT の Publish、Subscribe を転送先となる MQTT ブローカーに転送します。MQTT ブローカーからのメッセージの Publish もデバイスに対して転送します。
MQTT エントリポイントは、Unified Endpoint を経由して利用できません
設定項目
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
に置換します。
- プラットフォームバージョン:
201912
と201509
が選択できます。201912
と201509
の違いは以下のとおりです。(*2)機能 201912
201509
QoS 接続先 MQTT ブローカーの対応状況に依存 (たとえば、ブローカー側が QoS 1 に対応している場合は、QoS 1 を利用できます) 接続先 MQTT ブローカーの対応状況に関わらず、QoS 0 のみ利用可能 will 利用可能 利用不可
- IMSI 付与: IMSI を送信するかどうかのフラグ (オンにするとトピックの末尾に、
- (*1) ユーザー名、パスワードに
#{imsi}
,#{imei}
が含まれている場合、接続した端末の IMSI、IMEI が自動的に置換されます。 - (*2) プラットフォームバージョン
201912
は接続先ブローカーとの互換性・信頼性が向上しています。新たに利用いただく場合はこちらをご利用ください。移行については、MQTT エントリポイントのプラットフォームバージョン変更時の注意事項 を必ずご確認ください。
SORACOM CLI / SORACOM API の場合
soracom groups put-config
(Group:putConfigurationParameters API
) を使用します。
{namespace}
は、SoracomBeam
です。
ボディで指定するプロパティについては、以下の key
と value
のペアを配列で指定します。
"mqtt://beam.soracom.io:1883": { // 固定
"name": "string", // 任意の名称
"destination": "mqtts://mqtt.example.com/topicname", // MQTT接続先
"enabled": true | false, // MQTT エントリポイントの有効無効
"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..."
}
}
}
}
]
MQTT エントリポイント 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 エントリポイントに関する制約
制限事項と注意事項 をご確認ください。