Saltearse al contenido

Pestaña DOCKS

La pestaña DOCKS es la superficie del tile de streams para los DJI docks asignados a esta misión. A diferencia de TACLINK (que muestra las pistas de peers de vídeo en la sala de LiveKit), DOCKS muestra la identidad lógica del dock — haces clic en una tarjeta de dock y la consola abre su tile de drone-stream en modo DJI Cloud, enrutando a través de nuestro transporte DJI en lugar de TACLINK.

Qué muestra la pestaña

Las tarjetas de dock se alimentan del signal DjiDockService.onlineDocks. Cada tarjeta:

  • Nombre del dock + número de serie.
  • Punto de estado — verde si el dock no está offline, gris si lo está. La pestaña no filtra los docks offline; todavía puedes verlos pero no puedes abrir un stream.
  • Texto de actividad — derivado heurísticamente por dockActivityText(dock):
    • Offline → “Offline”.
    • Actualización de firmware en curso → “Upgrading”.
    • modeCode === 4 → “In Operation”.
    • modeCode === 3 → “Firmware”.
    • modeCode === 1 o 2 → “Debug”.
    • Aeronave volando / regresando / aterrizando → “Flying”.
    • activeStreams tiene entradas → “Streaming”.
    • Dock reporta idle → “Idle”.
    • Fallback → “Online”.
  • Chip de batería — porcentaje de batería de la aeronave (no el UPS interno del propio dock) vía dock.aircraft?.battery?.percent. Sólo se muestra si está disponible.

Listener diferido de Firestore

Cuando cambias a la pestaña DOCKS, el tile llama a dockService.startListening() para activar la suscripción a Firestore sobre dji_docks (limitado al ámbito de la misión). Esto evita pagar el coste del listener de Firestore mientras el operador está en TACLINK o VMS. Una vez que visitas DOCKS aunque sea una vez, la suscripción permanece activa durante la sesión.

Abrir un dock

Haz clic en cualquier tarjeta → el tile llama a openDock(dock) que emite streamSelected:

{
peerId: '', // vacío — no enlazamos por peer
trackId: VIDEO_DRONE_TRACK_ID,
isDrone: true,
dockSn: 'XXXX…',
mode: 'djiCloud' // crítico — enruta vía transporte DJI
}

El mode: 'djiCloud' es lo que distingue este flujo de la pestaña TACLINK. El tile de drone-stream escucha streamSelected, ve djiCloud, y configura su transport adapter para usar la interfaz DJI Cloud (MQTT para comandos, vídeo WHIP que el auto-stream ya ha provisionado).

Si el dock tiene múltiples cámaras de aeronave y quieres elegir una específica, el tile de drone-stream expone los selectores de lente + cámara una vez enlazado.

Para qué NO sirve DOCKS

  • No es una superficie de administración. Si quieres asignar/liberar docks, provisionar firmware o enviar licencias FlySafe, ve a Admin → Gestión DJI.
  • No para docks sin asignar. DOCKS muestra sólo docks con missionId == currentOperationId. Los docks en la misma org que están asignados a una misión diferente no aparecen aquí.
  • No sustituye a TACLINK en peers DJI. Una vez que un dock está en auto-stream, su peer de vídeo también se muestra en TACLINK. Ambas pestañas pueden abrir el mismo dock — DOCKS enruta vía modo djiCloud, TACLINK enruta vía la ruta de peer-identity. La experiencia de usuario final en el tile de drone-stream es casi idéntica; la flag de modo sólo selecciona qué transport adapter maneja comandos como cambio de lente y DRC.

Filtrado y ordenación

Sin UI explícita de filtros — cada dock asignado aparece. El orden es arbitrario (lo que devuelve Firestore). Si tienes muchos docks, usa Admin → Gestión DJI para la superficie completa de filtrado + ordenación.

Cambios de estado en tiempo real

La suscripción es reactiva — un dock que pasa a online, completa una actualización de firmware o despega actualiza en directo el texto de actividad de la tarjeta y el chip de batería sin necesidad de refrescar.

Limitaciones conocidas

  • Sin UI de filtros (búsqueda, equipo, modelo) en la build actual.
  • Sin drag-and-drop para reordenar tarjetas.
  • No se puede iniciar un stream desde la tarjeta directamente — abres el dock en el tile de drone-stream, y el auto-stream se encarga del provisionamiento del ingress de vídeo. Si el auto-stream no se disparó (precondiciones no cumplidas), el tile de drone-stream mostrará un error útil tras enlazarse.

Relacionado