DJI Cloud API — overview
ARGUS integrates with DJI Dock 1 / 2 / 3 via the official DJI Cloud API. After pairing, a dock’s aircraft behaves like any other drone in the operation: appears in the fleet tile, shows up in TACLINK + DOCKS streams, can be flown manually via DRC, carries geofence enforcement, uploads media, and receives firmware pushes.
Architecture
Four services cooperate:
- argus-dji — our Node.js MQTT bridge. Connects to an EMQX MQTT broker,
handles every DJI MQTT topic (
thing/product/{sn}/osd,/state,/events,/requests,/services,/services_reply), translates between DJI’s Thing-Model messages and ARGUS’s internal representations, writes state to Firestore, and publishes telemetry + video as TACLINK participants. - argus-api — our Node.js REST surface. The webapp calls argus-api; argus-api writes command docs to Firestore; argus-dji listens for commands and publishes MQTT.
- Firestore — authoritative state store for
dji_docks/{sn},dji_aircraft/{sn},dji_flight_tasks/{id},dji_media/{id}, anddji_commands/{id}. - EMQX — the MQTT broker docks connect to. Hosted by ARGUS.
Feature pages
| Feature | Page |
|---|---|
| Pair a dock to your org | Pairing |
| Dock status + controls in-console | Dock tile |
| Auto-provisioned video ingress | Auto-stream |
| WPML-KMZ mission dispatch | Flight tasks |
| Manual real-time control | DRC |
| Long-range multi-dock chain | Multi-dock relay |
| Polygon sync → aircraft-level enforcement | Geofence / no-fly |
| DJI FlySafe unlock licences | FlySafe |
| Firmware binary upload + push | Firmware |
| Pull diagnostic logs | Remote logs |
| Photos / videos / PPK-RTK | Media |
| On-aircraft AI detections | AI detections |
Required org config
Before you can pair your first dock, an org admin needs:
- DJI App ID / App Key / App License — obtained from DJI Developer Center after your org registers a Cloud-API app.
- EMQX endpoint + credentials — by default ARGUS provisions a shared EMQX. Orgs with compliance requirements can provision a dedicated broker.
- Spare licence seat in your org’s DJI-dock quota.
All three live under Admin → Organisation → Integrations → DJI.
Supported dock models
- Dock 1 — tested end-to-end. Limited by the DJI Cloud API’s Dock-1 surface (no DRC, fewer telemetry fields).
- Dock 2 — full support including DRC + auto-stream.
- Dock 3 — full support + Dock-3-specific features (night vision, spotlight, speaker, on-aircraft AI detection).
End-to-end lifecycle
- Admin pairs a dock (QR-code flow).
- Dock connects to EMQX, sends topology via
update_topo. - argus-dji receives, writes
dji_docks/{sn}+dji_aircraft/{sn}. - Operator assigns dock to mission →
dji_docks/{sn}.missionIdset. - Auto-stream autopilot provisions WHIP ingress, publishes
live_start_pushto the dock. - Dock pushes H.264 into the TACLINK room.
- Operator flies via DRC or dispatches a WPML mission.
- Dock uploads media during / after flight.
- Mission ends → auto-stream tears down, ingress deleted.
Related
- Admin → DJI management — the admin hub for every dock in the org.