Skip to content

Instantly share code, notes, and snippets.

@okalachev
Created January 25, 2018 10:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save okalachev/e0876b359b96d378f941299c7c76c48f to your computer and use it in GitHub Desktop.
Save okalachev/e0876b359b96d378f941299c7c76c48f to your computer and use it in GitHub Desktop.

Архитектура API CoexHub

Терминология

Это есть:

Drone — девайc, подключенный к CoexHub. Коптер, зарядная станция, либо еще что-нибудь.

Drone_type — тип (модель) девайса. Pyramid — дрон, который садится в зарядную станцию, Clever — клевер, charging_station — зарядная станция, и т д.

State — текущее состояние дрона, json (местоположение, скорости, заряд батареи и т. д.). Обновляется 1-2 раза в секунду у включенных дронов. Все стейты дронов сохраняются в табличку истории стейтов при соблюдении некоторых условий (для коптера сохраняются только стейты, когда он летит).

Command — команда для дрона, например, открыть/закрыть крышку для зарядной станции, запуск/вернись на базу/экстренно сядь и т. д. для коптеров. У команды могут параметры, json. Например: мощность свечения прожектора на зарядной станции. Фронтенд знает, какие есть команды для каких юзкейсов.

Это будет:

Usecase — тип применения дрона (мониторинг, поиск людей, охрана, доставка грузов и т. д.). Определяет каким образом нужно собирать json Mission. Также может оказывать влияние на какие-то конкретные мелочи в интерфейсе.

Mission — текущая конфигурация задачи коптера в рамках конкретного юзкейса, json. Интерфейс знает, как собирать этот json для каждого из юзкейсов. В Mission указаны параметры задачи коптера (расписание полетов, настройки полетов, маршруты полетов и т. д.). Mission есть в стейте дрона — это те настройки, про которые сейчас знает коптер. Также Mission существует, как отдельное поле у дрона — это те настройки, которые сохранил бэкенд, но пока не отправил коптеру (в случае, если он офлайн).

При изменение настроек миссии дрона, Фронтенд отсылает новый json миссии бэкенду либо через команду, либо на отдельную ручку (надо решить). Если дрон принял новую миссию (он онлайн, миссия корректна), она появляется в его State. Если не принял, то только в {Объект дрона}.mission, но не в {Объект дрона}.state.mission.

Ручки

  • Получить текущий (последний) стейт дрона (если нет доступа — 403)
  • Получить текущие (последние) стейты всех дронов, доступных пользователю
  • Получить все сохраненные стейты дрона
  • Запостить команду для дрона (с параметрами или без)
  • To be continued...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment