Справочный центр Wialon

update_sensor

Для создания, редактирования или удаления датчиков используйте метод unit/update_sensor.

Конечная точка

Copied!
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 Активировать опцию С переполнением.

Может использоваться для следующих датчиков:

  • Пробег
  • Датчик абсолютного расхода топлива
  • Абсолютные моточасы

Если флаг 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 Датчик веса

Для получения дополнительной информации о типах датчиков см. Типы датчиков.

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

Следующие параметры используются для настройки датчика:

Copied!
"{
  \"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 (на основе последних параметров объекта).
Эта опция использует инвертированную логику:
  • Включенное состояние (значение 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 Система измерения:
  • 0: СИ
  • 1: американская
  • 2: имперская
  • 3: метрическая с галлонами
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 Значение, при котором счетчик датчика сбрасывается в ноль. Система использует его для расчета событий дифференциального датчика для следующих датчиков:
  • Датчик пробега
  • Абсолютные моточасы
  • Датчик абсолютного расхода топлива
  • Импульсный датчик расхода топлива
  • Дифференциальный счетчик
Если текущее значение меньше предыдущего значения и лимит больше 0, дельта рассчитывается как (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 каждый ключ является нижней границей интервала, а каждое значение описывает, как значение датчика отображается в этом интервале:

Copied!
"c":"{\"ci\":{\"0\":{\"t\":\"Off\",\"c\":16711680},\"50\":{\"t\":\"On\"}}}"
Ключ Описание
t Текст, отображаемый вместо значения датчика.
c Необязательный цвет текста, указанный как целое число в десятичном формате.

Чтобы установить интервал без нижней границы, используйте ключ "-Infinity".

Пример передачи fuel_params датчика уровня топлива:

Copied!
"c":"{\"fuel_params\":{\"flags\":1728,\"ignoreStayTimeout\":20,\"minFillingVolume\":21,\"minTheftTimeout\":0,\"minTheftVolume\":15,\"filterQuality\":0,\"fillingsJoinInterval\":300,\"theftsJoinInterval\":300,\"extraFillingTimeout\":0}}"

Пример передачи fuel_params импульсного датчика расхода топлива:

Copied!
"c":"{\"fuel_params\":{\"maxImpulses\":10,\"skipZero\":0}}"

Пример передачи fuel_params датчика уровня заряда батареи:

Copied!
"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 для датчика уровня заряда батареи, где одновременно заданы настройки обнаружения зарядки и отображение в процентах:

Copied!
"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 Заменить датчик валидатором в случае ошибки

Возвращаемый результат

Если запрос на создание или обновление датчика выполнен успешно, возвращается ответ в следующем формате:

Copied!
[
  <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>
      }
    ]
  }
]

Если запрос на удаление датчика выполнен успешно, возвращается ответ в следующем формате:

Copied!
[
  <long>,   /* ID датчика */
  null
]

Если запрос не выполнен, возвращается код ошибки.

Коды ошибок

Код ошибки Описание
4 Неверные входные параметры.
6 Не удалось обновить параметр из раздела params.
7 Нет права доступа Создание, редактирование и удаление датчиков на объект.
2015 Невозможно удалить датчик, так как он используется в дополнительных свойствах объекта или в свойствах другого датчика.

Если вы заметили ошибку в тексте, пожалуйста, выделите её и нажмите Ctrl+Enter.