Интеграция MQTT
Общее введение
Мост MQTT предоставляет функции мостового соединения и пересылки MQTT, поддерживая передачу данных MQTT док-станции в сторонние системы через локальную версию FlightHub 2 и обеспечивая совместное выполнение задач между сторонними системами и локальной версией FlightHub 2 в отраслевых сценариях.
Топология системы

Подготовка к началу работы
- Для развертывания FlightHub 2 (локальная версия) см. руководство по развертыванию DJI FlightHub 2 (локальная версия).
- Сеть, в которой размещен брокер MQTT сторонней системы, должна быть соединена с сетью, в которой размещена локальная версия FlightHub 2. Брокер MQTT поддерживает тип EMQX. При использовании брокера MQTT, отличного от EMQX, необходимо самостоятельно проверить совместимость и корректность работы.
- Сторонняя система должна обеспечить открытые порты как для сервера MQTT, так и для URL вебхука. Дополнительные сведения см. в разделе
Настройка моста.
Шаги настройки
Настройка моста
Введите команду curl в терминале, чтобы задать адрес моста 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": Необходимо заменить на адрес и порт, по которым запущена локальная версия FlightHub 2.
- id: Уникальный идентификатор моста. Можно задать произвольно, допускаются только буквы и цифры.
- username: Имя пользователя для подключения к стороннему MQTT.
- password: Пароль для подключения к стороннему MQTT. Не может быть пустым.
- proto_ver: Версия протокола MQTT. В настоящее время поддерживается только mqttv4. По умолчанию используется mqttv4.
- address: Адрес доступа к стороннему MQTT.
- clientid: Идентификатор клиента MQTT. Можно задать произвольно, допускаются только буквы и цифры.
webhook:
- url: URL интерфейса для отслеживания событий онлайн и оффлайн устройств сторонней системы.
- method: Метод интерфейса для отслеживания событий онлайн и оффлайн устройств.
- path: Путь интерфейса для отслеживания событий онлайн и оффлайн устройств.
- body_template: Строковый шаблон содержимого, отправляемого в интерфейс сторонней системы при событиях онлайн и оффлайн устройств. Можно изменить ключи в соответствии с требованиями интерфейса.
Проверка настройки: Следующая информация означает успешную настройку. Если возвращается ошибка, проверьте правильность адреса и порта, а также наличие сетевого соединения.
{"result":{"code":0,"message":"success"},"data":null}
Запрос состояния моста
Введите команду curl в терминале, чтобы проверить состояние моста MQTT.
Пример:
curl -X GET "http://10.94.98.15:38080/bridges/v1/resources"
Изменение моста
Введите команду curl в терминале, чтобы проверить состояние моста MQTT. При изменении убедитесь, что идентификаторы MQTT вебхука не изменяются. Для описания других параметров обратитесь к описанию параметров команды конфигурации моста.
Пример:
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 сторонней платформы.
Пример:
curl -X PUT "http://10.94.98.15:38080/bridges/v1/resources/switch" -H "Content-Type: application/json" -d '{
"enabled": true
}
'
Привязка док-станции к сторонней системе
Обратитесь к руководству Доступ к облачному серверу, чтобы привязать док-станцию к сторонней системе.
Привязка док-станции к FlightHub 2
См. руководство пользователя FlightHub 2 → Управление организацией → Управление устройствами → раздел Управление док-станцией, чтобы привязать док-станцию к организации в FlightHub.
Проверка моста
Проверка Mosquitto:
- Откройте два терминала и подпишитесь на 'thing/product/+/osd' в FlightHub 2 и брокера MQTT сторонней системы.
mosquitto_sub -h <FlightHub 2 Broker IP> -p <FlightHub 2 Broker Port> -t "thing/product/+/osd"
mosquitto_sub -h <Third-Party Broker IP> -p <Third-Party Broker Port> -t "thing/product/+/osd"
- В третьем терминале опубликуйте сообщение 'test' в данный топик. Если сообщение 'test' появляется в обоих терминалах подписки, настройка Bridge выполнена успешно.
mosquitto_pub -h <FlightHub 2 Broker IP> -p <FlightHub 2 Broker Port> -t "thing/product/sn1/osd" -m "test"
Проверка FlightHub 2: Если данные MQTT, полученные сторонним брокером, совпадают с данными интерфейса локальной версии FlightHub 2, мост настроен корректно.
Примечания
1. Стратегия использования функции видеотрансляции со сторонней системой и FlightHub 2
Сторонняя система имеет более высокий приоритет. Она может перехватить видеотрансляцию у FlightHub 2 после ее запуска. Когда сторонняя система начинает трансляцию, FlightHub 2 не может запустить видеотрансляцию. Чтобы включить видеотрансляцию в FlightHub 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 — серийный номер док-станции.
2. После включения функции моста MQTT док-станция будет автоматически пересылать медиафайлы с дрона напрямую в стороннюю систему.
См. руководство Управление медиафайлами, чтобы настроить адрес хранилища сторонней системы.