MQTT 集成
基础介绍
MQTT Bridge 为司空 2 私有版提供了 MQTT 桥接转发功能,支持将机场的 MQTT 信息通过司空 2 私有版转发到三方系统,为行业应用场景提供三方系统和司空 2 私有版协同作业的解决方案。
系统拓扑

开始前准备
- 请参考《大疆司空 2 私有版部署手册》部署司空 2 私有版。
- 三方系统的 MQTT Broker 所处的网络需要与司空 2 私有版所处的网络连通,MQTT Broker 支持 EMQX类型,其他 MQTT Broker 类型未做测试,请自行验证。
- 三方系统需要开放 MQTT 地址的端口和 webhook url 的端口,端口配置参考
配置桥接章节。
配置步骤
配置桥接
在命令行终端输入 curl 命令,配置 MQTT 的桥接地址和设备上下线的 Webhook 信息。配置成功后 MQTT 桥接功能默认开启。
接口示例:
curl -X POST "http://10.94.98.15:38080/bridges/v1/resources" -H "Content-Type: application/json" -d '{
"mqtt": {
"id": "mqttbridge2",
"config": {
"username": "admin",
"proto_ver": "mqttv4",
"password": "",
"address": "10.94.98.17:1883",
"clientid": "fh2-bridge2"
}
},
"webhook": {
"config": {
"url": "http://10.94.98.17:8080",
"method": "POST",
"path": "/",
"body_template": "{ \"username\": \"${username}\", \"timestamp\": ${timestamp}, \"reason\": \"${reason}\", \"action\": \"${event}\", \"clientid\": \"${clientid}\" }"
},
"id": "webhook1"
}
}'
接口参数描述:
mqtt:
- "http://10.94.98.15:38080“: 需要替换为部署的司空 2 私有版的地址和桥接端口。
- id: Bridge 唯一标识,必须是英文和数字,可自行定义
- username: 三方 MQTT 允许连接的用户名
- password: 三方 MQTT 允许连接的密码,密码允许为空
- proto_ver: MQTT 的协议版本号,当前仅支持 mqttv4,默认填 mqttv4
- address:三方 MQTT 的接入地址
- clientid:MQTT 的客户端标识,必须是英文和数字,可自行定义
webhook:
- url:三方设备上下线事件接口的 url
- method:三方设备上下线事件接口的 method
- path:三方设备上下线事件接口的路径
- body_template:三方设备上下线事件接口的 body 内容模版,字符串形式,示例中的 key 可根据实际接口进行修改
配置成功验证: 返回如下信息则表示配置成功,如果返回失败,请检查 IP 和端口是否配置正常,网络是否联通。
{"result":{"code":0,"message":"success"},"data":null}
查询桥接
在命令行终端输入 curl 命令,可查询 MQTT 桥接的状态。
接口示例:
curl -X GET "http://10.94.98.15:38080/bridges/v1/resources"
修改桥接
在命令行终端输入 curl 命令,可查询 MQTT 桥接的状态。修改时,请确保 MQTT 的 id,webhook 的 id不能修改,其他参数说明请参考配置桥接命令的参数说明。
接口示例:
curl -X PUT "http://10.94.98.15:38080/bridges/v1/resources" -H "Content-Type: application/json" -d '
{
"mqtt": {
"id": "mqttbridge2",
"config": {
"username": "admin",
"proto_ver": "mqttv4",
"password": "",
"address": "10.94.98.17:1883",
"clientid": "fh2-bridge2"
}
},
"webhook": {
"config": {
"url": "http://10.94.98.17:8080",
"method": "POST",
"path": "/",
"body_template": "{ \"username\": \"${username}\", \"timestamp\": ${timestamp}, \"reason\": \"${reason}\", \"event\": \"${event}\", \"clientid\": \"${clientid}\" }"
},
"id": "webhook1"
}
}
'
关闭和开启桥接
在命令行终端输入 curl 命令,可关闭和开启桥接功能,关闭后 MQTT 消息将无法转发到三方平台的 MQTT Broker。
接口示例:
curl -X PUT "http://10.94.98.15:38080/bridges/v1/resources/switch" -H "Content-Type: application/json" -d '{
"enabled": true
}
'
绑定机场设备至三方系统
参考机场上云配置教程,将需要上云的机场绑定到三方系统。
绑定机场设备至司空
参考司空 2 使用说明->组织管理->设备管理->机场管理章节,将机场绑定到司空中的某个组织。
桥接功能验证
mosquitto 验证:
- 在两个终端中输入如下命令在司空 2 和 三方 MQTT Broker订阅 "thing/product/+/osd"。
mosquitto_sub -h <司空 2 Broker IP> -p <司空 2 Broker 端口> -t "thing/product/+/osd"
mosquitto_sub -h <三方 Broker IP> -p <三方 Broker 端口> -t "thing/product/+/osd"
- 在第三个终端输入如下命令发布消息 "test",如果在上述两个终端中都可以接收到 "test",则表示桥接成功。
mosquitto_pub -h <司空 2 Broker IP> -p <司空 2 Broker 端口> -t "thing/product/sn1/osd" -m "test"
司空 2 验证: 三方系统中 MQTT Broker 中接收的 MQTT 信息跟司空 2 私有版的界面信息一致,则表示桥接成功。
注意事项
1. 三方系统和司空 2 同时使用直播功能的策略。
三方系统优先级更高,司空 2 开启直播后,三方系统可以抢占司空 2 的链路开启直播。但是三方系统开启直播后,司空 2 无法开启直播功能。如果需要在司空 2 上开启直播功能,需要调用如下接口命令将三方系统直播功能关闭。
curl -X POST http://10.94.98.15:38081/thing-access-service/inner/tas/bridges/live/release -H 'Content-Type: application/json' -d '{
"sn": "6QCDL870020196"
}'
注:sn为机场的SN。
2. MQTT 桥接功能开启后,机场会将飞行器产生的媒体文件直接转发到三方系统。
请参考媒体管理教程配置三方系统的存储桶地址。