Для того, чтобы получить значения датчиков, нужно использовать команду unit/calc_sensors:
svc=unit/calc_sensors¶ms={"source": <text>, "indexFrom":<uint>, "indexTo":<uint>, "unitId":<long>, "sensorId":<long>, "width":<uint>}
Название | Описание |
---|---|
source | источник сообщений - название слоя треков, если пусто, то будет использоваться messages loader в качестве источника |
indexFrom | индекс первого сообщения |
indexTo | индекс последнего сообщения |
unitId | ID объекта |
sensorId | ID датчика, если 0 возвращает все датчики |
width | количество элементов, которые должны вернуться, используется агрегирование (см. ниже), опциональный |
Когда нужно получить фиксированное количество значений датчика, причем уже агрегированныx (т.е. предобработанныx), тогда следует использовать параметр width. Например, можно получать обработанные данные для создания и зума графика.
Логика работы функциональности следующая:
1. система находит все сообщения, попавшие в запрашиваемый интервал;
2. затем делит весь интервал на width подинтервалов;
3. на каждом таком подинтервале система находит самое первое значение датчика (left), последнее значение (right), минимальное значение (bottom) и максимальное значение (top). Указанные данные попадут в финальный ответ сервера.
[ /* массив данных из сообщений */ { /* значения датчика(ов) из одного сообщения */ <text>:<double|text>, /* ID датчика: значение датчика */ ... } ]
Если указан параметр width, то ответ будет таким:
[ [ { "name":<sensor_name>, "data":[ { "left":[<unix_time1>,<value1>], "right":[<unix_time2>,<value2>], "bottom":[<unix_time3>,<value3>], "top":[<unix_time4>,<value4>] }, ... ] }, ... ] ]
где <sensor_name> – имя датчика,
<unix_timeN> – UNIX-время сообщения,
valueN – значение датчика в сообщении,
left – начальное значение датчика в подинтервале и его время,
right – конечное значение датчика и время,
bottom – наименьшее значение датчика и время,
top – наибольшее значение датчика и время.
|