LapsHub Live

LapsHub Streaming Protocol

O contrato com nombre de LapsHub Live. Organização → circuito → carro → sessão. Telemetria em direto mais cámara de baja latência. Live API é como construyé encima. Hosted Pit Wall é a UI opcionao de primer partido en este mesmo protocolo.

Ámbito da org · Design partners · Specs anté do runtime

O que é LSP

LapsHub Streaming Protocol é a linguagem do stream do circuito. Não é um formato binário novo. Equipas, streamers e integradores falam LSP; Live API acrescenta sessões, acesso ao stream e meters por cima.

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

Contrato

LSP nomeia org, track, carro, sessão, eventos de telemetria e etapa onboard. Subscrevem-se a um circuito na vossa organização. Muitos carros publicam. O vosso produto recebe esses carros como eventos.

Não é um bus genérico

Kafka ou IoT em bruto movem bytes. Não nomeiam que org, track, carro ou sessão está live, nem quando o onboard deve abrir. Esse mapeamento é LSP.

Live API

O que compram para construir: controlo de sessão, acesso ao stream e meters de uso. O pit wall, overlay, app de série ou stream é vosso.

Hosted Pit Wall

UI oficial opcional sobre o mesmo protocolo. Preferem um ecrã chave na mão? O mesmo backend Live, caminho Hosted Pit Wall.

Integração de dispositivos por MQTT

Liguem a vossa fonte de telemetria por MQTT. Abram uma sessão em GraphQL, emitam credenciais de curta duração e publiquem envelopes JSON a partir do vosso device, logger ou bridge.

1

Abram uma sessão

Chamem createLiveSession com o carId e trackId da vossa org. Uma sessão live por carro no circuito.

2

Emitam credenciais MQTT

Chamem createTelemetryCredentials com role: PUBLISH. Live API devolve endpoint, clientId, topicPublish e expiresAt.

3

Liguem e publiquem

O vosso device liga-se a ${endpoint} por TLS e publica envelopes de telemetria em topicPublish. Até 50 pontos por mensagem.

Fontes suportadas

LapsHub device, RaceBox ou Dragy via a vossa bridge, loggers CAN/GPS, ou qualquer stack que possa correr um cliente MQTT e emitir JSON.

Formato no cabo

JSON sobre MQTT, application/json. Campos de envelope obrigatórios: v, orgId, trackId, carId e points[] com pelo menos ts. Opcionais por ponto: lat, lon, speedMps, headingDeg, lap e escalares channels com nome (rpm, throttle, etc.).

Só alcance de org

Os carros da vossa organização nos vossos circuitos. Não é um tap ao tráfego público da app de piloto LapsHub.

Sessão + credenciais de publish (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
  }
}
Resposta de credenciais (ilustrativo)
{
  "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"
}

Broker previsto: ${endpoint} (Preview, não live). As credenciais são de curta duração: renovem antes de expirarem. O ingest batch HTTPS é uma via secundária quando um device não pode correr MQTT. Prefiram MQTT para GPS de alto Hz e canais CAN. Schema completo: asyncapi-telemetry-v1.yaml.

Subscrição ao circuito

Subscrevam-se a um circuito na vossa org. Os carros que publicam enviam eventos para esse stream do track em tempo real. Emitam credenciais de subscribe com role: SUBSCRIBE ou BOTH em createTelemetryCredentials.

Topics do track (ilustrativo)
Subscribe (your org, one circuit):
live/{orgId}/{trackId}/+/telemetry

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

Live API emite acesso de publish e subscribe de curta duração. HTTPS batch continua como via secundária quando não há um cliente de stream.

Exemplo de JSON de evento

Um envelope, um ou mais pontos. Versão de schema v: 1. Lista completa de campos para parceiros de design: asyncapi-telemetry-v1.yaml.

Envelope de telemetria
{
  "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 }
    }
  ]
}

Stream de telemetria

Os dados do carro de alto Hz vão por MQTT, não pela API de controlo. Os devices publicam num topic de carro; pit walls e overlays subscrevem-se ao wildcard do track. Veja integração de dispositivos para o fluxo de ligar e publicar.

Publicar

Carros ou loggers publicam em live/{orgId}/{trackId}/{carId}/telemetry.

Subscrever

Pit walls, overlays e stacks de stream subscrevem-se a live/{orgId}/{trackId}/+/telemetry e recebem cada carro da org nesse circuito.

Não é o plano de controlo

Não empurrem pontos GPS de alto Hz pelas APIs de sessão. Essas chamadas abrem sessões e acesso. O stream transporta os pontos.

Plano de controlo

Live API é como abrem sessões, concedem acesso de stream e watch, e leem uso. O protocolo nomeia o que essas chamadas significam. As formas a nível de cabo continuam em revisão de parceiros de design.

Sessões

Abram e fechem uma sessão live para um carro num track da vossa org.

Acesso

Acesso de publish, subscribe e watch de curta duração. Abram acesso de watch só enquanto alguém está a ver.

Uso

Os meters reportam tempo de publish, tempo de watch e volume de telemetria aceite.

Controlo GraphQL (não o plano de dados)
mutation {
  createLiveSession(input: { carId: "car_42", trackId: "track_ra" }) {
    id
    status
  }
}
Subscrição ao track por MQTT
Subscribe (your org, one circuit):
live/{orgId}/{trackId}/+/telemetry

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

GraphQL abre sessões e etapas. MQTT transporta os dados live do carro. WebRTC transporta o onboard. GraphQL não é o bus de GPS live.

Etapas de vídeo

Onboard de baixa latência para a vossa audiência (objetivo abaixo de 2 s). Abram uma etapa só enquanto alguém está a ver, depois alimentem YouTube, Twitch, TV ou ecrãs no venue a partir do vosso próprio stack.

Publicar

Arranquem uma etapa para o carro/sessão e enviem onboard a partir da câmara.

Ver

O acesso de watch é de curta duração e faturável. Abram-no só enquanto alguém está a ver.

A vossa distribuição

Nós corremos o backend live. Vocês decidem como o evento chega ao YouTube, Twitch, TV, overlays e streams internos.

Meters

O que contamos como uso. O preço do programa piloto define-se com parceiros de design.

video.publisher

Segundos de participante enquanto um publisher está ligado.

video.subscriber

Segundos de participante enquanto um viewer permanece ligado.

telemetry.message

Contagem de eventos de telemetria aceites ou itens de batch.

Specs para parceiros de design

Estes contratos são para revisão de arquitetura com parceiros de design. Os endpoints de runtime ainda não estão em disponibilidade geral. As specs podem mudar antes do lançamento.

Veja LSP no vosso stack

Solicitem acesso de parceiro de design. Contem-nos do vosso produto, stream ou pit wall e mapeamos sessões, telemetria e etapas onboard ao vosso roadmap.

Programa de parceiros de design. Preferem um ecrã chave na mão? ${pitLabel}. Procuram a app de piloto? ${appLabel}.