LapsHub Live

LapsHub Streaming Protocol

LapsHub Liveの契約名。主催者 → コース → 車 → セッション。ライブテレメトリと低遅延車載。Live APIでその上に作る。Hosted Pit Wallは同じプロトコル上の任意UI。

主催者スコープ · デザインパートナー · 実行前の仕様

LSPとは

LapsHub Streaming Protocolはサーキットストリームの言語。新しいバイナリ形式ではない。チーム、配信者、連携先がLSPを話す。Live APIはその上にセッション、ストリームアクセス、メーターを足す。

Organization
  └── Track (subscribe: all org cars on this circuit)
        └── Car
              └── Session
                    ├── Telemetry events
                    └── Stage (onboard) → publish / watch access

契約

LSPは主催者、コース、車、セッション、テレメトリ、車載ステージを名付ける。組織内のコースを購読する。複数の車が送る。製品はその車をイベントとして受ける。

汎用バスではない

Kafkaや生のIoTはバイトを運ぶ。どの主催者、コース、車、セッションがライブか、いつ車載を開くかは名付けない。その対応がLSP。

Live API

作るために買うもの。セッション制御、ストリームアクセス、利用メーター。ピットウォール、オーバーレイ、シリーズアプリ、配信はあなたのもの。

Hosted Pit Wall

同じプロトコル上の任意の公式UI。完成画面が欲しいなら、同じLiveバックエンドのHosted Pit Wall。

MQTTでのデバイス連携

テレメトリ源をMQTTでつなぐ。GraphQLでセッションを開き、短寿命の認証を発行し、デバイス、ロガー、ブリッジからJSONエンベロープを送る。

1

セッションを開く

主催者の carIdtrackIdcreateLiveSession を呼ぶ。コース上の車ごとにライブセッションは一つ。

2

MQTT認証を発行

role: PUBLISHcreateTelemetryCredentials を呼ぶ。Live APIは endpointclientIdtopicPublishexpiresAt を返す。

3

接続して送信

デバイスはTLSで mqtts://live-mqtt.lapshub.com:8883 に接続し、テレメトリエンベロープを topicPublish へ送る。1メッセージ最大50ポイント。

対応ソース

LapsHub device、ブリッジ経由のRaceBox / Dragy、CAN/GPSロガー、MQTTクライアントを動かしてJSONを出せるスタック。

回線フォーマット

MQTT上のJSON、application/json。必須: vorgIdtrackIdcarId、少なくとも ts を含む points[]。任意: latlonspeedMpsheadingDeglap、名前付き channels(rpm、throttleなど)。

主催者スコープのみ

あなたのコース上の、主催者の車。公開ドライバーアプリへのタップではない。

セッションと送信認証(GraphQL)
mutation {
  createLiveSession(input: { carId: "car_42", trackId: "track_ra" }) {
    id
    status
  }
}

mutation {
  createTelemetryCredentials(
    sessionId: "sess_1"
    input: { role: PUBLISH, ttlSeconds: 3600 }
  ) {
    endpoint
    clientId
    topicPublish
    expiresAt
  }
}
認証レスポンス(例)
{
  "endpoint": "mqtts://live-mqtt.lapshub.com:8883",
  "clientId": "lh_org_1_car_42_sess_1",
  "topicPublish": "live/org_1/track_ra/car_42/telemetry",
  "expiresAt": "2026-08-17T19:00:00.000Z"
}

予定ブローカー: mqtts://live-mqtt.lapshub.com:8883(プレビュー、未稼働)。認証は短寿命。期限前に更新。デバイスがMQTTを動かせないときの二次手段がHTTPSバッチ。高HzのGPSとCANはMQTT推奨。スキーマ: asyncapi-telemetry-v1.yaml

コース購読

組織内のコースを購読する。出した車はそのトラックストリームへリアルタイムでイベントを送る。createTelemetryCredentialsrole: SUBSCRIBE または BOTH

トラックトピック(例)
Subscribe (your org, one circuit):
live/{orgId}/{trackId}/+/telemetry

Publish (one car):
live/{orgId}/{trackId}/{carId}/telemetry

Live APIは短寿命の送受信アクセスを出す。ストリームクライアントが使えないときの二次手段がHTTPSバッチ。

イベントJSONの例

エンベロープ一つにポイントが一つ以上。スキーマ v: 1。デザインパートナー向けの全フィールド: asyncapi-telemetry-v1.yaml

テレメトリエンベロープ
{
  "v": 1,
  "orgId": "org_1",
  "trackId": "track_ra",
  "carId": "car_42",
  "sessionId": "sess_1",
  "points": [
    {
      "ts": "2026-08-17T18:00:00.000Z",
      "lat": 43.798,
      "lon": -87.992,
      "speedMps": 42.1,
      "headingDeg": 187.2,
      "lap": 3,
      "channels": { "rpm": 6120, "throttle": 0.82 }
    }
  ]
}

テレメトリストリーム

高Hzの車データは制御APIではなくMQTT。デバイスは車トピックへ送り、ピットウォールとオーバーレイはトラックのワイルドカードを購読。接続と送信は デバイス連携

送信

車やロガーは live/{orgId}/{trackId}/{carId}/telemetry へ送る。

購読

ピットウォール、オーバーレイ、配信スタックは live/{orgId}/{trackId}/+/telemetry を購読し、そのコースの主催者の車をすべて受ける。

制御プレーンではない

高HzのGPSポイントをセッションAPIに流さない。あの呼び出しはセッションとアクセスを開く。ポイントを運ぶのはストリーム。

制御プレーン

Live APIでセッションを開き、ストリームと視聴アクセスを出し、利用量を読む。プロトコルはそれらの意味を名付ける。回線の形はデザインパートナーレビュー中。

セッション

組織内のコース上の車のライブセッションを開閉する。

アクセス

短寿命の送信、購読、視聴アクセス。視聴アクセスは誰かが見ている間だけ。

利用量

メーターは送信時間、視聴時間、受理したテレメトリ量を報告する。

GraphQL制御(データプレーンではない)
mutation {
  createLiveSession(input: { carId: "car_42", trackId: "track_ra" }) {
    id
    status
  }
}
MQTTコース購読
Subscribe (your org, one circuit):
live/{orgId}/{trackId}/+/telemetry

Publish (one car):
live/{orgId}/{trackId}/{carId}/telemetry

GraphQLはセッションとステージを開く。MQTTがライブの車データを運ぶ。WebRTCが車載を運ぶ。GraphQLはライブGPSバスではない。

映像ステージ

観客向けの低遅延車載(2秒未満目標)。誰かが見ている間だけステージを開き、自前スタックからYouTube、Twitch、TV、会場スクリーンへ乗せる。

送信

車/セッションのステージを開始し、カメラから車載を送る。

視聴

視聴アクセスは短寿命で課金対象。誰かが見ている間だけ開く。

配信先はあなた

ライブバックエンドはこちら。YouTube、Twitch、TV、オーバーレイ、自社配信への届け方はあなた。

メーター

利用量として数えるもの。パイロット価格はデザインパートナーと決める。

video.publisher

送信側が接続している間の参加秒。

video.subscriber

視聴者が接続している間の参加秒。

telemetry.message

受理したテレメトリイベントまたはバッチ項目の数。

デザインパートナー仕様

デザインパートナーとの構成レビュー用。実行エンドポイントはまだ一般提供ではありません。公開前に仕様が変わることがあります。

自分のスタックでLSPを見る

デザインパートナーアクセスを申請。製品、配信、ピットウォールを教えてください。セッション、テレメトリ、車載ステージをロードマップに載せます。

デザインパートナー向け。完成画面なら Hosted Pit Wall。ドライバー向けアプリなら 無料ダウンロード