API - Список событий

Материал из WebHMI Wiki
Перейти к: навигация, поиск

Для получения списка всех событий необходимо выполнить GET-запрос на URL вида http://192.168.1.1/api/events.

Для получения информации о конкретном событии необходимо выполнить GET-запрос на URL вида http://192.168.1.1/api/events/1. Здесь 1 - это ID нужного события.

В заголовках запроса необходимо передать API key. Например:

X-WH-APIKEY: F3C74230818DA487BB2017CE5D0290F4DABCAFD7

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

Accept: application/json
Content-Type: application/json


Пример запроса списка всех событий:

URL: http://192.168.1.1/api/events
Method: GET

Заголовки:

Accept: application/json
Content-Type: application/json
Accept-Encoding: gzip, deflate, sdch
X-WH-APIKEY: F3C74230818DA487BB2017CE5D0290F4DABCAFD7

Пример ответа:

[
  {
    "id": "2",
    "title": "Интервал",
    "hasDuration": "1",
    "start": "<xml xmlns=\"http://www.w3.org/1999/xhtml\"><block type=\"wh_rules\" id=\"1\" inline=\"false\" deletable=\"false\" x=\"-499\" y=\"14\"><value name=\"IF\"><block type=\"logic_compare\" id=\"2\" inline=\"true\"><field name=\"OP\">EQ</field><value name=\"A\"><block type=\"wh_reg\" id=\"3\"><field name=\"REG\">8</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"4\"><field name=\"NUM\">5</field></block></value></block></value></block></xml>",
    "end": "<xml xmlns=\"http://www.w3.org/1999/xhtml\"><block type=\"wh_rules\" id=\"1\" inline=\"false\" deletable=\"false\" x=\"-596\" y=\"16\"><value name=\"IF\"><block type=\"logic_compare\" id=\"2\" inline=\"true\"><field name=\"OP\">EQ</field><value name=\"A\"><block type=\"wh_reg\" id=\"3\"><field name=\"REG\">8</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"4\"><field name=\"NUM\">10</field></block></value></block></value></block></xml>",
    "hasEndCondition": "1",
    "saveToLog": "1",
    "report_title": "Отчет \"интервал\"",
    "report_menu_title": "Интервал",
    "extra_regs": "-1^last^^Y-m-d H:i:s|2^last^^Y-m-d H:i:s",
    "color": "#ff0000",
    "savetologtype": "0",
    "loginterval": "",
    "parentid": "0",
    "showontimeline": "0",
    "description": ""
  },
  {
    "id": "3",
    "title": "Нажата кнопка А",
    "hasDuration": "1",
    "start": "<xml xmlns=\"http://www.w3.org/1999/xhtml\"><block type=\"wh_rules\" id=\"1\" inline=\"false\" deletable=\"false\" x=\"-613\" y=\"10\"><value name=\"IF\"><block type=\"logic_compare\" id=\"2\" inline=\"true\"><field name=\"OP\">EQ</field><value name=\"A\"><block type=\"wh_reg\" id=\"4\"><field name=\"REG\">2</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"11\"><field name=\"NUM\">1</field></block></value></block></value></block></xml>",
    "end": "<xml xmlns=\"http://www.w3.org/1999/xhtml\"><block type=\"wh_rules\" id=\"1\" inline=\"false\" deletable=\"false\" x=\"10\" y=\"10\"><value name=\"IF\"><block type=\"logic_compare\" id=\"2\" inline=\"true\"><field name=\"OP\">EQ</field></block></value></block></xml>",
    "hasEndCondition": "0",
    "saveToLog": "1",
    "report_title": "Нажатие кнопки А",
    "report_menu_title": "Кнопка А",
    "extra_regs": "-1^last^^Y-m-d H:i:s|-2^last^^Y-m-d H:i:s",
    "color": "#0084ff",
    "savetologtype": "0",
    "loginterval": "",
    "parentid": "0",
    "showontimeline": "1",
    "description": "Событие срабатывает при нажатии на кнопку А"
  }
]


Пример запроса информации о событии номер 2:

URL: http://192.168.1.1/api/events/2
Method: GET

Заголовки:

Accept: application/json
Content-Type: application/json
Accept-Encoding: gzip, deflate, sdch
X-WH-APIKEY: F3C74230818DA487BB2017CE5D0290F4DABCAFD7

Пример ответа:

{
  "id": "2",
  "title": "Интервал",
  "hasDuration": "1",
  "start": "<xml xmlns=\"http://www.w3.org/1999/xhtml\"><block type=\"wh_rules\" id=\"1\" inline=\"false\" deletable=\"false\" x=\"-499\" y=\"14\"><value name=\"IF\"><block type=\"logic_compare\" id=\"2\" inline=\"true\"><field name=\"OP\">EQ</field><value name=\"A\"><block type=\"wh_reg\" id=\"3\"><field name=\"REG\">8</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"4\"><field name=\"NUM\">5</field></block></value></block></value></block></xml>",
  "end": "<xml xmlns=\"http://www.w3.org/1999/xhtml\"><block type=\"wh_rules\" id=\"1\" inline=\"false\" deletable=\"false\" x=\"-596\" y=\"16\"><value name=\"IF\"><block type=\"logic_compare\" id=\"2\" inline=\"true\"><field name=\"OP\">EQ</field><value name=\"A\"><block type=\"wh_reg\" id=\"3\"><field name=\"REG\">8</field></block></value><value name=\"B\"><block type=\"math_number\" id=\"4\"><field name=\"NUM\">10</field></block></value></block></value></block></xml>",
  "hasEndCondition": "1",
  "saveToLog": "1",
  "report_title": "Отчет \"интервал\"",
  "report_menu_title": "Интервал",
  "extra_regs": "-1^last^^Y-m-d H:i:s|2^last^^Y-m-d H:i:s",
  "color": "#ff0000",
  "savetologtype": "0",
  "loginterval": "",
  "parentid": "0",
  "showontimeline": "0",
  "description": ""
}


Атрибуты события:

idintУникальный идентификатор события
titlestringНазвание события
hasDurationstring0 = событие срабатывает при каждом выполнении условия, 1 = событие имеет продолжительность во времени
startstringУсловие начала события
endstringУсловие окончания события
hasEndConditionint0 = у события нет условия его окончания, 1 = у события есть условие его окончания
saveToLogint0 = не сохранять событие в лог, 1 = сохранять событие в лог
report_titlestringЗаголовок отчета о событии
report_menu_titlestringЗаголов пункта меню для отчета о событии
extra_regsstringСписок дополнительных регистров для сохранения в лог события.
colorstringЦвет для отображения события на TimeLine
savetologtypeint0 = сохранять данные в лог один раз для события, 1 = сохранять данные в лог каждые Х секунд
logintervalintИнтервал сохранения данных в лог, секунды
parentidintИдентификатор родительского события. Дочернее событие может выполнятся только когда выполняется родительское событие.
showontimelineint0 = не отображать событие на TimeLine, 1 = отображать событие на TimeLine
descriptionstringКомментарии с описание события. Предназначены для операторов и пользователей системы.


Формат поля extra_regs:

Информация о дополнительных регистрах собрана в одну строку. Запись о каждом регистре разделена символом водопровода "|".
Запись о каждом регистре состоит из 4-х полей, разделенных символом "^". Поля в записи о регистре такие: идентификатор регистра, тип записываемого значения, название регистра, формат времени и даты.

Идентификатор регистра может быть положительным и отрицательным. Положительные идентификаторы означают ID регистров. Отрицательные идентифкаторы - это специальные значения которые относятся к самому событию.
-1 = Start time - время когда началось событие
-2 = End time - время когда событие закончилось
-3 = Last update time - последнее время когда событие было обновлено в базе данных. Длинные события система перезаписывает в базу данных каждые 5 секунд что бы в случае любого сбоя или выключения питания информация о событии не пропала.

Тип записываемого значения:
first = первое значение регистра за время выполнения события
last = последнее значение регистра за время выполнения события
min = минимальное значение регистра за время выполнения события
max = максимальное значение регистра за время выполнения события
avg = среднее значение регистра за время выполнения события

Название регистра по умолчанию берется из информации о регистре. Если же в записи указано не пустое название то именно оно и будет отбражаться в качестве названия этого сохраненного регистра в событии.

Формат времени и даты имеет смысл только для регистров со временем. Формат указывается в формате [функции date] языка PHP.

Пример:

-1^last^^Y-m-d H:i:s|2^last^Рецепт^Y-m-d H:i:s

Здесь описаны 2 дополнительные регистра:
-1^last^^Y-m-d H:i:s
и
2^last^^Y-m-d H:i:s


-1^last^^Y-m-d H:i:s означает: Сохранять время начала события, отображать его в формате Y-m-d H:i:s

2^last^Рецепт^Y-m-d H:i:s означает: Сохранять последнее значение регистра с ID=2, его название в отчете будет Рецепт, и если это регистр не типа unixtime то формат времени и даты не будет использован