Чтобы создавать, изменять и удалять датчики, нужно использовать команду unit/update_sensor:
svc=unit/update_sensor¶ms={"itemId":<long>, "id":<long>, "callMode":<text>, "unlink":<uint>, "n":<text>, "t":<text>, "d":<text>, "m":<text>, "p":<text>, "f":<uint>, "c":<text>, "vt":<uint>, "vs":<long>, "tbl":[ { "x":<double>, "a":<double>, "b":<double> } ]}
Название | Описание |
---|---|
itemId | ID объекта |
id | ID датчика (0 для создания) |
callMode | действие: создание, редактирование, удаление (create, update, delete) |
unlink | Удалять связи с другими датчиками и параметрами объекта при удалении (1 - да(по умолчанию), 0 - нет) |
Параметры, обязательные только при создании и редактировании | |
n | название |
t | тип (см. ниже) |
d | описание |
m | единица измерения |
p | параметр |
f | флаги датчика (см. ниже) |
c | конфигурация (см. ниже) |
vt | тип валидации (см. ниже) |
vs | ID валидирующего датчика |
tbl | таблица расчета |
Флаги датчика:
Флаг | Описание |
---|---|
0x01 | Тип счетчика: мгновенный |
0x02 | Тип счетчика: дифференциальный |
0x03 | Тип счетчика: дифференциальный с переполнением (2 байта) |
0x04 | Тип счетчика: переключатель из ВЫКЛ в ВКЛ |
0x05 | Тип счетчика: Переключатель из ВКЛ в ВЫКЛ |
0x20 | включить опцию «С переполнением» (см. ниже) |
0x40 | Применять нижнюю/верхнюю границы ПОСЛЕ расчета (см. ниже) |
Уточнение для 0x20: - актуально для следующих датчиков:
Если флаг 0x20 не задан, то датчик работает так: дельта изменения будет равна abs(V2 - V1), где V2 – новое сообщение, V1 – предыдущее, abs() – модуль числа; если флаг задан, то при V2 < V1 дельтой будет считаться V2 (т.е. V1 = 0).
Уточнение для 0x40:
Типы датчиков:
Здесь можно прочитать о типах датчиков подробно.
Параметры конфигурации датчика:
Замечание: JSON-объект передается как строка, потому необходимо заключить его в кавычки, все двойные кавычки для ключей и значений необходимо экранировать (\«).
"{
\"act\":<bool>,
\"appear_in_popup\":<bool>,
\"ci\":<object>,
\"filter\":<long>,
\"mu\":<uint>,
\"pos\":<uint>,
\"show_time\":<bool>,
\"unbound_code\":<text>,
\"validate_driver_unbound\":<bool>,
\"timeout\":<uint>,
\"uct\":<bool>,
\"lower_bound\":<double>,
\"upper_bound\":<double>
}"
Параметр | Описание |
---|---|
act | опция "Последнее сообщение": 0 - опция включена, 1 - опция выключена (см. дополнительную информацию ниже) |
appear_in_popup | галочка "Видимость": false - снять, true - поставить |
ci | пользовательские интервалы |
filter | переопределить степень фильтрации |
mu | единицы измерения: 0 - si, 1 - us, 2 - имперская, 3 - метрическая с галлонами |
pos | положение в списке Датчиков, счет от 1 |
show_time | галочка "Время": false - снять, true - поставить |
unbound_code | код снятия |
validate_driver_unbound | валидировать снятие, 0 - нет, 1 - да |
timeout | таймаут, секунды |
uct | опция "Переполнение по сырым данным": 0 - выкл, 1 - вкл |
lower_bound | опция "Нижняя граница" |
upper_bound | опция "Верхняя граница" |
Уточнение для «act»: для этой опции использована инверсивная логика: выбранная галочка (значение 0) – это исторически старая логика, а выключенная опция (значение 1) – это более новая логика (данные используются во всплывающих подсказках, удобны в ситуациях, когда некоторые важные параметры редко приходят). Старая логика всё так же активна по умолчанию.
Уточнение для «filter»:
- опция позволяет переопределить степень фильтрации (ширину окна медианной фильтрации), валидна для датчиков:
Пример:
"c":"{\"appear_in_popup\":true,\"pos\":1,\"ci\":{}}"
Типы валидации:
Тип | Описание |
---|---|
0x01 | Логическое И |
0x02 | Логическое ИЛИ |
0x03 | Математическое И |
0x04 | Математическое ИЛИ |
0x05 | Суммировать |
0x06 | Вычесть валидатор из датчика |
0x07 | Вычесть датчик из валидатора |
0x08 | Перемножить |
0x09 | Делить датчик на валидатор |
0x0A | Делить валидатор на датчик |
0x0B | Проверка на неравенство нулю |
0x0C | Заменять датчик валидатором в случае ошибки |
При создании и редактировании:
[ <long>, /* ID датчика */ { "id":<long>, /* ID датчика */ "n":<text>, /* название */ "t":<text>, /* тип */ "d":<text>, /* описание */ "m":<text>, /* единица измерения */ "p":<text>, /* параметр */ "f":<uint>, /* флаги датчика */ "c":<object>, /* конфигурация */ "vt":<int>, /* тип валидации */ "vs":<long>, /* ID валидирующего датчика */ "tbl":[ /* таблица расчета */ { /* параметры */ "x":<double>, "a":<double>, "b":<double> } ] } ]
При удалении:
[ <long>, /* ID датчика */ null ]