# JT/T 808 ゲートウェイ

JT/T 808 ゲートウェイは、EMQX が IoV（Internet of Vehicles）シナリオ向けに設計したプロトコル適応コンポーネントです。車両の位置情報、状態監視、データ交換などの機能をサポートし、車載端末と監視プラットフォーム間の通信に広く利用されています。

## 基本設定

JT/T 808 ゲートウェイの **アクション** 列にある **設定** ボタンをクリックして、基本設定を行います。

- **MountPoint**：パブリッシュやサブスクライブ時にすべてのトピックのプレフィックスとして使用する文字列を設定します。異なるプロトコル間でのメッセージルーティングの分離を実現する方法です。例：`jt808/${clientid}/`。このトピックプレフィックスはゲートウェイが管理するため、クライアントはパブリッシュやサブスクライブ時に明示的にこのプレフィックスを付ける必要はありません。
- **Max Length of Frame**：ゲートウェイが処理可能なフレームの最大サイズです。デフォルト値は `8192` で、さまざまなパケットサイズに対応可能です。
- **Retry Interval**：メッセージ送信失敗時の再試行間隔です。デフォルト値は `8秒` です。
- **Max Retry Times**：メッセージ送信時の最大再試行回数です。この回数を超えると送信できなかったメッセージは破棄されます。デフォルト値は `3` です。
- **Max Message Queue Length**：下流メッセージのメッセージキューの最大長です。デフォルト値は `10` です。
- **Idle Timeout**：クライアントの非アクティブ時間（秒）で、これを超えると切断と見なされます。デフォルト値は `30秒` です。
- **Up Topic**：ゲートウェイから EMQX プラットフォームへメッセージをパブリッシュする際の MQTT トピックパターンです。JT/T 808 クライアントのメッセージを MQTT トピックにマッピングするための設定です。デフォルトのトピックは `jt808/${clientid}/${phone}/up` です。
- **Down Topic**：EMQX プラットフォームからゲートウェイ経由で JT/T 808 クライアントにメッセージを送信する際の MQTT トピックパターンです。MQTT メッセージを JT/T 808 クライアントにルーティングするための設定です。デフォルトのトピックは `jt808/${clientid}/${phone}/dn` です。
- **Ignore Unsupported Frames**：標準プロトコルに準拠しない JT/T 808 フレームの処理方法を決定します。
  - `true` に設定すると、非対応フレームはログに記録されますが、他の有効なメッセージの処理は継続され、カスタムや非標準メッセージによる切断を防ぎます。デフォルト値は `true` です。
  - `false` に設定すると、非対応フレーム受信時にクライアントを切断します。
- **Allow Anonymous**：認証なしでクライアントの接続を許可するかどうかを設定します。`true` に設定すると、認証情報なしでの接続が可能になります。

## クライアント

JT/T 808 ページの **クライアント** タブでは、デプロイメントに接続しているクライアントの基本情報を確認できます。**アクション** 列からはクライアントの強制切断が可能です。

### クライアントツールによる接続テスト

以下の手順で、JT/T 808 プロトコルゲートウェイクライアントのシミュレーションを使って接続テストができます。

1. JT/T 808 端末シミュレーターのリポジトリにアクセスします：[yedajiang44/GpsTerminalEmulator](https://gitee.com/yedajiang44/GpsTerminalEmulator/tree/master)。README の指示に従って Docker でインストールおよび起動してください。

   ```bash
   ## Docker Compose のインストール
   sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
   sudo chmod +x /usr/local/bin/docker-compose
   
   ## ディレクトリ作成
   mkdir jt808terminalemulator
   cd jt808terminalemulator
   mkdir data
   
   ## 以下を docker-compose.yml にコピー＆ペースト
   nano docker-compose.yml
   
   ## サービス起動
   sudo docker-compose up -d
   
   ## サービス状態確認。起動後は以下のコマンドで状態を確認します。
   sudo docker-compose ps
   
   ## 問題発生時はログを確認
   sudo docker-compose logs -f
   ```

   以下の内容が表示されれば、サービスは正常に起動しています。

   ![simulator_run_success](./_assets/simulator_run_success.png)

2. `server-ip:4000` で端末エミュレーターの管理画面にアクセスします。

   ![simulator_web_UI](./_assets/simulator_web_UI.png)

3. 指示に従って車両データやルートデータを追加します。

   ![simulator_steps](./_assets/simulator_steps.png)

   タスクデータ追加時には、サーバーのデプロイメント接続アドレスを入力し、ポートは `8090` を使用します。デプロイメント概要ページに表示されている接続アドレスを参照してください。**保存** をクリックするとタスクが開始されます。

   ![simulator_new_task](./_assets/simulator_new_task.png)

これらの手順完了後、JT/T 808 ゲートウェイのクライアント一覧に接続中のクライアントが表示されます。

![simulator_connected](./_assets/simulator_connected.png) クライアント一覧のクライアントIDをクリックすると詳細情報を確認できます。**Kick Out** ボタンをクリックするとクライアントを切断できます。

## アクセス認証／認可の設定

詳細な設定方法は [クライアント認証／認可の設定](https://docs.emqx.com/en/emqx/latest/gateway/jt808.html#configure-client-authentication-authorization) を参照してください。IoV端末の要件に応じて認証設定を完了してください。

## データ交換フォーマット

EMQX ドキュメントの [JT/T 808 2013 データ交換フォーマット](https://docs.emqx.com/en/emqx/latest/gateway/jt808_data_exchange.html) を参照してください。
