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
Name | Default | Description |
---|---|---|
ntp | "ntp.ubuntu.com" | NTP server used by the dock. Wayline task will fail if the dock cannot reach the NTP server. |
MQTT Comms
Name | Default | Description |
---|---|---|
mqtt.runAsServer | false | Run 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
Name | Default | Description |
---|---|---|
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.secure | true | Use 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
Name | Default | Description |
---|---|---|
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.dock | true | If true, start the dock camera stream when the camera is detected. |
cameras.streamAutostart.payload | true | If true, start the Payload camera stream when the camera is detected. |
cameras.streamAutostart.fpv | true | If 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:
|
cameras.payloadVideoLenses | [2] | Camera lenses to use when storing video to disk. The possible lenses values are the same as for photos. |
Media
Name | Default | Description |
---|---|---|
media.uploadMode | "filesync" | Method used to upload media from dock. The possible values are:
|
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.endpoint | required | Address 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
Name | Default | Description |
---|---|---|
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.urlExpirySeconds | 3600 | Time during which the dock can download the wayline file when starting the wayline task. |
System
Name | Default | Description |
---|---|---|
system.chargerMode | 2 | Charging strategy for the aircraft batteries. The possible values are :
|
Simulation
Name | Default | Description |
---|---|---|
simulation.autostartEnabled | false | Enter simulation mode on agent start if true. Simulation mode can then be exited/entered using services. |
simulation.autostartLatitude | 0 | Latitude 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.autostartLatitude | 0 | Longitude 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
Name | Default | Description |
---|---|---|
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
Name | Default | Description |
---|---|---|
areas.enable | false | Enable 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.urlExpirySeconds | 3600 | Time during which the dock can download the custom flight areas file after requesting it (i.e. before any flight and when manually triggered). |