Объекты контроля

Работа в системе Rightech организована вокруг объектов контроля. Они являются представлением объектов реального мира, над которыми осуществляется мониторинг и управление.

Типовое описание объекта контроля:

interface Object {
    _id      : String;  /* Внутренний   идентификатор в системе */
    id       : String;  /* Идентификатор объекта  */
    model    : String;  /* Идентификатор модели 
            (виртуального представления) объекта контроля */
    status   : String;  /* Текстовый статус объекта */
    state    : Packet;  /* Последний пакет данных */
}

Помимо глобального идентификатора _id, определён текстовый/числовой идентификатор id , используемый для связи с внешними системами передачи данных.

Пакет данных объекта не фиксирован и определяется в зависимости от модели устройства. Минимальным набором параметров является: идентификатор и время регистрации.

interface MinPacket {
    _id     : String;    /* Идентификатор пакета */
    _ts     : Number;    /* Идентификатор пакета */
    time    : Number;    /* Время получения */
    online  : Boolean;
}

interface Packet extends MinPacket {
    lat     : Number;  /* Широта */
    lon     : Number;  /* Долгота */
    
    height  : Number,  /* Высота над уровнем моря в метрах */
    angle   : Number,  /* Угол поворота в градусах */
    speed   : Number;  /* Мгновенная cкорость в км/ч */

}

Создание объекта

Для регистрации нового объекта контроля в системе необходимо отправить запрос POST /api/v1/objects с указанием желаемых полей. Обязательными полями являются id и name;

Запрос

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

{ 
  "id":"SOME_OBJECT_ID", 
  "name":"Some api added object",
}

Ответ

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

{
  "_id": "5823ae8540b25fde6ceef168",
  "id":"SOME_OBJECT_ID", 
  "name":"Some api added object",
  "owner": "566a9790ef194a6b0ff43419",
  "group": "55a6442820f1c1e51270158b",
  "success": true
}

Получение списка

Для запроса списка ранее созданных объектов, а так же объектов определённых пользователю в доступ необходимо отправить запрос GET /api/v1/objects.

Запрос

GET /api/v1/objects HTTP/1.1

Ответ

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

[{
  "_id": "5823ae8540b25fde6ceef168",
  "id" : "SOME_OBJECT_ID",
  "name": "Some api added object"
}]

Получение журнала данных от объекта

С данным интерфейсом (/api/v1/objects/:id/packets) можно работать как со списком объектов.

Получение журнала

Получение данных из журнала поддерживает следующие параметры: begin - нижняя граница интервала времени, end - верхняя граница временного интервала.

Запрос

GET /api/v1/objects/:id/packets?begin=1430000000000&end=1440000000000 HTTP/1.1

Отправка комманд

События WebSocket

object-packet

Событие возникает при поступлении нового пакета от устройства. Формат пакета аналогичен ранее описанному.

object-update

Событие возникает при обновлении одного из полей объекта контроля.

interface ObjectUpdateMessage {
  id     : String; /* Идентификатор объекта */
  before : Object; /* Набор полей до изменения */
  after  : Object; /* Набор полей после изменения */
}

Пример

{
  id: "55cefff8e803589a52ec11d0", 
  before: {name: "object name"}, 
  after: {name: "new object name"}
}