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 トピックパターン。下り方向のメッセージルーティングを定義します。デフォルトは
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 パケットがタイムアウト時間内に受信されない場合、EMQX は 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 サービスに登録/認証を要求する認証方式のみをサポートしています。
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 Configuration - JT/T 808 Gateway
- 詳細な REST API インターフェースは以下を参照してください: REST API - Gateway