API Server-Drone v2.0
API интеграции MQTT-топиков между сервером и дроном проекта Wheelies.
Протокол: MQTT
Формат данных: JSON
Дата: 19.12.2024
Формат топика: {DRONE_ID}_{topic_name}
Типы данных
Point
latfloatrequiredlongfloatrequiredheightfloatPosition
pointPointrequiredlatfloatrequiredlongfloatrequiredheightfloatdirectionintrequiredspeedfloatСервер → Дрон
1. mission
- MQTT Topic:
{DRONE_ID}_mission
Отправка миссии на дрон. Топик get_mission переименован в mission начиная с v2.0.
mission_iduuidrequiredparamsArray[Param]requiredparam_iduuidrequirednamestrtypestrrequiredpoint— Точкаfloat— Числоboolean— Логическое значениеvalueMixedcommandsArray[Command]requiredcommand_iduuidrequiredcommand_typestrrequiredmove_to— Перелёт к точкеcoverage— Покрытие областиland— Посадкаtakeoff— Взлётscan_area— Сканирование областиram— Таранby_path— Движение по маршрутуpointsArray[Point]requiredlatfloatrequiredlongfloatrequiredheightfloatparamsArray[Object]requiredtriggersArray[Trigger]conditionstrrequiredcommand_idstrrequiredpriorityintrequired{
"topic": "10001_mission",
"message": {
"mission_id": "abc-123",
"params": [],
"commands": [
{
"command_id": "cmd-456",
"command_type": "move_to",
"points": [
{
"lat": 55.751244,
"long": 37.618423,
"height": 50.0
}
],
"params": []
}
],
"triggers": []
}
}
2. pause_mission
- MQTT Topic:
{DRONE_ID}_pause_mission
Пауза или возобновление выполнения миссии.
messagestrrequiredon— Поставить на паузуoff— Возобновить выполнение{
"topic": "10001_pause_mission",
"message": "on"
}
3. cancel_mission
- MQTT Topic:
{DRONE_ID}_cancel_mission
Отмена текущей миссии.
messagestrrequiredBACK_TO_START— Возврат на точку стартаON_CURRENT_PLACE— Посадка на текущем месте{
"topic": "10001_cancel_mission",
"message": "BACK_TO_START"
}
4. use_hand_mode
- MQTT Topic:
{DRONE_ID}_use_hand_mode
Переключение между ручным и автоматическим режимом управления дроном.
messagestrrequiredtrue— Ручной режимfalse— Автоматический режим{
"topic": "10001_use_hand_mode",
"message": "true"
}
5. use_ai_video
- MQTT Topic:
{DRONE_ID}_use_ai_video
Включение или выключение AI-детекции объектов на видеопотоке.
messagestrrequiredtrue— Включить AI-детекциюfalse— Выключить AI-детекцию{
"topic": "10001_use_ai_video",
"message": "true"
}
6. gimbal_control
- MQTT Topic:
{DRONE_ID}_gimbal_control
Управление подвесом камеры. Формат сообщения — массив [pitch, roll, yaw, zoom]. Значения в диапазоне 1100–1900.
messageArray[int]required{
"topic": "10001_gimbal_control",
"message": [1500, 1500, 1500, 1500]
}
7. joy_control
- MQTT Topic:
{DRONE_ID}_joy_control
Ручное управление дроном. Формат сообщения: "{direction}_{speed}".
messagestrrequireddirectionstrrequiredforward— Вперёдback— Назадleft— Влевоright— Вправоforward_left— Вперёд-влевоforward_right— Вперёд-вправоback_left— Назад-влевоback_right— Назад-вправоup— Вверхdown— Внизcenter— Остановка (зависание)speedintrequired{
"topic": "10001_joy_control",
"message": "forward_2"
}
8. critical_disarm
- MQTT Topic:
{DRONE_ID}_critical_disarm
Экстренное отключение моторов дрона. Используется только в аварийных ситуациях.
messagestrrequiredtrue— Немедленно отключить моторы{
"topic": "10001_critical_disarm",
"message": "true"
}
9. change_realtime_stream
- MQTT Topic:
{DRONE_ID}_change_realtime_stream
Включение или выключение видеопотока в реальном времени.
messagestrrequiredtrue— Включить видеопотокfalse— Выключить видеопоток{
"topic": "10001_change_realtime_stream",
"message": "true"
}
Дрон → Сервер
1. data
- MQTT Topic:
{DRONE_ID}_data
Телеметрия дрона — позиция, батарея, статус, активные режимы.
positionPositionrequiredpointPointrequiredlatfloatrequiredlongfloatrequiredheightfloatdirectionintrequiredspeedfloatbattery_levelintrequiredheadingintrequiredstatusstrrequiredoffline— Не в сетиwaiting— Ожиданиеmission accomplishment— Выполнение миссииtakeoff— Взлётreturn home— Возврат на точку стартаmission_iduuidrequiredcommand_iduuidrequireduse_ai_videobooleanrequireduse_hand_modebooleanrequiredaimobject{
"topic": "10001_data",
"message": {
"position": {
"point": {
"lat": 59.939,
"long": 149.182,
"height": 200
},
"direction": 90,
"speed": 15.5
},
"battery_level": 87,
"heading": 318,
"status": "mission accomplishment",
"mission_id": "01939ba1-fd8a-7ed4-acb1-35791c03c70d",
"command_id": "0193909e-e71c-7b38-8ed7-ab4d7aed7e1c",
"use_ai_video": false,
"use_hand_mode": false
}
}
2. mission_completed
- MQTT Topic:
{DRONE_ID}_mission_completed
Уведомление о завершении миссии.
messageuuidrequired{
"topic": "10001_mission_completed",
"message": "01939ba1-fd8a-7ed4-acb1-35791c03c70d"
}
3. mission_received
- MQTT Topic:
{DRONE_ID}_mission_received
Подтверждение получения миссии дроном.
messageuuidrequired{
"topic": "10001_mission_received",
"message": "01939ba1-fd8a-7ed4-acb1-35791c03c70d"
}
4. mission_cancelled
- MQTT Topic:
{DRONE_ID}_mission_cancelled
Уведомление об отмене миссии.
messageuuidrequired{
"topic": "10001_mission_cancelled",
"message": "01939ba1-fd8a-7ed4-acb1-35791c03c70d"
}
5. mission_on_pause
- MQTT Topic:
{DRONE_ID}_mission_on_pause
Уведомление о паузе миссии.
messageuuidrequired{
"topic": "10001_mission_on_pause",
"message": "01939ba1-fd8a-7ed4-acb1-35791c03c70d"
}
6. objects_data
- MQTT Topic:
{DRONE_ID}_objects_data
Данные детектируемого объекта.
namestrrequiredidinttimedatetimerequiredpositionPositionrequiredpointPointrequiredlatfloatrequiredlongfloatrequiredheightfloatdirectionintrequiredspeedfloatdrone_pointPointrequiredlatfloatrequiredlongfloatrequiredheightfloat{
"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": 59.942,
"long": 149.165
}
}
}
7. photo
- MQTT Topic:
{DRONE_ID}_photo
Фото детектируемого объекта.
namestrrequiredidinttimedatetimerequiredphotoBase64requiredlatfloatrequiredlongfloatrequired{
"topic": "10001_photo",
"message": {
"name": "car",
"id": 1,
"time": "2025-08-09T18:31:42",
"photo": "/9j/4AAQSkZJRgABAD...",
"lat": 59.942,
"long": 149.165
}
}