update_sensor
Для создания, редактирования или удаления датчиков используйте метод 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 | Активировать опцию С переполнением. Может использоваться для следующих датчиков:
Если флаг 0x20 не установлен, дельта изменения рассчитывается как абсолютная разница между текущим и предыдущим значениями. Если флаг установлен и текущее значение меньше предыдущего, дельта равна текущему значению (то есть предыдущее значение принимается равным 0). Этот флаг применяется к расчету значения датчика. Обработка переполнения для событий дифференциального датчика настраивается отдельно в overflow_limit, независимо от этого флага. |
| 0x40 | Применить нижнюю и верхнюю границы (lower_bound, upper_bound) после расчета. Если флаг не установлен, то каждая граница применяется к необработанным данным (в случае ДУТ возникают сложности с установкой нижней и верхней границ для необработанных данных). Если флаг установлен, то каждая граница применяется к рассчитанным (обработанным) данным. |
Типы датчиков
| Значение | Тип датчика |
|---|---|
| absolute fuel consumption | Датчик абсолютного расхода топлива |
| accelerometer | Акселерометр |
| alarm trigger | Тревожная кнопка |
| battery level | Датчик уровня заряда батареи |
| counter | Счетчик |
| custom | Произвольный датчик |
| digital | Произвольный цифровой датчик |
| driver | Назначение водителя |
| engine efficiency | Датчик полезной работы двигателя |
| engine hours | Абсолютные моточасы |
| engine operation | Датчик зажигания |
| engine rpm | Датчик оборотов двигателя |
| fuel level | Датчик уровня топлива |
| fuel level impulse sensor | Импульсный датчик уровня топлива |
| impulse fuel consumption | Импульсный датчик расхода топлива |
| instant fuel consumption | Датчик мгновенного расхода топлива |
| mileage | Датчик пробега |
| odometer | Относительный одометр |
| private mode | Частный режим |
| relative engine hours | Относительные моточасы |
| temperature | Датчик температуры |
| temperature coefficient | Коэффициент температуры |
| trailer | Назначение прицепа |
| voltage | Датчик напряжения |
| weight | Датчик веса |
Для получения дополнительной информации о типах датчиков см. Типы датчиков.
Параметры конфигурации датчика
Следующие параметры используются для настройки датчика:
"{
\"act\": <bool>,
\"appear_in_popup\": <bool>,
\"battery_capacity\": <double>,
\"ci\": <object>,
\"calc_fuel\": <uint>,
\"engine_efficiency\": <array>,
\"engine_sensors\": <array>,
\"filter\": <long>,
\"fuel_params\": <object>,
\"mu\": <uint>,
\"pos\": <uint>,
\"show_time\": <bool>,
\"unbound_code\": <text>,
\"validate_driver_unbound\": <bool>,
\"do_not_show\": <bool>,
\"timeout\": <uint>,
\"uct\": <bool>,
\"lower_bound\": <double>,
\"upper_bound\": <double>,
\"overflow_limit\": <double>,
\"text_params\": <uint>,
\"show_as_percentage\": <uint>
}"
Параметр c передается как строка, содержащая JSON-объект. Заключите объект в двойные кавычки и экранируйте двойные кавычки в его ключах и значениях ("). См. примеры конфигурации ниже.
Устанавливайте флаги датчика в параметре верхнего уровня f. Не устанавливайте c.flags напрямую.
| Параметр | Описание |
|---|---|
| act | Расчет значения датчика: 0 (на основе последнего сообщения объекта), 1 (на основе последних параметров объекта). Эта опция использует инвертированную логику:
|
| appear_in_popup | Передайте true, чтобы включить опцию Видимый, или false, чтобы отключить её. |
| battery_capacity | Емкость батареи датчика уровня заряда батареи, в кВт⋅ч. Используется вместе с show_as_percentage для отображения уровня заряда батареи в процентах. |
| ci | Произвольные интервалы значений. См. примеры конфигурации. |
| calc_fuel | Укажите ненулевое значение, чтобы включить расчет данных датчиком, или 0, чтобы отключить его. Для датчика уровня заряда батареи это включает расчет уровня заряда батареи и зарядок, когда датчик используется с детектором battery_level, charge или ev. |
| engine_efficiency | Массив ID датчиков полезной работы двигателя, используемых датчиком двигателя. |
| engine_sensors | Массив ID датчиков двигателя, используемых датчиком уровня топлива для расчета расхода топлива. |
| filter | Переопределяет уровень фильтрации для датчика. Целое число от 0 до 255. Применяет сглаживающий фильтр к значению датчика. Действителен для следующих датчиков:
fuel_params в примерах конфигурации. |
| fuel_params | Настройки датчика уровня топлива или уровня заряда батареи. См. примеры конфигурации. |
| mu | Система измерения:
|
| pos | Позиция датчика в списке (отсчет с 1). |
| show_time | Передайте true, чтобы отображать значение датчика со временем, с которого это значение было получено, или false, чтобы скрыть время. Для получения дополнительной информации читайте об опции Время на странице Датчики. |
| unbound_code | Для датчиков назначения водителя или прицепа вы можете указать произвольный код снятия. |
| validate_driver_unbound | Валидация снятия: 0 (нет), 1 (да). |
| do_not_show | Этот параметр используется для настройки датчика Частный режим. Установите его в 1, чтобы предотвратить передачу данных о местоположении объекта, когда датчик включен, или 0, чтобы разрешить получение этих данных. |
| timeout | Таймаут, секунды. |
| uct | Передайте 0, чтобы включить опцию Переполнение по сырым данным, или 1, чтобы отключить её. Опция доступна только для дифференциальных счетчиков с переполнением. Опция изменяет порядок применения таблицы расчета в отчетах. Она не влияет на то, как overflow_limit применяется к событиям дифференциального датчика. |
| lower_bound | Нижняя граница допустимых значений датчика для таблицы расчета. |
| upper_bound | Верхняя граница допустимых значений датчика для таблицы расчета. |
| overflow_limit | Значение, при котором счетчик датчика сбрасывается в ноль. Система использует его для расчета событий дифференциального датчика для следующих датчиков:
(overflow_limit - предыдущее значение) + текущее значение. Если лимит равен 0 или не установлен, дельта равна текущему значению. Система применяет этот ключ независимо от флага 0x20, который управляет обработкой переполнения в расчете значения датчика. Укажите лимит в обработанных значениях, то есть в значениях, полученных после применения таблицы расчета. Ключ uct не влияет на это поведение. Для импульсных датчиков расхода топлива этот ключ влияет только на события. Чтобы установить значение переполнения для расчета расхода топлива в отчетах, используйте fuel_params.maxImpulses, что соответствует опции Максимум импульсов. В отличие от overflow_limit, maxImpulses применяется к необработанным значениям, до применения таблицы расчета. |
| text_params | Передайте 1, чтобы включить опцию Текстовые параметры, или 0, чтобы отключить её. |
| show_as_percentage | Передайте 1, чтобы отображать уровень заряда батареи в процентах от значения, указанного в battery_capacity, или 0, чтобы отображать значение в кВт⋅ч. Если battery_capacity отсутствует или не является положительным числом, значение отображается в кВт⋅ч. См. опцию Конвертировать значения в %. |
Примеры конфигурации
В параметре ci каждый ключ является нижней границей интервала, а каждое значение описывает, как значение датчика отображается в этом интервале:
"c":"{\"ci\":{\"0\":{\"t\":\"Off\",\"c\":16711680},\"50\":{\"t\":\"On\"}}}"
| Ключ | Описание |
|---|---|
| t | Текст, отображаемый вместо значения датчика. |
| c | Необязательный цвет текста, указанный как целое число в десятичном формате. |
Чтобы установить интервал без нижней границы, используйте ключ "-Infinity".
Пример передачи fuel_params датчика уровня топлива:
"c":"{\"fuel_params\":{\"flags\":1728,\"ignoreStayTimeout\":20,\"minFillingVolume\":21,\"minTheftTimeout\":0,\"minTheftVolume\":15,\"filterQuality\":0,\"fillingsJoinInterval\":300,\"theftsJoinInterval\":300,\"extraFillingTimeout\":0}}"
Пример передачи fuel_params импульсного датчика расхода топлива:
"c":"{\"fuel_params\":{\"maxImpulses\":10,\"skipZero\":0}}"
Пример передачи fuel_params датчика уровня заряда батареи:
"c":"{\"fuel_params\":{\"flags\":16387,\"filterQuality\":0,\"minFillingVolume\":10,\"fillingsJoinInterval\":300}}"
Для датчика уровня заряда батареи система использует настройки, перечисленные ниже. Если вы вообще не передаете объект fuel_params, система использует топливные настройки объекта. Если вы передаете объект без некоторых ключей, система использует значения из таблицы.
| Ключ | Описание |
|---|---|
| flags | Флаги обнаружения зарядки и фильтрации. Значения такие же, как для датчика уровня топлива. Список см. в unit/get_fuel_settings. Если вы не указываете этот ключ, система использует 1, что объединяет значения датчиков с одинаковым именем. Чтобы отключить объединение, укажите значение без флага 0x01. Если значение включает флаг 0x2000, объединение остается включенным независимо от других переданных флагов. |
| filterQuality | Уровень медианной фильтрации (0-255). Применяется, когда медианная фильтрация включена в flags. Игнорируется, когда включена адаптивная фильтрация. Если вы не указываете этот ключ, система использует 0. |
| minFillingVolume | Минимальный объем зарядки, в кВт⋅ч. Если вы не указываете этот ключ, система использует 20 кВт⋅ч. Значение по умолчанию в поле Минимальный объем зарядки интерфейса составляет 10 кВт⋅ч. Чтобы применить такой же порог через API, укажите этот ключ явно. |
| fillingsJoinInterval | Таймаут для разделения последовательных зарядок, в секундах. Если вы не указываете этот ключ, система использует 300 секунд. |
Система использует эти настройки только тогда, когда расчет данных датчиком включен в calc_fuel. Эта настройка соответствует опции Рассчитывать данные по датчику. Рассчитанные значения возвращаются детекторами battery_level, charge и ev. Подробности см. в разделе Типы детекторов событий.
Ключ show_as_percentage влияет только на отображение. Всегда указывайте battery_capacity и настройки обнаружения зарядки в кВт⋅ч.
Пример строки c для датчика уровня заряда батареи, где одновременно заданы настройки обнаружения зарядки и отображение в процентах:
"c":"{\"fuel_params\":{\"flags\":16387,\"filterQuality\":0,\"minFillingVolume\":10,\"fillingsJoinInterval\":300},\"show_as_percentage\":1,\"battery_capacity\":64.5,\"calc_fuel\":2,\"act\":1,\"mu\":0,\"appear_in_popup\":true}"
Передавайте show_as_percentage и battery_capacity внутри строки c, рядом с fuel_params, и оставляйте параметр m датчика равным kWh.
Тип фильтрации устанавливается в flags: используйте 0x02 для включения фильтрации и добавьте 0x4000 для адаптивной медианной фильтрации. Если вы устанавливаете флаг 0x2000, система использует только флаги фильтрации и значение filterQuality датчика.
Для датчиков уровня заряда батареи флаг
0x2000работает противоположным образом по отношению к его описанию на странице unit/get_fuel_settings: он не применяет топливные настройки объекта по умолчанию.
Система всегда добавляет режим расчета по времени (0x10) для датчиков уровня заряда батареи. Вы не можете отключить его с помощью этого метода.
Для датчиков уровня заряда батареи система сбрасывает ключи ignoreStayTimeout, minTheftVolume и extraFillingTimeout в 0, даже если вы указываете другие значения. Ключи minTheftTimeout и theftsJoinInterval не имеют эффекта, поскольку обнаружение слива недоступно для этих датчиков.
Типы валидации
| Флаг типа валидации | Описание |
|---|---|
| 0x01 | Логическое И |
| 0x02 | Логическое ИЛИ |
| 0x03 | Математическое И |
| 0x04 | Математическое ИЛИ |
| 0x05 | Сложить |
| 0x06 | Вычесть валидатор из датчика |
| 0x07 | Вычесть датчик из валидатора |
| 0x08 | Умножить |
| 0x09 | Разделить датчик на валидатор |
| 0x0A | Разделить валидатор на датчик |
| 0x0B | Проверка на не-null |
| 0x0C | Заменить датчик валидатором в случае ошибки |
Возвращаемый результат
Если запрос на создание или обновление датчика выполнен успешно, возвращается ответ в следующем формате:
[
<long>, /* ID датчика */
{
"id": <long>, /* ID датчика */
"n": "<text>", /* Имя */
"t": "<text>", /* Тип */
"d": "<text>", /* Описание */
"m": "<text>", /* Единица измерения */
"p": "<text>", /* Параметр */
"f": <uint>, /* Флаги датчика */
"c": <text>, /* Конфигурация, отправляется и возвращается как JSON-строка */
"vt": <int>, /* Тип валидации */
"vs": <long>, /* ID валидирующего датчика */
"tbl": [ /* Таблица расчета */
{
"x": <double>,
"a": <double>,
"b": <double>
}
]
}
]
Если запрос на удаление датчика выполнен успешно, возвращается ответ в следующем формате:
[
<long>, /* ID датчика */
null
]
Если запрос не выполнен, возвращается код ошибки.
Коды ошибок
| Код ошибки | Описание |
|---|---|
| 4 | Неверные входные параметры. |
| 6 | Не удалось обновить параметр из раздела params. |
| 7 | Нет права доступа Создание, редактирование и удаление датчиков на объект. |
| 2015 | Невозможно удалить датчик, так как он используется в дополнительных свойствах объекта или в свойствах другого датчика. |