Soracom

Users

ドキュメント

制限事項と注意事項

SORACOM Beam には以下の制限があります。

  • TCP → HTTP/HTTPS エントリポイントでは、HTTP(S) に変換時に TCP で送信したデータが分割されることがあります。大きなデータを送信する場合は、HTTP エントリポイントの利用をご検討ください。
  • 転送先サーバーが自己署名証明書またはプライベートな認証局で署名された証明書を使用している場合は証明書の検証ができないため接続に失敗します。

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

MQTT エントリポイント には以下の制約があります。

MQTT エントリポイントの制約は指定されたプラットフォームバージョンによって異なります。 プラットフォームバージョンには 201912201509 の 2 つがあり、推奨バージョンは 201912 となります。

プラットフォームバージョン 201509 は 2022 年 1 月 20 日をもってサポートを終了します。 2022 年 1 月 20 日以降は、SORACOM Beam の MQTT エントリポイントはプラットフォームバージョン 201912 が適用されます。プラットフォームバージョン変更時の注意事項 をご確認いただき、事前の動作確認および移行をお願いいたします。

プラットフォームバージョン 201912 利用時 

  • 利用できる MQTT プロトコルのバージョンや機能は接続先の MQTT ブローカーの対応状況に依存します。接続先が対応している MQTT プロトコルバージョンを確認のうえ、クライアント側で明示的に MQTT プロトコルバージョンを指定することを推奨します。
  • connect の keepalive に設定できる値は、0 または 5 以上 から 1200 以下の整数です。それ以外の値を設定した場合、connect リクエストに NOT_AUTHORIZED コードを返却します。

プラットフォームバージョン 201509 利用時 

  • MQTT プロトコルは MQTT v3.1.1 をベースにしていますが、以下については仕様との相違があります。
  • connect について
    • will に対応していないため、will プロパティを無視します。
    • SORACOM Beam は session の状態の保存を行っていませんが、MQTT ブローカーには clean session のパラメータをそのまま転送します。
  • QoS について
    • QoS 0 のみサポートしています。QoS 1, 2 を指定してメッセージを送ることはできますが、メッセージの到達性を保証しません。
    • 接続先の MQTT ブローカーがサポートしていない QoS を指定した場合、コネクションが切断されたりエラーになったりする場合があります。

MQTT エントリポイントに関する注意事項 

  • 無通信時の切断について
    • keepalive に 5 以上 1200 以下の値が設定されているとき、SORACOM Beam は keepalive の 1.5 倍の時間通信がない場合に TCP コネクションを切断します。
    • keepalive が 0 に設定されている場合、SORACOM Beam は 30 分間通信がない場合に TCP コネクションを切断します。
  • MQTT 接続中にセルラー通信のセッションが切断された場合、SORACOM Beam との TCP セッションは不通となりますが、SORACOM Beam ではそれを検知できません。
    • 端末側で常時接続するユースケースの場合は、 keepalive を有効にするか、クライアント側でセルラー通信のセッション断を検知して再接続する機構の導入を強く推奨します。
      keepalive に 5 以上 1200 以下の整数を指定すると、keepalive が有効となり、セッション断を検知できるようになります。keepalive を有効にするとクライアントが指定された間隔で PINGREQ パケットを送出します。
    • セルラー通信の切断はコンソールまたは API で SIM のセッション切断の操作を行うことで再現できます。
  • Azure IoT Hub, Google IoT Core, PubNub, Watson IoT Platform については、クラウド認証情報を設定することで各クラウドサービスに合わせた形式でデータを転送します。詳細は Getting Started セクションをご確認ください。
  • Beam 設定にて種別を「Azure IoT Hub」または「Google Cloud IoT Core」 にして接続する場合はトークンの有効期限が 1 時間で失効します。Azure の場合は X.509 証明書で認証した接続 の利用も検討してください。

MQTT エントリポイントの課金に関する注意事項 

SORACOM Beam は以下のメッセージをやり取りしたときに 1 リクエストとカウントします。クライアントから SORACOM Beam 間のやり取り・SORACOM Beam と接続先の MQTT ブローカー間のやり取り、それぞれについてカウントされます。例えば、クライアントからメッセージを 1 通 PUBLISH した場合、 2 リクエストとカウントされます。

プラットフォームバージョン 201912 利用時 

  • クライアントから SORACOM Beam へ SUBSCRIBE, UNSUBSCRIBE, PUBLISH が発行されたとき (PINGREQ は課金されません)
  • SORACOM Beam から接続先の MQTT ブローカーへ SUBSCRIBE, UNSUBSCRIBE, PUBLISH が発行されたとき (PINGREQ は課金されません)
  • 接続先の MQTT ブローカーから SORACOM Beam へメッセージが発行されたとき
  • SORACOM Beam からクライアントへメッセージが発行されたとき

プラットフォームバージョン 201509 利用時 

  • クライアントから SORACOM Beam へ SUBSCRIBE, UNSUBSCRIBE, PUBLISH, PINGREQ が発行されたとき
  • SORACOM Beam から接続先の MQTT ブローカーへ SUBSCRIBE, UNSUBSCRIBE, PUBLISH, PINGREQ が発行されたとき
  • 接続先の MQTT ブローカーから SORACOM Beam へ PUBLISH が発行されたとき
  • SORACOM Beam からクライアントへ PUBLISH が発行されたとき

また、SIM が Virtual Private Gateway に所属している場合は SORACOM Beam/Funnel/Funk の利用回数に関わらず、追加の費用は発生しません。ただし、VPG の各サイズに応じて、Beam、Funnel、Funk の合計の秒間あたりリクエストに上限があります。詳細は Virtual Private Gateway のご利用料金 を参照してください。

プラットフォームバージョン変更時の注意事項 

MQTT のバージョン 

Azure IoT Hub または Google IoT Core を利用している場合は、クライアントが接続時に MQTT バージョン 3.1.1 を指定していることを事前にご確認ください。

プラットフォームバージョン 201509 においては、クライアントが指定している MQTT バージョンに関わらず、ソラコムプラットフォームが MQTT バージョン 3.1.1 を用いて両サービスに接続していました。

プラットフォームバージョン 201912 においては、アーキテクチャの変更によって、常にクライアントが指定する MQTT バージョンを用いて接続する仕様に変更されました。そのため、クライアントが両サービスが対応していない MQTT バージョン (3.1) を指定して接続した場合、接続エラーが発生します。また、デフォルトの MQTT バージョンが 3.1 になっている MQTT クライアントやデバイスが複数確認されております。

運用中の機器でプラットフォームバージョンを変更する際には、事前の動作確認をお願いいたします。

なお、MQTT バージョンの変更方法については MQTT クライアントやデバイスのマニュアルをご確認ください。

転送先に接続するプロトコル 

プラットフォームバージョン 201509 においては、証明書 (keycert) を利用している場合、転送先に接続するプロトコルの設定に関わらず MQTTS プロトコルで転送先に接続されます。

プラットフォームバージョン 201912 においては、証明書の利用有無に関わらず、転送先に指定されたプロトコルで接続します。