Справочный центр Wialon

load

Чтобы загрузить события за указанный период в сессию для последующей обработки, используйте метод events/load.

После загрузки получите события с помощью метода events/get. Если вы передаете параметр selector в запросе events/load, выбранные события возвращаются в поле selector того же ответа, поэтому отдельный вызов events/get не требуется.

Конечная точка

Copied!
svc=events/load&params={"itemId":<long>,
            "ivalType":<int>,
            "timeFrom":<uint>,
            "timeTo":<uint>,
            "detectors":[
                {
                    "type":<text>,
                    "filter1":<long>
                },
                ...
            ],
            "selector":<object|array>,
            "measure":<uint>,
            "lang":<text>}

Параметры

Параметр Описание
itemId ID объекта. Для resource_drivers укажите ID ресурса.
ivalType Метод выбора временного интервала (см. ниже).
timeFrom Зависит от ivalType:
  • Для ivalType 1, 4, 5 или 6: начало интервала (время в формате UNIX).
  • Для ivalType 2 или 3: количество сообщений для загрузки.
timeTo Конец интервала (время в формате UNIX).
detectors Массив объектов детекторов, которые нужно загрузить. Каждый объект содержит type и filter1.
type Поле объекта детектора. Тип детектора событий.
filter1 Поле объекта детектора. Фильтр детектора. Для resource_drivers укажите ID водителя или 0, чтобы загрузить события всех водителей ресурса. Для детекторов на основе датчиков укажите ID датчика или 0, чтобы загрузить события всех датчиков этого типа. Для eco_driving укажите значение типа критерия (1 — ускорение, 2 — торможение, 3 — поворот, 4 — превышение скорости, 5 — датчик, 6 — плавность, 7 — холостой ход) или 0, чтобы загрузить все критерии.
selector Необязательный параметр. Фильтр, применяемый к событиям, загруженным этим запросом. Подходящие события возвращаются в объекте selector ответа, поэтому отдельный вызов events/get не требуется. Поддерживаемые форматы селектора см. в описании метода events/get.
measure Система измерений:
  • 0 — метрическая (SI);
  • 1 — американская;
  • 2 — имперская;
  • 3 — метрическая с галлонами.

Если параметр не указан, используется значение, заданное для текущей сессии (два младших бита параметра flags метода render/set_locale). Если в сессии значение не задано, используется значение 0.
lang Язык (двухбуквенный код, например en или es). Если параметр не указан, используется значение, заданное для текущей сессии (см. параметр language метода render/set_locale). Если в сессии значение не задано, используется значение en.

Метод выбора интервала (ivalType)

Значение Описание
1 Загружает сообщения от timeFrom до timeTo.
2 Загружает количество сообщений, указанное в timeFrom, начиная с timeTo.
3 Загружает количество сообщений, указанное в timeFrom, до timeTo.
4 Загружает сообщения от timeFrom до timeTo, а также одно сообщение до timeFrom.
5 Загружает сообщения от timeFrom до timeTo, а также одно сообщение после timeTo.
6 Загружает сообщения от timeFrom до timeTo, а также одно сообщение до timeFrom и одно после timeTo.

Возвращаемый результат

Если запрос выполнен успешно, ответ содержит количество загруженных событий для каждого детектора, запрошенного в detectors, и каждого связанного с детектором ID. Объект states содержит время обновления для каждого загруженного детектора. Объект selector содержит отфильтрованные результаты только в том случае, если вы передали необязательный параметр selector в запросе; в противном случае это пустой объект ({}).

Copied!
{
    "events": {
        "<detector_type>": {
            "<detector_specific_id>": <uint> /* количество загруженных событий */
        }
    },
    "states": {
        "<detector_type>": {
            "updateTime": <uint>,       /* время обновления детектора, время в формате UNIX */
          "recalc": <uint>            /* статус перерасчета: 0 — нет, 1 — в очереди, 2 — выполняется */
        }
    },
    "selector": { ... }
}

Если запрос не выполнен, возвращается код ошибки.

Поле recalc возвращается для каждого детектора в states, в том числе если его значение равно 0.

Коды ошибок

Код ошибки Описание
1 Недействительный или устаревший SID запроса.
4 Ошибка валидации параметров.
5 События отключены или инициализируются.
6 Не удалось загрузить события.
7 Сервис событий недоступен или отсутствует право доступа Запрос сообщений и отчетов.

Примеры

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

Загрузка событий рядом с запрошенным периодом

Значение ivalType 6 загружает сообщения за запрошенный период вместе с одним сообщением до timeFrom и одним сообщением после timeTo. Используйте его, когда событие может начаться до периода или закончиться после него. Например, если объект находится на стоянке несколько дней, событие стоянки начинается до запрошенного периода, и без дополнительного сообщения вы получите только его окончание.

Чтобы загрузить поездки объекта с ID 1001 за один день (с 1659474000 по 1659560400) вместе с поездкой до и поездкой после этого дня, используйте следующий запрос:

Copied!
svc=events/load&params={
  "itemId": 1001,
  "ivalType": 6,
  "timeFrom": 1659474000,
  "timeTo": 1659560400,
  "detectors": [
    {
      "type": "trips",
      "filter1": 0
    }
  ],
  "selector": {
    "type": "trips",
    "timeFrom": 1659387600,
    "timeTo": 1659646800,
    "detalization": 3
  },
  "measure": 0,
  "lang": "en"
}

Период в selector шире запрошенного периода на один день с каждой стороны. Это необходимо, потому что selector фильтрует события, которые уже загружены в сессию: если его период совпадает с запрошенным, сообщения до и после запрошенного периода загружаются, но соответствующие события не возвращаются в ответе. По той же причине значение detalization должно включать флаги всех типов событий, которые вам нужны.

Ответ
Copied!
{
  "events": {
    "trips": {
      "0": 5
    }
  },
  "states": {
    "trips": {
      "updateTime": 1659564000,
      "recalc": 0
    }
  },
  "selector": {
    "trips": {
      "0": [
        {
          "from": { "t": 1659470100, "y": 52.2297, "x": 21.0122 },
          "to": { "t": 1659475800, "y": 52.2370, "x": 21.0174 },
          "m": 1659475800,
          "f": 0,
          "state": 1,
          "max_speed": 74,
          "avg_speed": 41,
          "distance": 12480
        },
        ...
      ]
    }
  }
}

Первая поездка начинается в 1659470100, то есть до запрошенного периода. Набор полей соответствует значению detalization 3, которое объединяет флаги 0x1 и 0x2. Значение updateTime — это время обновления детектора, и оно может отличаться от timeTo запрошенного периода.

Загрузка событий из фиксированного количества сообщений

Значения ivalType 2 и 3 загружают фиксированное количество сообщений вместо периода. В этом случае параметр timeFrom содержит количество сообщений, а timeTo — время, от которого их нужно отсчитывать.

Чтобы загрузить события, построенные по последним 10 сообщениям детектора lls, зарегистрированным до 1659560400 для объекта с ID 1001, используйте следующий запрос:

Copied!
svc=events/load&params={
  "itemId": 1001,
  "ivalType": 3,
  "timeFrom": 10,
  "timeTo": 1659560400,
  "detectors": [
    {
      "type": "lls",
      "filter1": 0
    }
  ],
  "measure": 0,
  "lang": "en"
}

В запросе нет параметра selector, поэтому в ответе возвращаются количество загруженных событий и информация о состоянии детектора, но не сами данные событий. Чтобы получить события, используйте events/get.

Например, если у объекта есть один подходящий LLS-датчик, ответ может выглядеть так:

Copied!
{
  "events": {
    "lls": {
      "12345": 10 /* количество загруженных событий для датчика с ID 12345 */
    }
  },
  "states": {
    "lls": {
      "updateTime": 1659564000,
      "recalc": 0
    }
  },
  "selector": {}
}

Загрузка событий назначения водителей

Детектор resource_drivers регистрирует события ресурса, а не объекта. Чтобы загрузить события назначения всех водителей ресурса с ID 1003, укажите ID ресурса в itemId и задайте для filter1 значение 0. Чтобы загрузить события одного водителя, передайте ID водителя в filter1.

Используйте ivalType 4, чтобы загрузить данные за указанный период вместе с одним сообщением до timeFrom. Это может помочь восстановить назначение, которое началось до запрошенного периода и продолжается в его пределах. Остальные варианты см. в разделе Метод выбора интервала (ivalType).

Copied!
svc=events/load&params={
  "itemId": 1003,
  "ivalType": 4,
  "timeFrom": 1672524000,
  "timeTo": 1672610400,
  "detectors": [
    {
      "type": "resource_drivers",
      "filter1": 0
    }
  ]
}

Чтобы получить загруженные события в том же запросе, добавьте необязательный параметр selector. В следующем примере поле expr задает произвольный интервал в формате <start>-<end>, и возвращаются только события, которые пересекаются с этим интервалом. Значения timeFrom и timeTo селектора ограничивают период, из которого выбираются загруженные события, а detalization 3 возвращает основные данные события (0x1) и данные, специфичные для детектора (0x2).

Copied!
svc=events/load&params={
  "itemId": 1003,
  "ivalType": 4,
  "timeFrom": 1672524000,
  "timeTo": 1672610400,
  "detectors": [
    {
      "type": "resource_drivers",
      "filter1": 0
    }
  ],
  "selector": {
    "expr": "1672524022-1672524040",
    "timeFrom": 1672524000,
    "timeTo": 1672610400,
    "detalization": 3
  }
}

Структуру возвращаемых событий см. в описании resource_drivers на странице events/get.

Если вы заметили ошибку в тексте, пожалуйста, выделите её и нажмите Ctrl+Enter.