Управление логикой объектов

В системе Rightech есть возможность задать гибкую логику поведения объекта в системе. Логика задаётся в нотации конечных автоматов в интерфейсе Rightech IoT.

Получение списка шаблонов логики

Список предопределённых сценариев логики, доступных для пользователя, можно получить через GET /api/v1/automatons.

Запрос

GET /api/v1/automatons HTTP/1.1
Content-Type: application/json

Ответ

HTTP/1.1 200 OK
Content-Type: application/json

[{
    "_id": "5706577a597b380100f93980",
    "name": "Контроль скорости объекта в геозоне"
}]

Создание нового контейнера логики

После принятия решения о запуске сценария логики на отдельном объекте необходимо предварительно создать новый контейнер. Контейнер - изолированное окружение для интерпретации отдельного сценария.

Параметр Тип Описание
id ObjectId, обязательный Идентификатор объекта
container_id string, необязательный Идентификатор контейнера, будет сгенерирован при отсутствии

Запрос

POST /api/v1/objects/:id/containers/:container_id HTTP/1.1
Content-Type: application/json

Ответ

HTTP/1.1 200 OK
Content-Type: application/json

{
    "container" : "NEW_CONTAINER_ID"
    "success"   : true
}

Удаление контейнера логики

Для удаления ранее созданного контейнера необходимо отправить запрос:

Запрос

Параметр Тип Описание
id ObjectId, обязательный Идентификатор объекта
container_id string, обязательный Идентификатор контейнера
DELETE /api/v1/objects/:id/containers/:container_id HTTP/1.1
Content-Type: application/json

Ответ

HTTP/1.1 200 OK
Content-Type: application/json

{
    "success": true
}

Получение списка контейнеров логики объекта

В любой момент времени существует возможность запросить список запущенных для объекта контейнеров со статусом исполнения.

Запрос

GET /api/v1/objects/:id/containers HTTP/1.1
Content-Type: application/json

Ответ

HTTP/1.1 200 OK
Content-Type: application/json

{
  "object_id": {
    "container-1": true,
    "container-2": false,
    "container-3": true,
  },
  "success": true
}

Запуск выполнения логики в контейнере

После выбора сценария логики и создания контейнера под него возможен непосредственный запуск сценария.

Запрос

Параметр Тип Описание
id ObjectId, обязательный Идентификатор объекта
container_id string, обязательный Идентификатор контейнера

Тело запроса

Параметр Тип Описание
automaton ObjectId, обязательный Идентификатор шаблона логики
POST /api/v1/objects/:id/containers/:container_id/start HTTP/1.1
Content-Type: application/json

{
    "automaton": "58238a935baa56173b24f0e4",
}

Ответ

HTTP/1.1 200 OK
Content-Type: application/json

{
    "success": true
}

Остановка выполнения логики в контейнере

Остановка выполнения сценария осуществляется при помощи следующего метода. При этом контейнер в котором была ранее запущена логика остаётся.

Запрос

Параметр Тип Описание
id ObjectId, обязательный Идентификатор объекта
container_id string, обязательный Идентификатор контейнера
POST /api/v1/objects/:id/containers/:container_id/stop HTTP/1.1
Content-Type: application/json

Ответ

HTTP/1.1 200 OK
Content-Type: application/json

{
    "success": true
}

Отправка события в контейнер

Существует возможность ручной отправки события в контейнер логики. Для этого в теле запроса необходимо передать идентификатор события, узнаваемый сценарием.

Отправка события для всех контейнеров объекта сразу осуществляется аналогично через метод POST /api/v1/objects/:id/emit.

Запрос

Параметр Тип Описание
id ObjectId, обязательный Идентификатор объекта
container_id string, необязательный Идентификатор контейнера

Тело запроса

Параметр Тип Описание
event string, обязательный Идентификатор события
POST /api/v1/objects/:id/containers/:container_id/emit HTTP/1.1
Content-Type: application/json

{
    "event": "custom-user-event",
}

Ответ

HTTP/1.1 200 OK
Content-Type: application/json

{
    "success": true
}