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_iduuidrequiredID миссии
paramsArray[Param]requiredМассив параметров. Значение value должно соответствовать указанному type
param_iduuidrequiredID параметра
namestrИмя параметра
typestrrequiredТип данных параметра
point— Координаты точкиfloat— Число с плавающей точкойboolean— Логическое значениеvalueMixedЗначение параметра
commandsArray[Command]requiredМассив команд для последовательного выполнения
command_iduuidrequiredID команды
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_idstrrequiredID целевой команды для переключения
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
Следующие топики находятся в разработке:
modecontrolramvideogimbal/controljoycontrol
Дрон → Сервер
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_iduuidrequiredID текущей миссии
command_iduuidrequiredID выполняемой команды
use_ai_videobooleanrequiredAI-видео активно
aimobjectЦель тарана
carintID целевого объекта
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Класс объекта
idintID объекта
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Класс объекта
idintID объекта
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_completedmission_receivedmission_cancelledmission_on_pauseconnection_qualityGimbal