Чтобы создавать, изменять и удалять датчики, нужно использовать команду unit/update_sensor:
svc=unit/update_sensor¶ms={"itemId":<long>, "id":<long>, "callMode":<text>, "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 датчика |
| callMode | действие: создание, редактирование, удаление (create, update, delete) |
| Параметры, обязательные только при создании и редактировании | |
| 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\":<bool>,
\"pos\":<uint>,
\"show_time\":<text>,
\"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 - имперская |
| 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 ]
|