Содержание

Датчики: создание, редактирование и удаление

Чтобы создавать, изменять и удалять датчики, нужно использовать команду unit/update_sensor:

svc=unit/update_sensor&params={"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:

  1. если флаг не указан: граница применяется к сырым данным (в случае с ДУТ могут быть проблемы с указанием границ к сырым данным);
  2. если флаг указан: граница будет применена к данным, полученным после преобразования.

Типы датчиков:

Здесь можно прочитать о типах датчиков подробно.

Параметры конфигурации датчика:

:!: Замечание: 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
]