Skip to main content

API Server-Drone v2.0

API интеграции MQTT-топиков между сервером и дроном проекта Wheelies.

Протокол: MQTT
Формат данных: JSON
Дата: 19.12.2024
Формат топика: {DRONE_ID}_{topic_name}

Типы данных

Point

latfloatrequired
Широта
longfloatrequired
Долгота
heightfloat
Высота полёта (м)

Position

pointPointrequired
Координаты
latfloatrequired
Широта
longfloatrequired
Долгота
heightfloat
Высота (м)
directionintrequired
Направление движения (0–360°)
speedfloat
Скорость (м/с)

Сервер → Дрон

1. mission

  • MQTT Topic: {DRONE_ID}_mission

Отправка миссии на дрон. Топик get_mission переименован в mission начиная с v2.0.

mission_iduuidrequired
ID миссии
paramsArray[Param]required
Массив параметров
param_iduuidrequired
ID параметра
namestr
Имя параметра
typestrrequired
Тип данных параметра
pointТочка
floatЧисло
booleanЛогическое значение
valueMixed
Значение параметра
commandsArray[Command]required
Массив команд
command_iduuidrequired
ID команды
command_typestrrequired
Тип команды
move_toПерелёт к точке
coverageПокрытие области
landПосадка
takeoffВзлёт
scan_areaСканирование области
ramТаран
by_pathДвижение по маршруту
pointsArray[Point]required
Точки маршрута
latfloatrequired
Широта
longfloatrequired
Долгота
heightfloat
Высота полёта (м)
paramsArray[Object]required
Параметры команды
triggersArray[Trigger]
Массив триггеров
conditionstrrequired
Условие переключения
command_idstrrequired
ID целевой команды
priorityintrequired
Приоритет триггера
{
"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

Пауза или возобновление выполнения миссии.

messagestrrequired
Команда управления паузой
onПоставить на паузу
offВозобновить выполнение
{
"topic": "10001_pause_mission",
"message": "on"
}

3. cancel_mission

  • MQTT Topic: {DRONE_ID}_cancel_mission

Отмена текущей миссии.

messagestrrequired
Способ завершения миссии
BACK_TO_STARTВозврат на точку старта
ON_CURRENT_PLACEПосадка на текущем месте
{
"topic": "10001_cancel_mission",
"message": "BACK_TO_START"
}

4. use_hand_mode

  • MQTT Topic: {DRONE_ID}_use_hand_mode

Переключение между ручным и автоматическим режимом управления дроном.

messagestrrequired
Режим управления
trueРучной режим
falseАвтоматический режим
{
"topic": "10001_use_hand_mode",
"message": "true"
}

5. use_ai_video

  • MQTT Topic: {DRONE_ID}_use_ai_video

Включение или выключение AI-детекции объектов на видеопотоке.

messagestrrequired
Режим AI-детекции
trueВключить 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
Массив [pitch, roll, yaw, zoom]. Значения 1100–1900
{
"topic": "10001_gimbal_control",
"message": [1500, 1500, 1500, 1500]
}

7. joy_control

  • MQTT Topic: {DRONE_ID}_joy_control

Ручное управление дроном. Формат сообщения: "{direction}_{speed}".

messagestrrequired
Команда в формате direction_speed
directionstrrequired
Направление движения
forwardВперёд
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

Экстренное отключение моторов дрона. Используется только в аварийных ситуациях.

messagestrrequired
Команда аварийного отключения
trueНемедленно отключить моторы
{
"topic": "10001_critical_disarm",
"message": "true"
}

9. change_realtime_stream

  • MQTT Topic: {DRONE_ID}_change_realtime_stream

Включение или выключение видеопотока в реальном времени.

messagestrrequired
Режим видеопотока
trueВключить видеопоток
falseВыключить видеопоток
{
"topic": "10001_change_realtime_stream",
"message": "true"
}

Дрон → Сервер

1. data

  • MQTT Topic: {DRONE_ID}_data

Телеметрия дрона — позиция, батарея, статус, активные режимы.

positionPositionrequired
Позиция дрона
pointPointrequired
Координаты
latfloatrequired
Широта
longfloatrequired
Долгота
heightfloat
Высота (м)
directionintrequired
Направление движения (0–360°)
speedfloat
Скорость (м/с)
battery_levelintrequired
Заряд батареи (0–100%)
headingintrequired
Направление камеры (0–360°)
statusstrrequired
Текущий статус дрона
offlineНе в сети
waitingОжидание
mission accomplishmentВыполнение миссии
takeoffВзлёт
return homeВозврат на точку старта
mission_iduuidrequired
ID текущей миссии
command_iduuidrequired
ID выполняемой команды
use_ai_videobooleanrequired
AI-детекция активна
use_hand_modebooleanrequired
Ручной режим управления активен
aimobject
Цель тарана
{
"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
ID завершённой миссии
{
"topic": "10001_mission_completed",
"message": "01939ba1-fd8a-7ed4-acb1-35791c03c70d"
}

3. mission_received

  • MQTT Topic: {DRONE_ID}_mission_received

Подтверждение получения миссии дроном.

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

4. mission_cancelled

  • MQTT Topic: {DRONE_ID}_mission_cancelled

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

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

5. mission_on_pause

  • MQTT Topic: {DRONE_ID}_mission_on_pause

Уведомление о паузе миссии.

messageuuidrequired
ID миссии на паузе
{
"topic": "10001_mission_on_pause",
"message": "01939ba1-fd8a-7ed4-acb1-35791c03c70d"
}

6. objects_data

  • MQTT Topic: {DRONE_ID}_objects_data

Данные детектируемого объекта.

namestrrequired
Класс объекта (например, car, person)
idint
ID объекта
timedatetimerequired
Время детекции (YYYY-MM-DDThh:mm:ss)
positionPositionrequired
Позиция объекта
pointPointrequired
Координаты объекта
latfloatrequired
Широта
longfloatrequired
Долгота
heightfloat
Высота (м)
directionintrequired
Направление движения (0–360°)
speedfloat
Скорость (м/с)
drone_pointPointrequired
Координаты дрона в момент детекции
latfloatrequired
Широта дрона
longfloatrequired
Долгота дрона
heightfloat
Высота дрона (м)
{
"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

Фото детектируемого объекта.

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": 149.165
}
}