Для того, чтобы получить значения датчиков, нужно использовать команду 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 | количество элементов, которые должны вернуться, используется агрегирование (см. ниже), опционально |
Если source НЕ указан, сообщения будут браться прямо из message loader.
Когда нужно получить фиксированное количество значений датчика, причем уже агрегированны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 – наибольшее значение датчика и время.