Skip to main content

API Server-Drone v1.1

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

Протокол: MQTT
Формат данных: JSON
Дата: 17.12.2024

Типы данных

Point

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

Position

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

Сервер → Дрон

get_mission

  • MQTT Topic: {DRONE_ID}_get_mission
  • Content-Type: application/json

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

mission_iduuidrequired
ID миссии
paramsArray[Param]required
Массив параметров. Значение value должно соответствовать указанному type
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]
Массив триггеров. condition: разрешены символы 0–9, a–Z, ^/*+-()&|, =!<>, пробелы, _. Запрещены ключевые слова: if, else, elif, for, while, def, class
conditionstrrequired
Условие переключения. Используются переменные из params
command_idstrrequired
ID целевой команды для переключения
priorityintrequired
Приоритет триггера. Меньшее значение — более высокий приоритет
{
"mission_id": "0193909e-e71c-7b38-8ed7-ab4d7aed7e1c",
"params": [
{
"param_id": "01938ba2-0873-785c-9311-d1f8050b7f19",
"name": "init_point",
"type": "point",
"value": {
"lat": 54.235,
"long": 43.435
}
},
{
"param_id": "03938ba2-0873-785c-9311-d1f8050b7f19",
"name": "speed",
"type": "float",
"value": 5.0
},
{
"param_id": "11938ba2-0873-785c-9311-d1f8050b7f19",
"name": "realtime_stream",
"type": "boolean",
"value": true
}
],
"commands": [
{
"command_id": "0193909e-e71c-7b38-8ed7-ab4d7aed7e1c",
"command_type": "move_to",
"points": [
{
"lat": 54.275,
"long": 43.565
},
{
"lat": 76.275,
"long": 54.565,
"height": 2.75
}
],
"params": [
{
"name": "speed",
"value": 5
}
]
}
],
"triggers": [
{
"condition": "93e5e50e-827f-46a3-a457-9a87b5bc0391 == True",
"command_id": "018e9dfa-f54a-7b54-b897-9a730ea20782",
"priority": 0
}
]
}

cancel_mission

  • MQTT Topic: {DRONE_ID}_cancel_mission

Завершение миссии полёта дрона.

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

change_realtime_stream

  • MQTT Topic: {DRONE_ID}_change_realtime_stream

Управление видеопотоком с дрона.

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

pause_mission

  • MQTT Topic: {DRONE_ID}_pause_mission

Постановка дрона на паузу во время миссии.

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

Топики в разработке

note

Следующие топики находятся в разработке:

  • modecontrol
  • ram
  • video
  • gimbal/control
  • joycontrol

Дрон → Сервер

data

  • MQTT Topic: {DRONE_ID}_data

Телеметрия дрона. Отправляется по MQTT (в v1.1 — не HTTP POST).

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-видео активно
aimobject
Цель тарана
carint
ID целевого объекта
use_hand_modebooleanrequired
Ручной режим управления активен
{
"topic": "10001_data",
"message": {
"position": {
"point": {
"lat": 59.939,
"long": 149.182,
"height": 200
},
"direction": 90,
"speed": 100
},
"battery_level": 100,
"heading": 318,
"status": "mission accomplishment",
"mission_id": "01939ba1-fd8a-7ed4-acb1-35791c03c70d",
"command_id": "0193909e-e71c-7b38-8ed7-ab4d7aed7e1c",
"use_ai_video": false,
"aim": {
"car": 1001
},
"use_hand_mode": false
}
}

objects_data

  • MQTT Topic: {DRONE_ID}_objects_data

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

namestrrequired
Класс объекта
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": "2024-12-17T14:30:00",
"position": {
"point": {
"lat": 59.9397889,
"long": 149.18209,
"height": 200
},
"direction": 90,
"speed": 60
},
"drone_point": {
"lat": 59.939,
"long": 149.182
}
}
}

photo

  • MQTT Topic: {DRONE_ID}_photo

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

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

Топики в разработке

note

Следующие топики находятся в разработке:

  • mission_completed
  • mission_received
  • mission_cancelled
  • mission_on_pause
  • connection_quality
  • Gimbal