MQTT 集成

2026-10-16

基础介绍

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

系统拓扑

开始前准备

  1. 请参考《大疆司空 2 私有版部署手册》部署司空 2 私有版。
  2. 三方系统的 MQTT Broker 所处的网络需要与司空 2 私有版所处的网络连通,MQTT Broker 支持 EMQX类型,其他 MQTT Broker 类型未做测试,请自行验证。
  3. 三方系统需要开放 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
}
'

绑定机场设备至三方系统

参考机场上云配置open in new window教程,将需要上云的机场绑定到三方系统。

绑定机场设备至司空

参考司空 2 使用说明->组织管理->设备管理->机场管理章节,将机场绑定到司空中的某个组织。

桥接功能验证

mosquitto 验证:

  1. 在两个终端中输入如下命令在司空 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"
  1. 在第三个终端输入如下命令发布消息 "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 桥接功能开启后,机场会将飞行器产生的媒体文件直接转发到三方系统。

请参考媒体管理open in new window教程配置三方系统的存储桶地址。

Last Updated: