Skip to main content

Configuration

The easiest way to get your DJI Dock configured in DroneDeploy is to use the provisioning wizard. The wizard will start from the default DJI Dock robot profile and edit project-specific parameters. But if you need more advanced control, you can configure the DJI plugin from the Agent Settings page.

Below are some samples of dji settings as found in the Agent Settings and the detailed list of the available parameters.

Samples

Common Configuration

{
"enabled": true,
"id": "dji",
"settings": {
"logLevel": 5,
"mqtt": {
"endpoint": "mqtts://dji-dock-us.dronedeploy.com:8883",
"user": "mousy-jericho-mesdames-vintner",
"pass": "speed-rani-abstain-volubly",
"dockSn": "7CTDLCE00AXXXX",
"aircraftSn": "1581F6QAD2XXXXXXXXXX"
},
"objectstorage": {
"endpoint": "https://s3-us.dronedeploy.com",
"sharedCreds": {
"keyId": "ddmediaupload",
"keySecret": "rKD4kLqQK3N3WbzMhiNhcgZbUuc2aDbEX3CqHUhAhnpRXpNKkvhYEg4aeYxmq7Lf"
},
"privateCreds": {
"keyId": "ddminioagent",
"keySecret": "TDsMUNLC2RarqNgpChViznrZLsN8THxLuoZWqjM8M7K3JquJj4DyzBenCgV7iEFm"
}
},
"cameras": {
"streamEndpoint": "rtmps://rtmp-us.dronedeploy.com:1937/cloudmedia",
"streamUser": "zgfnong3uknmqqlw",
"streamPass": "bq7vnt2ojp4fnnhjynvzntadihmmcuoq"
}
}
}

Extended Configuration

{
"enabled": true,
"id": "dji",
"settings": {
"logLevel": 5,
"ntp": "ntp.ubuntu.com",
"mqtt": {
"runAsServer": false,
"endpoint": "mqtts://dji-dock-us.dronedeploy.com:8883",
"user": "mousy-jericho-mesdames-vintner",
"pass": "speed-rani-abstain-volubly",
"dockSn": "7CTDLCE00AXXXX",
"aircraftSn": "1581F6QAD2XXXXXXXXXX"
},
"objectstorage": {
"endpoint": "https://s3-us.dronedeploy.com",
"secure": true,
"provider": "minio",
"region": "us-east-1",
"sharedCreds": {
"keyId": "ddmediaupload",
"keySecret": "rKD4kLqQK3N3WbzMhiNhcgZbUuc2aDbEX3CqHUhAhnpRXpNKkvhYEg4aeYxmq7Lf"
},
"privateCreds": {
"keyId": "ddminioagent",
"keySecret": "TDsMUNLC2RarqNgpChViznrZLsN8THxLuoZWqjM8M7K3JquJj4DyzBenCgV7iEFm"
}
},
"cameras": {
"streamEndpoint": "rtmps://rtmp-us.dronedeploy.com:1937/cloudmedia",
"streamProtocol": "rtmp",
"streamUser": "zgfnong3uknmqqlw",
"streamPass": "bq7vnt2ojp4fnnhjynvzntadihmmcuoq",
"streamNamespace": "projectId/robotCallsign",
"streamNames": {
"dock": "dock",
"payload": "payload",
"fpv": "fpv"
},
"streamAutostart": {
"dock": true,
"payload": true,
"fpv": true
},
"payloadPhotoLenses": [2],
"payloadVideoLenses": [2]
},
"media": {
"uploadMode": "filesync",
"bucketName": "dock-media",
"objectPrefix": "projectId/robotCallsign",
"dataDirectory": "/var/opt/rocos-agent/data",
"photoTypeFallback": "photoReport",
"videoTypeFallback": "video"
},
"wayline": {
"bucketName": "dock-waylines",
"objectPrefix": "projectId/robotCallsign",
"urlExpirySeconds": 3600
},
"system": {
"chargerMode": 2
},
"simulation": {
"autoStartEnabled": false,
"autoStartLatitude": 0,
"autoStartLongitude": 0
},
"org": {
"organizationID": "dronedeploy",
"organizationName": "DroneDeploy",
"dockName": "robotCallsign",
"aircraftName": "robotCallsign aircraft"
},
"areas": {
"enable": false
}
}
}

Parameters

Time Sync

NameDefaultDescription
ntp"ntp.ubuntu.com"NTP server used by the dock. Wayline task will fail if the dock cannot reach the NTP server.

MQTT Comms

NameDefaultDescription
mqtt.runAsServerfalseRun an embedded MQTT server if true. Connect a third-party MQTT server if false.
mqtt.endpoint"mqtts://dji-dock-us.dronedeploy.com:8883"Address of the MQTT server. If running as server, this need to match "tcp://<agent-host-IP-address>:1883", where <agent-host-IP-address> is the address of the agent host accessible by the dock.
mqtt.user"mqttadmin"MQTT user. If running as a server, this will create a new user for the dock to connect the embedded MQTT server. If running as a client, this will be used by the agent to connect the third-party MQTT server.
mqtt.pass"mqttpassword"MQTT password. If running as a server, this will create a new user for the dock to connect the embedded MQTT server. If running as a client, this will be used by the agent to connect the third-party MQTT server.
mqtt.dockSn""Serial number of the dock’s Control Module. When running as a server, this is not required and can be left empty.
mqtt.aircraftSn""Serial number of the Aircraft’s Flight Controller. When running as a server, this is not required and can be left empty.

Cloud Storage

NameDefaultDescription
objectstorage.endpoint"https://s3-us.dronedeploy.com"Address of the cloud storage server. The agent serves wayline file to the dock using this storage server. Unless overridden by other settings, the dock pushes the captured media to this storage server.
objectstorage.securetrueUse TLS encryption on connections to cloud storage if true. This can be disabled to support local object storage without certificate.
objectstorage.provider"minio"Cloud storage provider. This is only relevant if trying to connect Alibaba ("ali") or Amazon ("aws"). For any other S3-compatible storage, we can choose MinIO ("minio").
objectstorage.region"us-east-1"Cloud storage region. This is only relevant if trying to connect Amazon.
objectstorage.sharedCreds.keyId"minioadmin"Access key shared with the dock. This will be used by the dock to upload media (unless overridden by other settings).
objectstorage.sharedCreds.keySecret"minioadmin"Secret key shared with the dock. This will be used by the dock to upload media (unless overridden by other settings).
objectstorage.privateCreds.keyId"minioadmin"Access key used by agent only. This will be used by the agent to serve wayline file to the dock and download media for file sync (unless overridden by other settings).
objectstorage.privateCreds.keySecret"minioadmin"Secret key used by agent only. This will be used by the agent to serve wayline file to the dock and download media for file sync (unless overridden by other settings).

Cameras

NameDefaultDescription
cameras.streamEndpoint"rtmps://rtmp-us.dronedeploy.com:1937/cloudmedia"Address of the RTMP server. This will be used by the agent to construct the URL of the different camera streams that can be started on the dock (Dock, Payload and FPV cameras).
cameras.streamProtocol"rtmp"Streaming protocol override. Streaming protocol is automatically detected from the endpoint. This provides a mechanism to override the protocol to be used by the dock if needed. This support RTMP ("rtmp") and WebRTC ("webrtc"). WebRTC has not been tested at the time of writing.
cameras.streamUser""Streaming user. This will be used to authenticate the dock with the RTMP server. Leave empty if the RTMP server does not implement password based authentication. Not relevant for WebRTC.
cameras.streamPass""Streaming password. This will be used to authenticate the dock with the RTMP server. Leave empty if the RTMP server does not implement password based authentication. Not relevant for WebRTC.
cameras.streamNamespace"<projectId>/<robotId>"Namespace for this dock streams. This will be appended after the endpoint when constructing the URL of the different camera streams. To disable namespace, this can be set to the empty string.
cameras.streamName.dock"dock"Name for the dock camera stream. This will be appended at the end of the URL for the dock camera stream (e.g. "rtmps://rtmp-us.dronedeploy.com:1937/cloudmedia/my-project/my-robot/dock").
cameras.streamName.payload"payload"Name for the Payload camera stream. This will be appended at the end of the URL for the Payload camera stream (e.g. "rtmps://rtmp-us.dronedeploy.com:1937/cloudmedia/my-project/my-robot/payload").
cameras.streamName.payload"fpv"Name for the FPV camera stream. This will be appended at the end of the URL for the FPV camera stream (e.g. "rtmps://rtmp-us.dronedeploy.com:1937/cloudmedia/my-project/my-robot/fpv"). This is only relevant for M30/M30T aircraft (i.e. Dock 1).
cameras.streamAutostart.docktrueIf true, start the dock camera stream when the camera is detected.
cameras.streamAutostart.payloadtrueIf true, start the Payload camera stream when the camera is detected.
cameras.streamAutostart.fpvtrueIf true, start the FPV camera stream when the camera is detected.
cameras.payloadPhotoLenses[2]Camera lenses to use when storing photo to disk. The possible lenses values are:
  • 2 : Wide
  • 3 : Zoom (only M30 & M30T)
  • 4 : Thermal (only M30T & M3DT)
cameras.payloadVideoLenses[2]Camera lenses to use when storing video to disk. The possible lenses values are the same as for photos.

Media

NameDefaultDescription
media.uploadMode"filesync"Method used to upload media from dock. The possible values are:
  • "filesync" : the dock pushes media to cloud storage defined in objectstorage. The agent downloads the file to a local file synced directory. This is used to upload captured media to DroneDeploy.
  • "thirdparty" : the dock pushes media to a special cloud storage, defined below. The agent does nothing. This is used to upload media to a third-party storage. This does not need to be accessible by the agent (e.g. VR agent and private MinIO server on the edge).
media.bucketName"dock-media"Bucket to upload media. This bucket needs to already exist.
media.objectPrefix"<projectId>/<robotCallsign>"Directory inside the bucket to upload media. In filesync mode, the sharedCreds needs to have Write access and the privateCreds needs to have Read access. In thirdparty mode, the creds configured below needs to have Write access.
media.dataDirectory"/var/opt/rocos-agent/data"Local directory for temporary files. Only in filesync mode. After a file is pushed to the cloud storage by the dock, the agent will download the file in <dataDirectory>/raw, set the file attributes and move to <dataDirectory>/upload. For the upload to go through, the agent needs to have RW access to the dataDirectory and <dataDirectory>/upload needs to be file synced (i.e. Cloud Storage is enabled, and Delete file from robot once uploaded is checked).
media.photoTypeFallback"photoReport"Plan type for photo when starting wayline from the Robotics Platform. Only in filesync mode. When starting a wayline flight directly from the Robotics Platform, we need to set the plan type before uploading the media to DroneDeploy. All photos captured during a given wayline task will be uploaded as part of a single plan with the type photoTypeFallback.
media.videoTypeFallback"video"Plan type for video when starting wayline from the Robotics Platform. Only in filesync mode. When starting a wayline flight directly from the Robotics Platform, we need to set the plan type before uploading the media to DroneDeploy. All videos captured during a given wayline task will be uploaded as part of a single plan with the type videoTypeFallback.
media.endpointrequiredAddress of the third-party cloud storage server. Only in thirdparty mode. The dock will push the captured media to this storage server.
media.provider"minio"Cloud storage provider. Only in thirdparty mode. This is only relevant if trying to connect Alibaba ("ali") or Amazon ("aws"). For any other S3-compatible storage, we can choose MinIO ("minio").
media.region"us-east-1"Cloud storage region. Only in thirdparty mode. This is only relevant if trying to connect Amazon.
media.keyId"minioadmin"Access key to upload media. Only in thirdparty mode. This will be used by the dock to upload media.
media.keySecret"minioadmin"Secret key to upload media. Only in thirdparty mode. This will be used by the dock to upload media.

Wayline

NameDefaultDescription
wayline.bucketName"dock-waylines"Bucket in objectstorage to store wayline files. This bucket needs to already exist. Make sure to set up an object lifecycle policy to get rid of old wayline files.
wayline.objectPrefix"<projectId>/<robotId>"Directory inside the bucket store wayline files. The privateCreds needs to have RW access.
wayline.urlExpirySeconds3600Time during which the dock can download the wayline file when starting the wayline task.

System

NameDefaultDescription
system.chargerMode2Charging strategy for the aircraft batteries. The possible values are :
  • 1 : Scheduled mode (charge aircraft to ~50%)
  • 2 : Standby mode (charge aircraft to ~90%)

Simulation

NameDefaultDescription
simulation.autostartEnabledfalseEnter simulation mode on agent start if true. Simulation mode can then be exited/entered using services.
simulation.autostartLatitude0Latitude of the aircraft when spawned in the simulated world. If latitude and longitude are both set to 0, the aircraft will be spawned at the dock location.
simulation.autostartLatitude0Longitude of the aircraft when spawned in the simulated world. If latitude and longitude are both set to 0, the aircraft will be spawned at the dock location.

Org Binding

NameDefaultDescription
org.organizationID"drondeploy"Organization ID to bind the dock. This needs to be entered on the RC when connecting the dock to DroneDeploy.
org.organizationName"DroneDeploy"Organization name to bind the dock with. This will appears on the confirmation screen when connecting the dock to DroneDeploy.
org.dockName"<robotCallsign>"Name of the dock. This will appears on the confirmation screen when connecting the dock to DroneDeploy.
org.organizationName"<robotCallsign> aircraft"Name of the aircraft. This will appears on the confirmation screen when connecting the dock to DroneDeploy.

Custom Flight Areas

NameDefaultDescription
areas.enablefalseEnable support for geo-fences and no-fly zone configurations from DroneDeploy. This will effectively erase areas configured on the aircraft by third-party and could disturb customer's operation.
areas.bucketName"dji-dock-areas"Bucket in objectstorage to store the custom flight areas description file. This bucket needs to already exist. Make sure there is no object lifecycle policy that would delete the objects in this storage.
areas.objectPrefix"<projectId>/<robotId>"Directory inside the bucket store the custom flight areas description file. The privateCreds needs to have RW access.
areas.urlExpirySeconds3600Time during which the dock can download the custom flight areas file after requesting it (i.e. before any flight and when manually triggered).