Skip to content

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 osd frame.
  • 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.status is set (pending, downloading, upgrading, done).
  • Check for updates button — triggers the MQTT firmware_upgrade request. 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 emits admin.dji.dock.unpaired to 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.