大疆上云API的MQTT指令集
大疆上云API的MQTT指令集并非一个固定的列表,而是遵循一套基于主题(Topic)和方法(Method)的物模型规范。不同产品(如机场、遥控器)和固件版本支持的指令会有差异。
以下为您梳理的核心指令分类、Topic结构及典型指令示例,助您快速上手。
📡 一、MQTT 主题 (Topic) 结构
所有指令都围绕以下核心Topic进行收发。
1. 系统/拓扑 Topic
用于设备上线、下线及拓扑关系管理。
-
设备上线/拓扑更新
-
Topic:
sys/product/{gateway_sn}/status -
说明: 网关(遥控器/机场)上线时上报,包含子设备(无人机)列表。设备离线时
sub_devices数组为空。 -
Method:
update_topo
-
-
设备状态响应
-
Topic:
sys/product/{gateway_sn}/status_reply -
说明: 云平台对
status消息的响应。
-
2. 物模型 Topic (核心)
用于设备属性、服务调用和事件上报,是业务数据交互的主要通道。
-
属性 (Property)
-
状态 (State):
thing/product/{gateway_sn}/state -
设置 (Set):
thing/product/{gateway_sn}/property/set -
设置响应 (Set Reply):
thing/product/{gateway_sn}/property/set_reply
-
-
服务 (Service)
-
请求 (Requests):
thing/product/{gateway_sn}/services -
响应 (Reply):
thing/product/{gateway_sn}/services_reply
-
-
事件 (Events)
-
事件上报:
thing/product/{gateway_sn}/events
-
-
OSD (实时遥测)
-
OSD 数据:
thing/product/{gateway_sn}/osd
-
3. DLC/DRC 实时控制 Topic
专用于低延迟的远程飞行控制,需开启“指令飞行”模式。云端会获得一个独立的MQTT连接。
-
上行 (云端 → 设备):
thing/product/{gateway_sn}/drc/up -
下行 (设备 → 云端):
thing/product/{gateway_sn}/drc/down
📋 二、核心指令分类与示例
1. 系统/拓扑指令
主要用于设备管理和状态同步。
-
设备上线/拓扑更新 (
update_topo)-
方向: 设备 → 云平台
-
Topic:
sys/product/{gateway_sn}/status -
说明: 设备上线或子设备(无人机)变更时上报。
-
Payload 示例:
json
{
"tid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"bid": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"method": "update_topo",
"timestamp": 1712345678901,
"data": {
"domain": 2,
"type": 119,
"sub_type": 0,
"device_secret": "xxxxxx",
"nonce": "yyyyyy",
"version": "1.0",
"sub_devices": [
{
"sn": "drone001",
"domain": 0,
"type": 60,
"sub_type": 0,
"index": "A",
"device_secret": "xxxxxx",
"nonce": "yyyyyy",
"version": "1.0"
}
]
}
}
-
-
设备状态响应
-
方向: 云平台 → 设备
-
Topic:
sys/product/{gateway_sn}/status_reply -
说明: 云平台对
status消息的响应,通常包含操作结果码。
-
2. 物模型指令
这是实现设备控制和状态查询的主要方式。
-
属性设置 (
property/set)-
方向: 云平台 → 设备
-
Topic:
thing/product/{gateway_sn}/property/set -
说明: 用于修改设备参数,如夜航灯开关、直播参数等。
-
Payload 示例:
json
{
"tid": "tid-123456",
"bid": "bid-123456",
"method": "property_set",
"timestamp": 1712345678901,
"data": {
"night_lights": 1
}
}
-
-
服务调用 (
services)-
方向: 云平台 → 设备
-
Topic:
thing/product/{gateway_sn}/services -
说明: 用于执行特定任务,如获取飞行任务资源、查询离线地图等。
-
Method 示例:
flighttask_resource_get,offline_map_get,config。
-
-
事件上报 (
events)-
方向: 设备 → 云平台
-
Topic:
thing/product/{gateway_sn}/events -
说明: 设备主动上报状态变化和告警信息。
-
Method 示例:
-
flighttask_progress: 飞行任务进度 -
hms: 健康管理系统告警 -
file_upload_progress: 文件上传进度 -
drc_status_notify: DLC/DRC链路状态 -
airsense_warning: 空域告警
-
-
-
OSD 数据 (
osd)-
方向: 设备 → 云平台
-
Topic:
thing/product/{gateway_sn}/osd -
说明: 实时遥测数据,如经纬度、高度、姿态、电量等。
-
3. DLC/DRC 实时控制指令
这是实现低延迟远程操控的关键。
-
飞行控制 (
drone_control)-
方向: 云平台 → 设备
-
Topic:
thing/product/{gateway_sn}/drc/up -
说明: 用于指点飞行、云台控制等。执行此指令通常需要先获取飞行控制权。
-
Method:
drone_control
-
-
负载控制
-
方向: 云平台 → 设备
-
Topic:
thing/product/{gateway_sn}/drc/up -
说明: 控制相机、云台、探照灯、喊话器等。执行此指令通常需要先获取负载控制权。
-
Method 示例: 相机拍照/录像、云台角度设置、探照灯开关等。
-
-
一键起飞 / FlyTo
-
方向: 云平台 → 设备
-
Topic:
thing/product/{gateway_sn}/drc/up -
说明: 控制飞行器飞往指定点并悬停。一键起飞用于从机场起飞,FlyTo用于空中飞行。
-
Method 示例:
takeoff_to_point,fly_to_point
-
-
AI 相关指令 (机场3)
-
方向: 云平台 ↔ 设备
-
Topic:
thing/product/{gateway_sn}/drc/up(上行),thing/product/{gateway_sn}/drc/down(下行) -
说明: 用于AI目标识别与跟随功能。
-
Method 示例:
drc_ai_model_select(选择AI模型),drc_ai_info_push(AI状态推送)
-
💡 三、如何获取完整指令集
-
查阅官方文档
访问大疆开发者平台,在“上云API”文档中找到“MQTT Topic 定义”和“物模型”章节,这是最权威的来源。
-
分析官方示例
部署官方提供的
cloud_api_sample示例,通过打印的MQTT日志,可以直观地看到所有Topic和Method的实际报文。 -
参考开源项目
在GitHub等平台搜索
dji cloud api mqtt,参考社区的开源实现,有助于理解指令的实际应用。
更多推荐
所有评论(0)