DJI management
Admin → DJI (/admin/dji) is the org-level control surface for
every DJI dock (Dock 1, Dock 2, Dock 3) paired to the org. It is
intentionally narrow — pairing, status, debug, firmware, HMS, flight
areas, and licences only. All command-and-control (flight tasks, live
streams, DRC piloting, AI recognition) happens at the mission level; a
paired aircraft shows up inside a mission as a dji-dock-{sn} TACLINK
peer and behaves like any other drone.
Requires admin or superadmin.
Layout
Two panes — dock list on the left, selected dock’s detail tabs on the
right. The header shows {onlineDockCount}/{totalDocks} online, a Pair
new dock button, and a Demo dock toggle that adds a fake
DEMO-DOCK-001 entry so you can click around without hardware.
Each row: status dot, name + model, battery %, wind (m/s), temperature
(°C), aircraft badge (model + flight mode) if paired, and an In Operation badge when assigned to a mission.
Tabs on the dock detail
Six tabs, left to right.
Overview
- Dock card — SN, model, status, mode code, firmware version, lat/lng,
and the assigned-operation link (through to
/operations/:id). Unpair from org sits here behind a confirm step. - Environment telemetry grid — temperature, humidity, wind, rainfall,
cover state, drone-in-dock, battery %, charging, network quality (0–5),
storage used/total. Firestore projections of the latest MQTT
osdframe. - Aircraft summary — flight mode, heading, speed, altitude, distance home, wind, battery %, flight time left, RTH power, GPS sats, RTK sats and fix state. Read-only; to fly, open the assigned operation.
Firmware
- Dock firmware version and — if paired — Aircraft firmware version.
- Live progress bar while
dock.firmwareUpgrade.statusis set (pending, downloading, upgrading, done). - Check for updates button — triggers the MQTT
firmware_upgraderequest. The dock responds with an offered version and the user confirms.
Debug
A wall of buttons that send MQTT debug commands to the dock’s services
topic — cover_open/close/force_close, drone_open/close,
device_reboot, supplement_light_*, charge_*, debug_mode_*,
alarm_state_switch, air_conditioner_mode_switch,
battery_maintenance_switch, battery_store_mode_switch, putter_*,
drone_format, device_format, sdr_workmode_switch, sim_slot_switch,
esim_activate, esim_operator_switch, rtk_calibration.
Below the grid sits the Remote log section — tick one or more modules (dock, aircraft, RC, gimbal, flight-control), Request log files, tick what you want, then Upload selected logs. Progress is streamed live; a Cancel button aborts an in-flight upload.
HMS
Read-only list of active Health Monitoring System alerts for the selected
dock + aircraft. Each row shows level (INFO / WARNING / CRITICAL / FATAL),
title (localised HMS code lookup), and timestamp. alert.hms workflows and
webhooks consume the same underlying stream.
Flight Areas (coming soon)
Placeholder tab for defining per-dock approved flight areas. Shipping with the next DJI SDK integration release.
Licences (FlySafe)
Lists the DJI unlock licences installed on the dock or aircraft. Domain
radio picks Aircraft (0) or Dock (3). Columns: licence ID, name,
expires. Tick-box controls enable per licence.
Push new licence opens a small form — licence file URL plus MD5
fingerprint — and sends an MQTT fly_zone_license_update request. The
dock downloads, verifies the fingerprint, and installs.
Pairing a new dock
Pair new dock opens a modal with three tabs.
- Pairing code (recommended) — set an optional label, validity window
(1–168 h, default 24), and max uses (1–50, default 1). Click Generate
code — ARGUS writes
/organizations/{orgId}/pairingCodes/{code}and renders code + QR. On the dock, ARGUS Dock App → Pair with code. The Active codes table lists live codes with redemption history and a Revoke button. - Manual — paste a dock SN and aircraft SN. Writes the pairing
directly under
/organizations/{orgId}/docks/{sn}without a handshake. Use only when you control the MQTT certs out of band. - Claim — enter the factory claim token shipped with a pre-provisioned dock. Equivalent to pairing-code redemption but initiated from the web.
Dock state doc
Source of truth for each row is
/organizations/{orgId}/docks/{sn}. Subcollections:
telemetry/latest (Environment tab), aircraft/latest,
hmsAlerts/{id}, commands/{id} (command history with issuedBy,
status, response), logs/{requestId} (remote-log requests and
uploads). Pairing codes live at the org level.
The MQTT traffic inspector (aspirational) is a raw topic sniffer on
the debug tab printing the last N services / osd / events payloads.
Shipping 2026-Q3.
Unpair vs. rebind
- Unpair from org — popover-confirmed, deletes the
docks/{sn}document, revokes MQTT certificates, and emitsadmin.dji.dock.unpairedto the audit log. The dock goes back to factory pairing state and can be paired to any org again. - Rebind (aspirational) — keeps the dock’s MQTT certs but moves the org reference. Useful for service swaps without a field visit.