Skip to main content

Дрон → Сервер

Топики для передачи данных и статусов от дрона к серверу.

1. data​

Телеметрия
  • MQTT Topic: {DRONE_ID}_data
  • QoS: 1

Периодическая публикация телеметрии дрона: координаты, высота, скорость, заряд и напряжение батареи, оценка остатка полётного времени, курс, статус миссии, режим полётного контроллера и флаги режимов управления. Публикуется по таймеру (~0.7 с).

positionPositionrequired
Позиция дрона
pointPointrequired
Координаты
latfloatrequired
Широта
longfloatrequired
Долгота
heightfloat
Высота (м)
directionintrequired
Направление движения (0–360°)
speedfloat
Скорость (м/с)
battery_levelfloatrequired
Заряд батареи (0–100%), рассчитан по напряжению на борту (null если недоступен)
battery_voltagefloat
Напряжение батареи (В), null если недоступно
time_remaining_sint
Оценка оставшегося полётного времени (с). null, если ток мал (дрон на земле) или оценка недоступна
headingfloatrequired
Курс/направление камеры (0–360°)
statusstrrequired
Текущий статус дрона
online— В сети, готов к работе
offline— Не в сети
on mission— Выполняет миссию
taking off— Взлетает
landing— Совершает посадку
returning— Возвращается на точку старта
paused— Миссия на паузе
emergency landing— Аварийная посадка
calibration— Идёт калибровка
flight_modestr
Фактический режим полётного контроллера ArduPilot: STABILIZE, GUIDED, AUTO, RTL, LAND, BRAKE и др. Отражает реальный режим независимо от status. null до связи с полётным контроллером
armedboolean
Моторы взведены. false на земле после посадки
mission_iduuidrequired
ID текущей миссии
command_iduuidrequired
ID выполняемой команды
trackerbooleanrequired
AI-детекция активна
tracker_camerastr
Идентификатор активной камеры трекинга (null если не выбрана)
use_hand_modebooleanrequired
Ручной режим управления активен
obstacle_avoidancebooleanrequired
Обход препятствий активен
aimobject
Цель во время тарана (null если нет цели)
carint
ID целевого объекта
{
"topic": "10001_data",
"message": {
"position": {
"point": {
"lat": 55.751244,
"long": 37.618423,
"height": 50.0
},
"direction": 180.0,
"speed": 5.2
},
"battery_level": 85.0,
"battery_voltage": 15.62,
"time_remaining_s": 1450,
"heading": 180.0,
"status": "on mission",
"flight_mode": "AUTO",
"armed": true,
"mission_id": "01939ba1-fd8a-7ed4-acb1-35791c03c70d",
"command_id": "0193909e-e71c-7b38-8ed7-ab4d7aed7e1c",
"tracker": true,
"aim": null,
"use_hand_mode": false,
"obstacle_avoidance": true,
"tracker_camera": null
}
}

Автономные переходы статусов​

Набор значений status не менялся, но часть значений борт выставляет сам, без команды с платформы — по уровню заряда или по реакции полётного контроллера на аварию.

statusПо команде с платформыАвтономно, решением борта
returningКонец маршрута, cancel_mission с BACK_TO_STARTЗаряд опустился ниже порога низкого заряда (по умолчанию 30 %), либо battery-failsafe полётного контроллера, настроенного без действия
landingКонец маршрута, cancel_mission с ON_CURRENT_PLACE, land-миссияЗаряд опустился ниже порога критического заряда (по умолчанию 15 %) — в том числе прерывая уже идущий возврат
emergency landingКоманда critical_disarmЛюбая авария, на которую полётный контроллер отреагировал сам: автономный LAND/RTL, disarm, детекция падения, потеря тяги, EKF- или GPS-failsafe
online—Выставляется после посадки в любом из сценариев выше, кроме emergency landing

emergency landing удерживается до старта следующей миссии или перезапуска борта; после нового взлёта сменится на taking off.

Сопутствующие события по этим сценариям:

Ситуацияmission_cancelledmission_completed
Возврат или посадка по заряду во время миссиида, с ID миссии — как при отмене операторомнет
emergency landing (critical_disarm или авария полётного контроллера)нетнет
Миссия отклонена на земле из-за низкого заряданетнет — после mission_received статус остаётся online

Отличить отмену миссии оператором от возврата по заряду средствами API нельзя: оба сценария дают returning вместе с mission_cancelled. Косвенный признак автономного возврата — battery_level ниже порога низкого заряда в момент перехода в returning.

Пороги заряда настраиваются на борту; через MQTT API платформа их не задаёт.


2. mission_received​

Миссии
  • MQTT Topic: {DRONE_ID}_mission_received
  • QoS: 1

Подтверждение получения миссии дроном. Подтверждает приём задания, но не гарантирует взлёт: борт может отклонить миссию на земле из-за низкого заряда — тогда статус в data остаётся online, а события mission_completed и mission_cancelled не приходят вовсе.

messageuuidrequired
ID полученной миссии
{
"topic": "10001_mission_received",
"message": "01939ba1-fd8a-7ed4-acb1-35791c03c70d"
}

3. mission_completed​

Миссии
  • MQTT Topic: {DRONE_ID}_mission_completed
  • QoS: 1

Уведомление о завершении миссии.

messageuuidrequired
ID завершённой миссии
{
"topic": "10001_mission_completed",
"message": "01939ba1-fd8a-7ed4-acb1-35791c03c70d"
}

4. mission_cancelled​

Миссии
  • MQTT Topic: {DRONE_ID}_mission_cancelled
  • QoS: 1

Уведомление об отмене миссии.

messageuuidrequired
ID отменённой миссии
{
"topic": "10001_mission_cancelled",
"message": "01939ba1-fd8a-7ed4-acb1-35791c03c70d"
}

5. photo​

Телеметрия
  • MQTT Topic: {DRONE_ID}_photo
  • QoS: 1

Данные фото с детектируемым объектом. Включает изображение в Base64.

namestrrequired
Класс детектируемого объекта (например, car, person)
idint
ID детектируемого объекта
timedatetimerequired
Время детекции в формате YYYY-MM-DDThh:mm:ss
photoBase64required
Изображение объекта в формате Base64
latfloatrequired
Широта координаты дрона в момент съёмки
longfloatrequired
Долгота координаты дрона в момент съёмки
{
"topic": "10001_photo",
"message": {
"name": "car",
"id": 1,
"time": "2025-08-09T18:31:42",
"photo": "/9j/4AAQSkZJRgABAD...",
"lat": 59.942,
"long": 30.3202
}
}

6. current_model_tracking​

ML-модели
  • MQTT Topic: {DRONE_ID}_current_model_tracking
  • QoS: 1

Информация о текущей активной и всех доступных ML-моделях на дроне.

current_modelstrrequired
Имя файла текущей активной модели
available_modelsArray[str]required
Список всех доступных моделей на дроне
{
"topic": "10001_current_model_tracking",
"message": {
"current_model": "yolov8n.pt",
"available_models": [
"yolov8n.pt",
"yolov8s.pt",
"custom_model.pt"
]
}
}

7. result_delete​

ML-модели
  • MQTT Topic: {DRONE_ID}_result_delete
  • QoS: 1

Результат удаления ML-моделей. Массив объектов с результатом для каждого файла.

messageArray[object]required
Результаты удаления
model_namestrrequired
Имя файла модели
status_codeintrequired
HTTP-код результата (200 — успех, 500 — ошибка)
messagestrrequired
Текстовое описание результата
{
"topic": "10001_result_delete",
"message": [
{
"model_name": "old_model.pt",
"status_code": 200,
"message": "Deleted"
},
{
"model_name": "missing_model.pt",
"status_code": 500,
"message": "File not found"
}
]
}

8. objects_data​

Телеметрия
  • MQTT Topic: {DRONE_ID}_objects_data
  • QoS: 1

Метаданные детектируемого объекта без изображения. Передаётся при каждом обнаружении.

namestrrequired
Класс объекта (например, car, person)
idint
ID объекта в рамках текущей сессии
timedatetimerequired
Время детекции в формате YYYY-MM-DDThh:mm:ss
positionPositionrequired
Позиция обнаруженного объекта
pointPointrequired
Координаты объекта
latfloatrequired
Широта
longfloatrequired
Долгота
heightfloat
Высота (м)
directionintrequired
Направление движения объекта (0–360°)
speedfloat
Скорость объекта (м/с)
drone_pointPointrequired
Координаты дрона в момент детекции
latfloatrequired
Широта дрона
longfloatrequired
Долгота дрона
{
"topic": "10001_objects_data",
"message": {
"name": "car",
"id": 1,
"time": "2025-08-09T18:31:42",
"position": {
"point": {
"lat": 59.9397889,
"long": 149.18209,
"height": 200
},
"direction": 90,
"speed": 60
},
"drone_point": {
"lat": -35.364,
"long": 149.165
}
}
}

9. gimbal_data​

Камера и подвес
  • MQTT Topic: {DRONE_ID}_gimbal_data
  • QoS: 1

Текущие данные подвеса камеры для каждой подключённой камеры.

{camera_id}objectrequired
Параметры подвеса камеры
rollintrequired
Крен
pitchintrequired
Тангаж
yawintrequired
Рыскание
zoomintrequired
Текущее значение зума
{
"topic": "10001_gimbal_data",
"message": {
"camera_0": {
"roll": 0,
"pitch": -45,
"yaw": 180,
"zoom": 1
}
}
}

10. gimbal_auto_status​

Камера и подвес
  • MQTT Topic: {DRONE_ID}_gimbal_auto_status
  • QoS: 1

Статус автоматического сканирования подвеса.

camera_idstrrequired
ID камеры
statusstrrequired
Текущий статус автосканирования
running— Автосканирование выполняется
start— Автосканирование запущено
stop— Автосканирование остановлено
current— Ответ на запрос текущего статуса
typestrrequired
Тип сканирования
sin— Синусоидальное движение
dynamic— Динамическое движение
none— Не задан
{
"topic": "10001_gimbal_auto_status",
"message": {
"camera_id": "camera_1",
"status": "running",
"type": "sin"
}
}

11. drone_params_data​

Параметры дрона
  • MQTT Topic: {DRONE_ID}_drone_params_data
  • QoS: 1

Ответ с запрошенными параметрами полётного контроллера (ArduPilot). Ключ — имя параметра, значение — текущее значение.

messageobjectrequired
Объект параметров: ключ — имя, значение — текущее значение
{
"topic": "10001_drone_params_data",
"message": {
"WPNAV_SPEED": 500,
"WPNAV_SPEED_DN": 150
}
}

12. ardupilot_status​

Телеметрия
  • MQTT Topic: {DRONE_ID}_ardupilot_status
  • QoS: 1

Статусные сообщения от ArduPilot (предупреждения, ошибки, информация).

severityintrequired
Уровень важности сообщения
0— Emergency
1— Alert
2— Critical
3— Error
4— Warning
5— Notice
6— Info
messagestrrequired
Текст сообщения от ArduPilot
{
"topic": "10001_ardupilot_status",
"message": {
"severity": 4,
"message": "PreArm: GPS not healthy"
}
}

13. calibration_data​

Калибровка
  • MQTT Topic: {DRONE_ID}_calibration_data
  • QoS: 1

Данные о текущем состоянии калибровки сенсоров.

stepintrequired
Текущий этап калибровки
0— Reboot
1— Accelerometer
2— Magnetometer
3— Other
paramintrequired
Прогресс или параметр текущего этапа
statusintrequired
Общий статус калибровки
0— False (не пройдена)
1— True (пройдена)
2— Running (выполняется)
3— Rebooting (перезагрузка)
4— NotStarted (не начата)
{
"topic": "10001_calibration_data",
"message": {
"step": 1,
"param": 75,
"status": 2
}
}

14. check_motors_data​

Калибровка
  • MQTT Topic: {DRONE_ID}_check_motors_data
  • QoS: 1

Данные проверки моторов — массив PWM-значений для каждого мотора.

messageArray[int]required
Массив из 5 целых чисел: общий газ и PWM моторов 1–4 (в порядке тестирования: 1, 4, 2, 3)
{
"topic": "10001_check_motors_data",
"message": [1000, 1200, 1150, 1180, 1190]
}

15. download_info​

ML-модели
  • MQTT Topic: {DRONE_ID}_download_info
  • QoS: 1

Прогресс загрузки файла ML-модели на дрон.

statusstrrequired
Статус загрузки
none— Загрузка не начата
progress— Загрузка в процессе
complete— Загрузка завершена
error— Ошибка загрузки
model_namestrrequired
Имя файла загружаемой модели
progress_percentint
Процент загрузки (0–100, только при status=progress)
messagestr
Текст ошибки (только при status=error)
{
"topic": "10001_download_info",
"message": {
"status": "progress",
"model_name": "yolov8n.pt",
"progress_percent": 45
}
}

16. mag_fitness​

Калибровка
  • MQTT Topic: {DRONE_ID}_mag_fitness
  • QoS: 1

Данные калибровки магнитометра (компаса).

compass_idintrequired
ID компаса (0, 1, 2)
fitnessfloatrequired
Качество калибровки (0.0 — плохо, 1.0 — отлично)
{
"topic": "10001_mag_fitness",
"message": {
"compass_id": 0,
"fitness": 0.95
}
}

17. stream_lost​

Камера и подвес
  • MQTT Topic: {DRONE_ID}_stream_lost
  • QoS: 1

Уведомление о потере URL видеопотока. Сервер должен отправить актуальный URL через stream_url.

messagebooleanrequired
Уведомление о потере потока
true— URL видеопотока потерян, требуется повторная отправка
{
"topic": "10001_stream_lost",
"message": true
}

18. payload​

Телеметрия
  • MQTT Topic: {DRONE_ID}_payload
  • QoS: 1

Полный статус оборудования дрона: камеры, SD-карта, прошивка, контроллер, состояние связи.

camerasobject
Список подключенных камер
camera_<index>object
Камера (key = short_id)
idstr
UUID камеры
modelstr
Модель камеры
serial_numberstr
Серийный номер
connection_typestr
Тип подключения
usb— USB
ethernet— Ethernet
distortion_modelstr
Модель дисторсии
barrel— Barrel
pincushion— Pincushion
tangential— Tangential
thin_prism— Thin Prism
sd_cardobject
Карта памяти
idstr
UUID карты памяти
modelstr
Модель
serial_numberstr
Серийный номер
total_capacityfloat
Общий объём (GB)
free_capacityfloat
Свободно (GB)
used_capacityfloat
Занято (GB)
media_capacityfloat
Занято медиа (фото/видео)
batteriesobject
Список батарей
battery_<index>object
Батарея (key = short_id)
idstr
UUID батареи
modelstr
Модель батареи
servosobject
Список сервоприводов
servo_<index>object
Серво (key = short_id)
idstr
UUID сервопривода
modelstr
Модель
board_computerobject
Бортовой компьютер
modelstr
Модель (Jetson / Raspberry Pi и т.д.)
firmwareobject
Прошивка
namestr
Название (ArduPilot / PX4)
versionstr
Версия прошивки
flight_controllerobject
Полетный контроллер
modelstr
Модель (Cube Orange+, Pixhawk)
sensorsArray[str]
Сенсоры
batterystr
Состояние/питание
connectivityobject
Связь и телеметрия
telemetrystr
Канал телеметрии
wifiboolean
Wi-Fi доступность
signal_levelfloat
Уровень сигнала (0..1)
{
"topic": "10001_payload",
"message": {
"cameras": {
"camera_0": {
"id": "3f1c2a9e-8c7b-4a55-9f21-1a9d6f2c8c11",
"model": "Sony IMX477",
"serial_number": "CAM-477-883920",
"connection_type": "usb",
"distortion_model": "barrel"
},
"camera_1": {
"id": "7d2a91bc-11aa-4c33-9f88-91c2b7d3aa55",
"model": "Sony IMX219",
"serial_number": "CAM-219-552110",
"connection_type": "usb",
"distortion_model": "barrel"
}
},

"sd_card": {
"id": "c9a11234-77dd-4a22-bc11-9911ffcc8822",
"model": "SanDisk Extreme 128GB",
"serial_number": "SD-128-AX99211",
"total_capacity": 128.0,
"free_capacity": 84.2,
"used_capacity": 43.8,
"media_capacity": 120.5
},

"batteries": {
"battery_0": {
"id": "b1a7c3d2-88aa-4f55-9b11-123456789abc",
"model": "Tattu 6S 16000mAh"
},
"battery_1": {
"id": "d9f8a2c1-55bb-4e77-aa99-998877665544",
"model": "Tattu 6S 16000mAh (spare)"
}
},

"servos": {
"servo_0": {
"id": "s1c2d3e4-aaaa-bbbb-cccc-111122223333",
"model": "Hitec HS-7954SH"
},
"servo_1": {
"id": "s9f8e7d6-1111-2222-3333-444455556666",
"model": "KST DS215MG"
}
},

"board_computer": {
"model": "NVIDIA Jetson Xavier NX"
},

"firmware": {
"name": "ArduPilot",
"version": "4.5.7"
},

"flight_controller": {
"model": "Cube Orange+",
"sensors": [
"accelerometer",
"gyroscope",
"magnetometer",
"barometer"
],
"battery": "6S LiPo monitoring enabled"
},

"connectivity": {
"telemetry": "SiK Radio 915MHz",
"wifi": true,
"signal_level": 0.82
}
}
}

19. drone_request_init​

Регистрация
  • MQTT Topic: drone_request_init (без DRONE_ID)
  • QoS: 1

Инициация процесса регистрации нового дрона в системе.

organization_idstrrequired
ID организации-владельца
drone_idstrrequired
ID дрона
public_keystrrequired
Публичный ключ дрона
mac_addressstrrequired
MAC-адрес дрона
assetsobject
Список подключенного к дрону оборудования
camera_<index>object
Информация о камере (ключ = short_id камеры)
typestr
Тип оборудования (camera)
modelstr
Модель камеры
serial_numberstr
Серийный номер
connection_typestr
Способ подключения
usb— USB
ethernet— Ethernet
distortion_modelstr
Модель дисторсии
barrel— Barrel
pincushion— Pincushion
tangential— Tangential
thin_prism— Thin Prism
sd_cardobject
Информация о карте памяти (ключ = short_id)
typestr
Тип оборудования (sd_card)
modelstr
Модель карты памяти
serial_numberstr
Серийный номер
total_capacityfloat
Общая емкость
free_capacityfloat
Свободное место
used_capacityfloat
Занятое место
media_capacityfloat
Объем медиа (фото/видео)
battery_<index>object
Информация о батарее (ключ = short_id)
typestr
Тип оборудования (battery)
modelstr
Модель батареи
servo_<index>object
Информация о сервоприводе (ключ = short_id)
typestr
Тип оборудования (servo)
modelstr
Модель сервопривода
flight_controllerobject
Полетный контроллер
modelstr
Модель контроллера
sensorsArray[str]
Список сенсоров
batterystr
Параметры/статус батареи контроллера
board_computerobject
Бортовой компьютер
modelstr
Модель бортового компьютера
firmwareobject
Информация о прошивке
namestr
Название прошивки
versionstr
Версия прошивки
connectivityobject
Параметры связи дрона
telemetrystr
Модуль телеметрии
wifiboolean
Наличие Wi-Fi
signal_levelfloat
Уровень сигнала (0..1 или RSSI normalized)
{
"topic": "drone_request_init",
"message": {
"organization_id": "org-001",
"drone_id": "10001",
"public_key": "MIIBIjANBgkqhki...",
"mac_address": "AA:BB:CC:DD:EE:FF",

"assets": {
"camera_0": {
"type": "camera",
"model": "Sony IMX477",
"serial_number": "CAM-ALM-477-883920",
"connection_type": "usb",
"distortion_model": "barrel"
},
"camera_1": {
"type": "camera",
"model": "Sony IMX219",
"serial_number": "CAM-ALM-219-552110",
"connection_type": "usb",
"distortion_model": "barrel"
},
"sd_card": {
"type": "sd_card",
"model": "SanDisk Extreme 128GB",
"serial_number": "SD-128-AX99211",
"total_capacity": 128.0,
"free_capacity": 86.5,
"used_capacity": 41.5,
"media_capacity": 128.0
},
"battery_0": {
"type": "battery",
"model": "Tattu 6S 16000mAh LiPo"
},
"servo_0": {
"type": "servo",
"model": "Hitec HS-7954SH"
},
"flight_controller": {
"model": "Cube Orange+",
"sensors": ["accelerometer", "gyroscope", "magnetometer", "barometer"],
"battery": "6S LiPo monitoring enabled"
},
"board_computer": {
"model": "NVIDIA Jetson Xavier NX"
}
},

"firmware": {
"name": "ArduPilot",
"version": "4.5.7"
},

"connectivity": {
"telemetry": "SiK Radio 915MHz",
"wifi": true,
"signal_level": 0.78
}
}
}

20. drone_request_complete​

Регистрация
  • MQTT Topic: drone_request_complete (без DRONE_ID)
  • QoS: 1

Подтверждение завершения аутентификации дрона. Публикуется после получения одобрения от сервера (drone_request_approve). Структура аналогична drone_request_init.

organization_idstrrequired
ID организации-владельца
drone_idstrrequired
ID дрона
public_keystrrequired
Публичный ключ дрона
mac_addressstrrequired
MAC-адрес дрона
{
"topic": "drone_request_complete",
"message": {
"organization_id": "org_001",
"drone_id": "10001",
"public_key": "ssh-rsa AAAA...",
"mac_address": "AA:BB:CC:DD:EE:FF"
}
}

21. follow_info_publisher​

Слежение за объектами
  • MQTT Topic: {DRONE_ID}_follow_info_publisher
  • QoS: 1

Информация о текущем состоянии трекинга объекта камерой.

track_idstrrequired
ID отслеживаемого объекта или none при отсутствии цели
class_namestrrequired
Класс объекта или none при отсутствии цели
statusstrrequired
Статус трекинга
tracking— Активное слежение за объектом
lost— Объект потерян
error— Ошибка трекинга
stop— Слежение остановлено
none— Трекинг не активен
error_codestr
Код ошибки (только при status=error)
zoom_statusstrrequired
Состояние автозума
enable— Автозум активен
disenable— Автозум выключен
zoom_meanfloatrequired
Текущее среднее значение зума (1.0–15.0)
{
"topic": "10001_follow_info_publisher",
"message": {
"track_id": "42",
"class_name": "car",
"status": "tracking",
"zoom_status": "enable",
"zoom_mean": 5.0
}
}

22. drone_strike_status​

Слежение за объектами
  • MQTT Topic: {DRONE_ID}_drone_strike_status
  • QoS: 1

Текущий статус тарана объекта дроном.

track_idstrrequired
ID целевого объекта
class_namestrrequired
Класс объекта
statusstrrequired
Статус тарана
none— Таран не активен
strike— Таран выполняется
lost— Объект потерян, таран прерван
{
"topic": "10001_drone_strike_status",
"message": {
"track_id": "5",
"class_name": "car",
"status": "strike"
}
}

23. drone_follow_status​

Слежение за объектами
  • MQTT Topic: {DRONE_ID}_drone_follow_status
  • QoS: 1

Текущий статус следования дрона за объектом.

track_idstrrequired
ID целевого объекта
class_namestrrequired
Класс объекта
statusstrrequired
Статус следования
none— Следование не активно
tracking— Дрон следует за объектом
lost— Объект потерян, следование прервано
{
"topic": "10001_drone_follow_status",
"message": {
"track_id": "3",
"class_name": "person",
"status": "tracking"
}
}

24. check_registration​

Регистрация
  • MQTT Topic: check_registration (без DRONE_ID)
  • QoS: 1

Запрос на проверку регистрации дрона в системе.

messagestrrequired
ID дрона для проверки регистрации
{
"topic": "check_registration",
"message": "10001"
}

25. actual_objects_data​

Запрос состояния
  • MQTT Topic: {DRONE_ID}_actual_objects_data
  • QoS: 1

Список актуальных детектируемых объектов, сгруппированных по классам. Каждому классу соответствует массив ID объектов.

objectsobjectrequired
Объект, где ключ — класс объекта, значение — массив ID объектов этого класса
{
"topic": "10001_actual_objects_data",
"message": {
"objects": {
"car": [101, 102, 103],
"person": [201, 202]
}
}
}

26. create_orthophoto_request​

Ортофото
  • MQTT Topic: {DRONE_ID}_create_orthophoto_request
  • QoS: 1

Запрос дрона на создание ортофотоплана. Сервер должен ответить через create_orthophoto.

request_idstrrequired
Уникальный ID запроса
{
"topic": "10001_create_orthophoto_request",
"message": {
"request_id": "ortho-001"
}
}

27. transferring_info​

ML-модели
  • MQTT Topic: {DRONE_ID}_transferring_info
  • QoS: 1

Статус конвертации ML-модели из формата .pt в формат .engine (TensorRT) на дроне. При успешном завершении имя модели меняет расширение с .pt на .engine.

statusstrrequired
Статус конвертации
none— Нет активного процесса конвертации
started— Конвертация начата (инициализация)
transferring— Конвертация в процессе
completed— Конвертация завершена успешно
stopped— Конвертация отменена
error— Ошибка конвертации
model_namestrrequired
Имя модели. При status=completed расширение меняется с .pt на .engine. При остальных статусах — исходное имя файла. Значение none при status=none
messagestr
Текст ошибки (только при status=error)
progress_percentint
Процент выполнения конвертации (0–100)

Нет активного процесса:

{
"topic": "10001_transferring_info",
"message": {
"status": "none",
"model_name": "none",
"progress_percent": 0
}
}

Конвертация начата:

{
"topic": "10001_transferring_info",
"message": {
"status": "started",
"model_name": "yolov8s.pt",
"progress_percent": 0
}
}

Конвертация в процессе:

{
"topic": "10001_transferring_info",
"message": {
"status": "transferring",
"model_name": "yolov8s.pt",
"progress_percent": 50
}
}

Конвертация завершена успешно:

{
"topic": "10001_transferring_info",
"message": {
"status": "completed",
"model_name": "yolov8s.engine",
"progress_percent": 100
}
}

Конвертация отменена:

{
"topic": "10001_transferring_info",
"message": {
"status": "stopped",
"model_name": "yolov8s.pt",
"progress_percent": 0
}
}

Ошибка при конвертации:

{
"topic": "10001_transferring_info",
"message": {
"status": "error",
"model_name": "yolov8s.pt",
"message": "Model yolov8s.pt not found",
"progress_percent": 0
}
}

28. download_audio_info​

Робот
  • MQTT Topic: {DRONE_ID}_download_audio_info
  • QoS: 1

Прогресс и статус загрузки аудиофайла на робота в рамках голосового пайплайна.

statusstrrequired
Статус загрузки
progress— Загрузка в процессе
complete— Загрузка завершена
error— Ошибка загрузки
model_namestrrequired
Имя загружаемого аудиофайла
progress_percentint
Процент загрузки (0–100, только при status=progress)
messagestr
Сообщение (при status=complete или status=error)

Загрузка в процессе:

{
"topic": "10001_download_audio_info",
"message": {
"status": "progress",
"model_name": "123434.wav",
"progress_percent": 45
}
}

Загрузка завершена:

{
"topic": "10001_download_audio_info",
"message": {
"status": "complete",
"model_name": "123434.wav",
"message": "Audio loaded successfully"
}
}

Ошибка загрузки:

{
"topic": "10001_download_audio_info",
"message": {
"status": "error",
"model_name": "123434.wav",
"message": "ConnectionError / Timeout / ..."
}
}

29. STT_result​

Робот
  • MQTT Topic: {DRONE_ID}_STT_result
  • QoS: 1

Результат распознавания речи (Speech-to-Text). После успешной загрузки аудио робот запускает голосовой пайплайн, первый этап которого — распознавание речи (Whisper).

messagestrrequired
Распознанный текст из аудиофайла
{
"topic": "10001_STT_result",
"message": {
"message": "Привет, как дела?"
}
}

30. LLM_answer​

Робот
  • MQTT Topic: {DRONE_ID}_LLM_answer
  • QoS: 1

Ответ языковой модели (LLM). Второй этап голосового пайплайна — генерация ответа языковой моделью (Qwen) на основе распознанного текста.

messagestrrequired
Текст ответа языковой модели
{
"topic": "10001_LLM_answer",
"message": {
"message": "Привет! У меня всё отлично, спасибо что спросил."
}
}

31. lep_status​

ЛЭП
  • MQTT Topic: {DRONE_ID}_lep_status
  • QoS: 1

Агрегированный статус режима полёта вдоль ЛЭП и инспекции столбов. Публикуется при изменении состояния любой подсистемы ЛЭП, а также в ответ на lep_control с action: "current".

lep_enabledbooleanrequired
Активированы ли ноды детекции и управления полётом вдоль ЛЭП
followingbooleanrequired
Идёт ли полёт вдоль проводов
follow_statusstrrequired
Детальный статус полёта
idle— Режим ЛЭП не активен
searching— Столбы не обнаружены, ожидание
following— Активный полёт вдоль линии столбов
approaching— Приближение к столбу — замедление
lost— Провод потерян (автоматическое отключение ЛЭП)
stop— Полёт приостановлен
error— Внутренняя ошибка (зарезервировано)
pole_inspector_enabledbooleanrequired
Активирована ли инспекция столбов
pole_inspector_statusstrrequired
Статус инспекции столбов
inactive— Инспекция столбов не активна
searching— Камера направлена вниз, ожидание обнаружения столба
tracking— Столб обнаружен, отслеживается в кадре
braking— Столб приближается к центру кадра — дрон замедляется
photographing— Дрон зависает, идёт серия из 3 фото
resetting— Фото сделаны, ожидание следующего столба
pole_countintrequired
Количество сфотографированных столбов
lep_placement_activebooleanrequired
Активна ли постановка дрона над ЛЭП
lep_placement_statestrrequired
Статус постановки
idle— Постановка не активна
detecting— Поиск двух столбов на гимбал-камере
ready— Два столба найдены, дрон зависает, ожидание placement_start
aligning— Выравнивание между столбами + поворот heading
descending— Снижение до целевой высоты
complete— Постановка завершена (нода автоматически выключается)

Всё выключено (ответ на current при неактивном режиме):

{
"topic": "10001_lep_status",
"message": {
"lep_enabled": false,
"following": false,
"follow_status": "idle",
"pole_inspector_enabled": false,
"pole_inspector_status": "inactive",
"pole_count": 0,
"lep_placement_active": false,
"lep_placement_state": "idle"
}
}

Постановка — поиск столбов:

{
"topic": "10001_lep_status",
"message": {
"lep_enabled": false,
"following": false,
"follow_status": "idle",
"pole_inspector_enabled": false,
"pole_inspector_status": "inactive",
"pole_count": 0,
"lep_placement_active": true,
"lep_placement_state": "detecting"
}
}

Постановка — столбы найдены, ожидание placement_start:

{
"topic": "10001_lep_status",
"message": {
"lep_enabled": false,
"following": false,
"follow_status": "idle",
"pole_inspector_enabled": false,
"pole_inspector_status": "inactive",
"pole_count": 0,
"lep_placement_active": true,
"lep_placement_state": "ready"
}
}

Полёт вдоль ЛЭП + инспекция активны:

{
"topic": "10001_lep_status",
"message": {
"lep_enabled": true,
"following": true,
"follow_status": "following",
"pole_inspector_enabled": true,
"pole_inspector_status": "searching",
"pole_count": 0,
"lep_placement_active": false,
"lep_placement_state": "idle"
}
}

Полёт + инспекция, приближение к столбу:

{
"topic": "10001_lep_status",
"message": {
"lep_enabled": true,
"following": true,
"follow_status": "approaching",
"pole_inspector_enabled": true,
"pole_inspector_status": "braking",
"pole_count": 2,
"lep_placement_active": false,
"lep_placement_state": "idle"
}
}

Столб потерян (автоматическое выключение):

{
"topic": "10001_lep_status",
"message": {
"lep_enabled": false,
"following": false,
"follow_status": "lost",
"pole_inspector_enabled": false,
"pole_inspector_status": "inactive",
"pole_count": 0,
"lep_placement_active": false,
"lep_placement_state": "idle"
}
}

32. update_software_status​

ПО
  • MQTT Topic: {DRONE_ID}_update_software_status
  • QoS: 1

Результат обновления программного обеспечения на дроне: как успешное завершение, так и неудача.

installation_idstringrequired
Идентификатор операции установки из таблицы `software_installation`. Сообщение с неизвестным идентификатором, а также сообщение по установке не в статусе `started`, сервер игнорирует
statusstringrequired
Статус операции установки
ok— Обновление успешно завершено
error— Не удалось обновить
versionstring
Версия ПО, установленная в ходе обновления. Формат: `major.minor.patch`. Обязательна при `status: ok`: сервер сравнивает её с версией релиза из установки, и при несовпадении или отсутствии считает обновление неудачным
reasonstring
Причина неудачи. Учитывается только когда обновление признано неудачным, сохраняется в `software_installation.error_message`
software_release_idstring
Идентификатор релиза программного обеспечения, установленного на дрон. Сервером не используется
{
"topic": "10001_update_software_status",
"message": {
"installation_id": "8f4d3c21-6f5d-4a31-bd93-12c3f0f7a8d1",
"software_release_id": "9d8c7b6a-5e4f-3a2b-1c0d-fedcba987654",
"version": "2.5.1",
"status": "ok"
}
}
{
"topic": "10001_update_software_status",
"message": {
"installation_id": "8f4d3c21-6f5d-4a31-bd93-12c3f0f7a8d1",
"version": "2.5.1",
"status": "error",
"reason": "Недостаточно места на диске"
}
}