API - Получение данных для графика — различия между версиями

Материал из WebHMI Wiki
Перейти к: навигация, поиск
 
(не показаны 4 промежуточные версии 2 участников)
Строка 1: Строка 1:
 +
<languages/>
 +
<translate>
 +
<!--T:1-->
 
Для получения данных из лога графиков необходимо выполнить GET-запрос на URL вида '''http://192.168.1.1/api/graph-data/2'''. Здесь 2 - это ID нужного графика.
 
Для получения данных из лога графиков необходимо выполнить GET-запрос на URL вида '''http://192.168.1.1/api/graph-data/2'''. Здесь 2 - это ID нужного графика.
  
 +
<!--T:2-->
 
Также, вместо указания ID графика можно передать заголовок X-WH-REGS. В нем указываются через запятую ID регистров, данные для которых необходимо извлечь. Пример:
 
Также, вместо указания ID графика можно передать заголовок X-WH-REGS. В нем указываются через запятую ID регистров, данные для которых необходимо извлечь. Пример:
 
<pre>
 
<pre>
Строка 6: Строка 10:
 
</pre>
 
</pre>
  
 +
 +
'''Начиная с прошивки версии 3.3 вместо заголовка X-WH-REGS следует использовать заголовок X-WH-REGISTERS.'''
 +
 +
<!--T:3-->
 
В заголовках запроса необходимо передать API key, границы интересуещего временного интервала (X-WH-START, X-WH-END) и количество значений (X-WH-SLICES).  X-WH-START и X-WH-END передаются в формате UnixTime. Например:
 
В заголовках запроса необходимо передать API key, границы интересуещего временного интервала (X-WH-START, X-WH-END) и количество значений (X-WH-SLICES).  X-WH-START и X-WH-END передаются в формате UnixTime. Например:
 
<pre>
 
<pre>
Строка 14: Строка 22:
 
</pre>
 
</pre>
  
 +
<!--T:4-->
 
X-WH-SLICES - это количество значений. Временной интервал X-WH-START - X-WH-END будет разбит на X-WH-SLICES одинаковых промежутков и система возьмет наиболее детализированные значения для каждого из них.<br>
 
X-WH-SLICES - это количество значений. Временной интервал X-WH-START - X-WH-END будет разбит на X-WH-SLICES одинаковых промежутков и система возьмет наиболее детализированные значения для каждого из них.<br>
 
X-WH-SLICES нужно выбирать исходя из необходимой детализации графика. Так, если необходимо построить график шириной 800 пикселов то нет смысла выбирать более 800 значений из лога. А иногда будет достаточно и 200-400 значений в зависимости от ширины линии на графике.  
 
X-WH-SLICES нужно выбирать исходя из необходимой детализации графика. Так, если необходимо построить график шириной 800 пикселов то нет смысла выбирать более 800 значений из лога. А иногда будет достаточно и 200-400 значений в зависимости от ширины линии на графике.  
  
 +
<!--T:5-->
 
Для ускорения работы система может хранить предварительно усредненные значения регистров для различных интервалов (1 минута, 2 минуты, 5 минут, 15 минут, 1 час). В настройке каждого регистра можно указать необходимую детализацию хранимых данных.
 
Для ускорения работы система может хранить предварительно усредненные значения регистров для различных интервалов (1 минута, 2 минуты, 5 минут, 15 минут, 1 час). В настройке каждого регистра можно указать необходимую детализацию хранимых данных.
 
В зависимости от выбранного интервала времени и количества значений система будет пытаться взять данные из максимально подходящей таблицы усредненных значений. или же из лога регистров (если он включен для заданного регистра)  
 
В зависимости от выбранного интервала времени и количества значений система будет пытаться взять данные из максимально подходящей таблицы усредненных значений. или же из лога регистров (если он включен для заданного регистра)  
  
 +
<!--T:6-->
 
Также в заголовках необходимо указать желаемый формат обмена данными. Сейчас поддерживатеся работа только с форматом [https://ru.wikipedia.org/wiki/JSON JSON].
 
Также в заголовках необходимо указать желаемый формат обмена данными. Сейчас поддерживатеся работа только с форматом [https://ru.wikipedia.org/wiki/JSON JSON].
 
<pre>
 
<pre>
Строка 27: Строка 38:
 
----
 
----
  
 +
<!--T:7-->
 
Пример запроса данных о графике номер 1:
 
Пример запроса данных о графике номер 1:
  
 +
<!--T:8-->
 
'''URL''': http://192.168.1.1/api/graph-data/1<br>
 
'''URL''': http://192.168.1.1/api/graph-data/1<br>
 
'''Method''': GET
 
'''Method''': GET
  
 +
<!--T:9-->
 
Заголовки:
 
Заголовки:
 
<pre>
 
<pre>
Строка 43: Строка 57:
 
</pre>
 
</pre>
  
 +
<!--T:10-->
 
Пример ответа:
 
Пример ответа:
 
<pre>
 
<pre>
Строка 194: Строка 209:
 
----
 
----
  
 +
<!--T:11-->
 
Структура возвращаемых данный следующая. Возвращается массив объектов. В каждом объекте есть атрибут "x" - это временная метка данной записи. Формат времени - UnixTime умноженный на 1000 (размерность - миллисекудны).<br>
 
Структура возвращаемых данный следующая. Возвращается массив объектов. В каждом объекте есть атрибут "x" - это временная метка данной записи. Формат времени - UnixTime умноженный на 1000 (размерность - миллисекудны).<br>
 
Также в этом объекте есть атрибуты со значениями для каждого регистра. Имя атрибута - это ID регистра. Значение атрибута - это строка где через точку с запятой объединены минимальное, среднее и максимальное значение регистра на этом интервале. Например, "0.000000;0.755068;1.176932" означает что регистр принимал значения от 0 до 1.176932, при этом его среднее арифметическое было 0.755068. Если же в данном промежутке нет данных о значении данного регистра то система будет возвращать  "NaN;NaN;NaN".
 
Также в этом объекте есть атрибуты со значениями для каждого регистра. Имя атрибута - это ID регистра. Значение атрибута - это строка где через точку с запятой объединены минимальное, среднее и максимальное значение регистра на этом интервале. Например, "0.000000;0.755068;1.176932" означает что регистр принимал значения от 0 до 1.176932, при этом его среднее арифметическое было 0.755068. Если же в данном промежутке нет данных о значении данного регистра то система будет возвращать  "NaN;NaN;NaN".
 +
</translate>

Текущая версия на 11:49, 3 декабря 2018

Другие языки:
English • ‎русский

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

Также, вместо указания ID графика можно передать заголовок X-WH-REGS. В нем указываются через запятую ID регистров, данные для которых необходимо извлечь. Пример:

X-WH-REGS: 23,12,4


Начиная с прошивки версии 3.3 вместо заголовка X-WH-REGS следует использовать заголовок X-WH-REGISTERS.

В заголовках запроса необходимо передать API key, границы интересуещего временного интервала (X-WH-START, X-WH-END) и количество значений (X-WH-SLICES). X-WH-START и X-WH-END передаются в формате UnixTime. Например:

X-WH-APIKEY: F3C74230818DA487BB2017CE5D0290F4DABCAFD7
X-WH-START: 1422797440
X-WH-END: 1422997405
X-WH-SLICES: 300

X-WH-SLICES - это количество значений. Временной интервал X-WH-START - X-WH-END будет разбит на X-WH-SLICES одинаковых промежутков и система возьмет наиболее детализированные значения для каждого из них.
X-WH-SLICES нужно выбирать исходя из необходимой детализации графика. Так, если необходимо построить график шириной 800 пикселов то нет смысла выбирать более 800 значений из лога. А иногда будет достаточно и 200-400 значений в зависимости от ширины линии на графике.

Для ускорения работы система может хранить предварительно усредненные значения регистров для различных интервалов (1 минута, 2 минуты, 5 минут, 15 минут, 1 час). В настройке каждого регистра можно указать необходимую детализацию хранимых данных. В зависимости от выбранного интервала времени и количества значений система будет пытаться взять данные из максимально подходящей таблицы усредненных значений. или же из лога регистров (если он включен для заданного регистра)

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

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

Пример запроса данных о графике номер 1:

URL: http://192.168.1.1/api/graph-data/1
Method: GET

Заголовки:

Accept: application/json
Content-Type: application/json
Accept-Encoding: gzip, deflate, sdch
X-WH-APIKEY: F3C74230818DA487BB2017CE5D0290F4DABCAFD7
X-WH-START: 1422854081
X-WH-END: 1422856235
X-WH-SLICES: 20

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

[
  {
    "8": "NaN;NaN;NaN",
    "10": "NaN;NaN;NaN",
    "16": "NaN;NaN;NaN",
    "x": 1422861065000
  },
  {
    "8": "NaN;NaN;NaN",
    "10": "NaN;NaN;NaN",
    "16": "NaN;NaN;NaN",
    "x": 1422861173000
  },
  {
    "8": "NaN;NaN;NaN",
    "10": "NaN;NaN;NaN",
    "16": "NaN;NaN;NaN",
    "x": 1422861281000
  },
  {
    "8": "NaN;NaN;NaN",
    "10": "NaN;NaN;NaN",
    "16": "NaN;NaN;NaN",
    "x": 1422861388000
  },
  {
    "8": "0.000000;9.292714;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.674894;1.000000",
    "x": 1422861496000
  },
  {
    "8": "0.000000;9.489933;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.742101;1.000000",
    "x": 1422861604000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.747650;1.176471",
    "x": 1422861711000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.748471;1.176471",
    "x": 1422861819000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.746659;1.176701",
    "x": 1422861927000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.755068;1.176932",
    "x": 1422862034000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.741844;1.000000",
    "x": 1422862142000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.740291;1.000000",
    "x": 1422862250000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.756320;1.176701",
    "x": 1422862358000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.746004;1.176471",
    "x": 1422862465000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.754233;1.176932",
    "x": 1422862573000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.740343;1.000000",
    "x": 1422862681000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.751393;1.176932",
    "x": 1422862788000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.750868;1.176932",
    "x": 1422862896000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.745956;1.176701",
    "x": 1422863004000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.758306;1.176932",
    "x": 1422863111000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.741780;1.000000",
    "x": 1422863219000
  },
  {
    "8": "0.000000;9.500000;19.000000",
    "10": "NaN;NaN;NaN",
    "16": "0.000000;0.741780;1.000000",
    "x": 1422863327000
  },
  {
    "8": "NaN;NaN;NaN",
    "10": "NaN;NaN;NaN",
    "16": "NaN;NaN;NaN",
    "x": 1422863435000
  },
  {
    "8": "NaN;NaN;NaN",
    "10": "NaN;NaN;NaN",
    "16": "NaN;NaN;NaN",
    "x": 1422863542000
  }
]

Структура возвращаемых данный следующая. Возвращается массив объектов. В каждом объекте есть атрибут "x" - это временная метка данной записи. Формат времени - UnixTime умноженный на 1000 (размерность - миллисекудны).
Также в этом объекте есть атрибуты со значениями для каждого регистра. Имя атрибута - это ID регистра. Значение атрибута - это строка где через точку с запятой объединены минимальное, среднее и максимальное значение регистра на этом интервале. Например, "0.000000;0.755068;1.176932" означает что регистр принимал значения от 0 до 1.176932, при этом его среднее арифметическое было 0.755068. Если же в данном промежутке нет данных о значении данного регистра то система будет возвращать "NaN;NaN;NaN".