JT/T 808 ゲートウェイ
EMQX 5.4 には、中国で広く使用されている車両端末通信プロトコルである JT/T 808 プロトコルが含まれており、車両と監視センター間のデータ通信に利用されます。EMQX の JT/T 808 ゲートウェイは、JT/T 808 クライアントからの接続を受け入れ、そのイベントやメッセージを MQTT パブリッシュメッセージに変換します。
現在の実装では、以下の制限があります:
- TCP 伝送に基づいています。
- JT/T 808 2011、2013、および 2019 のみをサポートし、JT/T 808 2021 はまだサポートしていません。
- 端末の登録および登録解除メッセージを SMS 経由で送信できません。
- EMQX の組み込み認証システムは使用できず、端末登録/アクセス認証のために HTTP サービスアドレスの設定が必要です。
JT/T 808 ゲートウェイの有効化
JT/T 808 ゲートウェイは、ダッシュボード、REST API、または base.hocon 設定ファイルを通じて有効化および設定できます。
ダッシュボードからゲートウェイを有効化する
このセクションでは、ダッシュボードから JT/T 808 ゲートウェイを有効化する方法を説明します。
EMQX ダッシュボードの左ナビゲーションバーで Management -> Gateway をクリックします。Gateway ページにはサポートされているすべてのゲートウェイが一覧表示されます。JT/T 808 を見つけ、Action 列の Configure ボタンをクリックすると、Initialize JT/T 808 ページに遷移します。
TIP
EMQX がクラスターで稼働している場合、ダッシュボードや REST API での設定はクラスター全体に反映されます。単一ノードのみを設定したい場合は、base.hocon でゲートウェイを設定してください。
設定を簡素化するために、EMQX は Gateway ページのすべての必須フィールドにデフォルト値を提供しています。カスタム設定が不要な場合は、以下の3ステップで JT/T 808 ゲートウェイを有効化できます:
- Basic Parameters ステップページでデフォルト設定をすべて受け入れ、Next をクリックします。
- 次に Listeners ステップページに遷移し、EMQX はポート 6207 で TCP リスナーを事前設定しています。再度 Next をクリックして設定を確認します。
- Enable ボタンをクリックして JT/T 808 ゲートウェイを有効化します。
ゲートウェイの有効化が完了すると、Gateway ページに戻り、JT/T 808 ゲートウェイが Enabled 状態になっていることを確認できます。

REST API または設定ファイルでゲートウェイを有効化する
JT/T 808 ゲートウェイは、REST API または設定ファイルによっても有効化および設定できます:
TIP
EMQX がクラスターで稼働している場合、ダッシュボードや REST API での設定はクラスター全体に反映されます。単一ノードのみを設定したい場合は、base.hocon でゲートウェイを設定してください。
JT/T 808 ゲートウェイは TCP タイプリスナーのみをサポートします。設定可能なパラメーターの完全な一覧については、以下を参照してください:Gateway Configuration - Listeners。
JT/T 808 ゲートウェイのカスタマイズ
デフォルト設定に加え、EMQX はさまざまな設定オプションを提供しており、特定のビジネス要件により適したカスタマイズが可能です。このセクションでは、Gateways ページで利用可能な設定オプションを詳しく解説します。
基本設定
Gateways ページで JT/T 808 を見つけ、Actions 列の Settings をクリックします。Settings パネルで JT/T 808 ゲートウェイをカスタマイズできます。

- MountPoint:パブリッシュやサブスクライブ時にすべてのトピックに接頭辞として付加される文字列を設定します。これにより異なるプロトコル間でのメッセージルーティングの分離を実現できます。例:
jt808/${clientid}/。このトピックプレフィックスはゲートウェイによって管理され、クライアントはパブリッシュやサブスクライブ時に明示的に追加する必要はありません。 - Max Length of Frame:ゲートウェイが処理可能なフレームの最大サイズ。デフォルトは
8192で、幅広いデータパケットサイズに対応可能です。 - Parse Unknown Message IDs:標準プロトコルに定義されていないメッセージIDを解析するかどうか。
trueに設定すると、未知のメッセージIDを持つメッセージを処理し、そのペイロードを Base64 エンコードして転送します。デフォルトはtrue。falseの場合、メッセージは無視されるか、Ignore Unsupported Frames の設定に応じてクライアントが切断されます。
- String Encoding:デバイスから報告される文字列の解析およびデバイスへの文字列のパッケージング・配送時に使用する文字エンコーディングを指定します。
utf8に設定すると、ゲートウェイは UTF-8 エンコーディングで文字列を解析します。デフォルトはUTF-8。gbkに設定すると、ゲートウェイは GBK エンコーディングで文字列を解析し、EMQX にパブリッシュする前に UTF-8 に変換します。
- Retry Interval:メッセージ配信失敗時の再試行間隔。デフォルトは
8s。 - Max Retry Times:メッセージ配信の最大試行回数。超過すると配信できなかったメッセージは破棄されます。デフォルトは
3。 - Max message queue length:ダウンロードストリームメッセージ配信の最大メッセージキュー長。デフォルトは
100。 - Idle Timeout:接続中のクライアントが非アクティブと見なされ切断されるまでの秒数。デフォルトは
30秒。 - Enable Statistics:ゲートウェイによる統計収集および報告を許可するかどうか。デフォルトは
true、選択肢はtrueまたはfalse。 - Registry:JT/T 808 デバイスのレジストリセンター。
allow_anonymousがfalseの場合に必須です。ゲートウェイが JT/T 808 登録メッセージを受信すると、このアドレスに HTTP リクエストとして登録情報を送信します。詳細は Configure Client Authentication/Authorization を参照してください。 - Authentication URL:クライアント認証のための外部サービスの URL を指定します。
- Up Topic:ゲートウェイから EMQX へメッセージをパブリッシュする際の MQTT トピックパターン。JT/T 808 クライアントからのメッセージが上り方向でどのように MQTT トピックにマッピングされるかを定義します。デフォルトは
jt808/${clientid}/${phone}/up。 - Down Topic:ブローカーからゲートウェイを経由して JT/T 808 クライアントに送信されるメッセージの MQTT トピックパターン。下り方向の通信において、MQTT ブローカーから JT/T 808 クライアントへのメッセージルーティングを定義します。デフォルトは
jt808/${clientid}/${phone}/dn。 - Ignore Unsupported Frames:標準プロトコルに準拠しない JT/T 808 フレームの処理方法を決定します。
trueの場合、サポートされていないフレームはログに記録されますが、他の有効なメッセージの処理は継続され、カスタムや非標準メッセージによる切断を防ぎます。デフォルトはtrue。falseの場合、サポートされていないフレーム受信時にクライアントを切断します。
- Allow Anonymous:認証なしでクライアントが接続できるかどうかを設定します。
trueに設定すると、認証情報なしで接続可能です。
リスナーの追加
デフォルトで、名前が default の TCP リスナーがポート 6207 で設定されており、1秒あたり最大1,000接続、最大1,024,000の同時接続をサポートしています。より詳細な設定を行うには、Listeners タブをクリックして編集、削除、新規リスナーの追加が可能です。

+ Add Listener をクリックすると Add Listener ページが開き、以下の設定項目を続けて入力できます:
基本設定
- Name:リスナーの一意識別子を設定します。
- Type:プロトコルタイプを選択します。MQTT-SN の場合は
udpまたはdtlsが選択可能です。 - Bind:リスナーが接続を受け付けるポート番号を設定します。
- MountPoint(オプション):パブリッシュやサブスクライブ時にすべてのトピックに接頭辞として付加される文字列を設定し、異なるプロトコル間でのメッセージルーティングの分離を実現します。
リスナー設定
- Acceptor:アクセプタプールのサイズを設定します。デフォルトは
16。 - Max Connections:リスナーが処理可能な最大同時接続数を設定します。デフォルトは
1024000。 - Max Connection Rate:リスナーが1秒あたりに受け入れ可能な新規接続の最大レートを設定します。デフォルトは
1000。 - Proxy Protocol:EMQX クラスターが HAProxy や NGINX の背後にある場合に Proxy Protocol V1/V2 を有効化します。デフォルトは
false。 - Proxy Protocol Timeout:Proxy Protocol パケットがタイムアウト内に受信されない場合に TCP 接続を切断するまでの時間(秒)。デフォルトは
3秒。
TCP 設定
- ActiveN:ソケットの
{active, N}オプションを設定します。これはソケットが能動的に処理可能な受信パケット数を示します。詳細は Erlang Documentation - setopts/2 を参照してください。 - Buffer:受信および送信パケットを格納するバッファサイズを KB 単位で設定します。
- TCP_NODELAY:接続に対して TCP_NODELAY フラグを設定します。デフォルトは
false。 - SO_REUSEADDR:ローカルポート番号の再利用を許可するかどうかを設定します。デフォルトは
true。 - Send Timeout:接続の TCP 送信タイムアウト時間(秒)。デフォルトは
15秒。 - Send Timeout Close:送信タイムアウト時に接続を切断するかどうか。デフォルトは
true。
クライアント認証/認可の設定
JT/T 808 プロトコル仕様における独自の登録/認証ロジックのため、JT/T 808 ゲートウェイは特定の登録サービス HTTP サービスへの登録/認証要求という1種類の認証のみをサポートしています。
TIP
ここでの「認証」は、JT/T 808 プロトコルで定義される認証を指し、MQTT の Pub/Sub アクセス制御とは異なります。
また、gateway.jt808.proto.auth.allow_anonymous = true を設定することで匿名認証を有効化でき、クライアントの登録/認証ロジックをスキップ可能です。
登録/認証リクエストの詳細フォーマットは以下の通りです。
登録リクエスト
URL: http://127.0.0.1:8991/jt808/registry
Method: POST
Body:
{ "province": 58,
"city": 59,
"manufacturer": "Infinity",
"model": "Q2",
"license_number": "ZA334455",
"dev_id": "xx11344",
"color": 3,
"phone", "00123456789"
}登録レスポンス:
戻りコードの意味は以下の通りです:
0: 成功
1: 車両は既に登録済み
2: データベースに該当車両なし
3: 端末は既に登録済み
4: データベースに該当端末なし
認証リクエスト
URL: http://127.0.0.1:8991/jt808/auth
Method: POST
Body:
{ "code": "authcode",
"phone", "00123456789"
}認証レスポンス:
HTTP ステータスコード 200: 認証成功
その他: 認証失敗注意:認証リクエストは、システムが認証コードを保存していない場合(端末が直接認証メッセージを送信してシステムにログインする場合)にのみ呼び出されます。
データ交換フォーマット
詳細は JT/T 808 Gateway Data Exchange Format を参照してください。
ユーザーレイヤーインターフェース
- 詳細な設定手順は、ゲートウェイ設定 - JT/T 808 ゲートウェイ を参照してください。
- 詳細な REST API インターフェースは、REST API - ゲートウェイ を参照してください。