Дрон → Сервер
Топики для передачи данных и статусов от дрона к серверу.
1. data
Телеметрия- MQTT Topic:
{DRONE_ID}_data - QoS: 1
Периодическая публикация телеметрии дрона: координаты, высота, скорость, заряд батареи, курс, статус миссии и флаги режимов управления. Публикуется по таймеру (~0.7 с).
positionPositionrequiredpointPointrequiredlatfloatrequiredlongfloatrequiredheightfloatdirectionintrequiredspeedfloatbattery_levelfloatrequiredheadingfloatrequiredstatusstrrequiredonline— В сети, готов к работеoffline— Не в сетиon mission— Выполняет миссиюtaking off— Взлетаетlanding— Совершает посадкуreturning— Возвращается на точку стартаpaused— Миссия на паузеemergency landing— Аварийная посадкаmission_iduuidrequiredcommand_iduuidrequireduse_ai_videobooleanrequireduse_hand_modebooleanrequiredobstacle_avoidancebooleanrequiredcamera_trackingstraimobjectcarint{
"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,
"heading": 180.0,
"status": "on mission",
"mission_id": "01939ba1-fd8a-7ed4-acb1-35791c03c70d",
"command_id": "0193909e-e71c-7b38-8ed7-ab4d7aed7e1c",
"use_ai_video": true,
"aim": null,
"use_hand_mode": false,
"obstacle_avoidance": true,
"camera_tracking": null
}
}
2. mission_received
Миссии- MQTT Topic:
{DRONE_ID}_mission_received - QoS: 1
Подтверждение получения миссии дроном.
messageuuidrequired{
"topic": "10001_mission_received",
"message": "01939ba1-fd8a-7ed4-acb1-35791c03c70d"
}
3. mission_completed
Миссии- MQTT Topic:
{DRONE_ID}_mission_completed - QoS: 1
Уведомление о завершении миссии.
messageuuidrequired{
"topic": "10001_mission_completed",
"message": "01939ba1-fd8a-7ed4-acb1-35791c03c70d"
}
4. mission_cancelled
Миссии- MQTT Topic:
{DRONE_ID}_mission_cancelled - QoS: 1
Уведомление об отмене миссии.
messageuuidrequired{
"topic": "10001_mission_cancelled",
"message": "01939ba1-fd8a-7ed4-acb1-35791c03c70d"
}
5. photo
Телеметрия- MQTT Topic:
{DRONE_ID}_photo - QoS: 1
Данные фото с детектируемым объектом. Включает изображение в Base64.
namestrrequiredidinttimedatetimerequiredphotoBase64requiredlatfloatrequiredlongfloatrequired{
"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_modelstrrequiredavailable_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]requiredmodel_namestrrequiredstatus_codeintrequiredmessagestrrequired{
"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
Метаданные детектируемого объекта без изображения. Передаётся при каждом обнаружении.
namestrrequiredidinttimedatetimerequiredpositionPositionrequiredpointPointrequiredlatfloatrequiredlongfloatrequiredheightfloatdirectionintrequiredspeedfloatdrone_pointPointrequiredlatfloatrequiredlongfloatrequired{
"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}objectrequiredrollintrequiredpitchintrequiredyawintrequiredzoomintrequired{
"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_idstrrequiredstatusstrrequiredrunning— Автосканирование выполняетсяstart— Автосканирование запущеноstop— Автосканирование остановленоcurrent— Ответ на запрос текущего статусаtypestrrequiredsin— Синусоидальное движение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 (предупреждения, ошибки, информация).
severityintrequired0— Emergency1— Alert2— Critical3— Error4— Warning5— Notice6— Infomessagestrrequired{
"topic": "10001_ardupilot_status",
"message": {
"severity": 4,
"message": "PreArm: GPS not healthy"
}
}
13. calibration_data
Калибровка- MQTT Topic:
{DRONE_ID}_calibration_data - QoS: 1
Данные о текущем состоянии калибровки сенсоров.
stepintrequired0— Reboot1— Accelerometer2— Magnetometer3— Otherparamintrequiredstatusintrequired0— 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{
"topic": "10001_check_motors_data",
"message": [1000, 1200, 1150, 1180, 1190]
}
15. download_info
ML-модели- MQTT Topic:
{DRONE_ID}_download_info - QoS: 1
Прогресс загрузки файла ML-модели на дрон.
statusstrrequirednone— Загрузка не начатаprogress— Загрузка в процессеcomplete— Загрузка завершенаerror— Ошибка загрузкиmodel_namestrrequiredprogress_percentintmessagestr{
"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_idintrequiredfitnessfloatrequired{
"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.
messagebooleanrequiredtrue— URL видеопотока потерян, требуется повторная отправка{
"topic": "10001_stream_lost",
"message": true
}
18. payload
Телеметрия- MQTT Topic:
{DRONE_ID}_payload - QoS: 1
Полный статус оборудования дрона: камеры, SD-карта, прошивка, контроллер, состояние связи.
camerasobject{camera_name}objectresolutionstrdistortion_modelstrgimbalbooleanzoombooleanserial_numberstrsd_cardobjectmodelstrcapacity_gbfloatused_gbfloatfree_gbfloatfirmwareobjectnamestrversionstrflight_controllerobjectmodelstrsensorsArray[str]batterystrconnectivityobjecttelemetrystrwifiboolean{
"topic": "10001_payload",
"message": {
"cameras": {
"main_camera": {
"resolution": "1920x1080",
"distortion_model": "HDX",
"gimbal": false,
"zoom": false,
"serial_number": "SN12345"
}
},
"sd_card": {
"model": "SanDisk Extreme PRO",
"capacity_gb": 47.89,
"used_gb": 41.58,
"free_gb": 6.31
},
"firmware": {
"name": "ArduCopter",
"version": "4.5.7"
},
"flight_controller": {
"model": "Pixhawk 4",
"sensors": ["GPS", "IMU", "Magnetometer", "Barometer"],
"battery": "5200"
},
"connectivity": {
"telemetry": "900MHz SiK Radio",
"wifi": true
}
}
}
19. drone_request_init
Регистрация- MQTT Topic:
drone_request_init(без DRONE_ID) - QoS: 1
Инициация процесса регистрации нового дрона в системе.
organization_idstrrequireddrone_idstrrequiredpublic_keystrrequiredmac_addressstrrequired{
"topic": "drone_request_init",
"message": {
"organization_id": "org-001",
"drone_id": "10001",
"public_key": "MIIBIjANBgkqhki...",
"mac_address": "AA:BB:CC:DD:EE:FF"
}
}
20. drone_request_complete
Регистрация- MQTT Topic:
drone_request_complete(без DRONE_ID) - QoS: 1
Подтверждение завершения аутентификации дрона. Публикуется после получения одобрения от сервера (drone_request_approve). Структура аналогична drone_request_init.
organization_idstrrequireddrone_idstrrequiredpublic_keystrrequiredmac_addressstrrequired{
"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_idstrrequiredclass_namestrrequiredstatusstrrequiredtracking— Активное слежение за объектомlost— Объект потерянerror— Ошибка трекингаstop— Слежение остановленоnone— Трекинг не активенerror_codestrzoom_statusstrrequiredenable— Автозум активенdisenable— Автозум выключенzoom_meanfloatrequired{
"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_idstrrequiredclass_namestrrequiredstatusstrrequirednone— Таран не активен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_idstrrequiredclass_namestrrequiredstatusstrrequirednone— Следование не активно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{
"topic": "check_registration",
"message": "10001"
}
25. actual_objects_data
Запрос состояния- MQTT Topic:
{DRONE_ID}_actual_objects_data - QoS: 1
Список актуальных детектируемых объектов, сгруппированных по классам. Каждому классу соответствует массив ID объектов.
objectsobjectrequired{
"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{
"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.
statusstrrequirednone— Нет активного процесса конвертацииstarted— Конвертация начата (инициализация)transferring— Конвертация в процессеcompleted— Конвертация завершена успешноstopped— Конвертация отмененаerror— Ошибка конвертацииmodel_namestrrequiredmessagestrprogress_percentintНет активного процесса:
{
"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
}
}