Параметры, поступающие непосредственно от оборудования, можно преобразовывать. Для этого в поле Параметр свойств датчика необходимо указать операцию преобразования. Случаи ее применения описаны ниже.
Побитовый контроль параметра
Побитовый контроль параметра позволяет контролировать не весь параметр в целом, а конкретный бит. Эта операция используется, если устройство показывает разные данные через один параметр: первый бит может соответствовать состоянию сигнализации (вкл/выкл), второй — состоянию водительской двери (открыта/закрыта), третий — состоянию фар и т. д.
В системе мониторинга нумерация битов начинается с 1. Чтобы контролировать, например, третий бит параметра param199 , после его названия необходимо поставить двоеточие и номер бита:
param199:3
Таким образом на основе одного параметра можно создать несколько датчиков для контроля разных битов.
Побитовый контроль также может применяться к 64-битовым значениям параметров, но учитывайте следующую особенность. При отображении числа с заполненным 64-ым битом этот бит расценивается системой как знак минус для числа, содержащегося в остальных 63 битах. Таким образом, значения параметра, большие чем (2^63 - 1) = 9223372036854775807, отображаются как отрицательные значения.
Для дополнительной информации см. статью Датчики: работа с битами.
Преобразование текстовых параметров
Значения текстовых параметров можно преобразовывать в десятичные целые числа. Например, если для датчика указан параметр в виде выражения, в котором содержится текстовый параметр, то для получения корректного результата текстовое значение нужно преобразовать в десятичное целое число. Для этого после имени параметра через двоеточие укажите систему счисления, из которой необходимо преобразовать исходное значение в десятичное. Поддерживается преобразование из двоичной, восьмеричной, десятичной и шестнадцатеричной систем.
Система счисления исходного значения | Формула для преобразования в десятичную систему | Пояснение |
Двоичная |
| Используйте эту формулу, чтобы значения текстового параметра считались двоичными и преобразовывались в десятичные. Например, если исходное значение 100, то итоговое значение 4. |
Восьмеричная |
| Используйте эту формулу, чтобы значения текстового параметра считались восьмеричными и преобразовывались в десятичные. Например, если исходное значение 100, то итоговое значение 64. |
Десятичная |
| Используйте эту формулу, чтобы значения текстового параметра считались десятичными и выводились в таком виде. Например, если исходное значение 100, то итоговое значение тоже 100. |
Шестнадцатеричная |
| Используйте эту формулу, чтобы значения текстового параметра считались шестнадцатеричными и преобразовывались в десятичные. Например, если исходное значение 100, то итоговое значение 256. |
Определение номера дня в году
Unix-время сообщения можно преобразовать в номер дня в году относительно 1 января. Для этого необходимо создать произвольный датчик с параметром time:d .
Например, для 11:00:00 (UTC) 28 марта 2017 года UNIX-время соответствует значению 1490698800 . Следовательно,
time = 1490698800
time:d = 87
Преобразование параметров датчиков водителей, прицепов и пассажиров
Для датчиков типов Назначение водителя, Назначение прицепа и Датчик пассажиров доступно преобразование текстовых и числовых значений параметров. Для этого в поле Параметр свойств датчика необходимо указать выражение, которое может включать функции и математические операции.
Функции могут применяться только к текстовым значениям, математические операции — к числовым.
Преобразованные значения используются:
- при срабатывании уведомлений о назначении водителей, прицепов или пассажиров;
- во всплывающей подсказке и расширенной информации объекта;
- в сообщениях с данными ;
- в отчетах, например, в таблице Трассировка датчика в столбце Форматированное значение.
Функции
Функции применяются только к текстовым значениям параметров. В таблице ниже их описание, где param — имя параметра, в котором устройство отправляет текстовое значение.
Функция | Описание | Пример значения до | Пример значения после |
---|---|---|---|
ltrim(param) или ltrim(param,'0') | Обрезает все нули слева. По умолчанию обрезается ‘0’, но можно применять и к другим символам. Символ указывается в одиночных кавычках. | 0000A | A |
rtrim(param) или rtrim(param,'0') | Обрезает все нули справа. По умолчанию обрезается ‘0’, но можно применять и к другим символам. Символ указывается в одиночных кавычках. | A0000 | A |
lower(param) | Переводит символы в нижний регистр. | A | a |
upper(param) | Переводит символы в верхний регистр. | a | A |
reverse(param) | Меняет порядок символов на обратный. | A1234 | 4321A |
reverseb(param) | Меняет порядок символов на обратный по два. Если в строке нечетное количество символов, то сначала она дополняется ведущим нулем слева, а затем происходит перестановка. | C1B2A | 2A1B0C |
lfill(param,5,'0') | Добавляет указанный символ (третий параметр функции) слева до тех пор, пока в строке не будет требуемое количество символов (второй параметр функции). Добавляемый символ указывается в одиночных кавычках. | A | 0000A |
rfill(param,5,'0') | Добавляет указанный символ (третий параметр функции) справа до тех пор, пока в строке не будет требуемое количество символов (второй параметр функции). Добавляемый символ указывается в одиночных кавычках. | A | A0000 |
sequence(param,2,3,5,4,1,0,1414) | Изменяет порядок символов. Символы расставляются в порядке, указанном после имени параметра. Если указан несуществующий индекс (порядковый номер), то на месте этого символа подставляется 0. Индексы считаются слева направо, начиная с 0. | 0C1B2A | 1BA2C00 |
hex(param) | Переводит из десятичной системы в шестнадцатеричную. | 10 | a |
dec(param) | Переводит из шестнадцатеричной системы в десятичную. | 00A | 10 |
hextoascii(param) | Переводит из шестнадцатеричной системы в ASCII. | 3A29 | :) |
concat(param,substr(param,1,4),'00') | Склеивает строки. Можно склеивать более двух строк. В приведенном примере используется вместе с функцией substr (см. ниже), то есть к строке параметра приклеивается часть (подстрока), извлеченная из этого же параметра. Также присоединяются символы ‘00’. Символы указываются в одиночных кавычках. | 0C1B2AD35E | 0C1B2AD35EC1B200 |
substr(param,1,4) | Выбирает определенные символы из значения параметра. Выбранные символы образуют подстроку. Для функции указываются 3 обязательных параметра:
Индексы считаются слева направо, начиная с 0. Извлеченную подстроку можно присоединить к другой строке с помощью функции concat, как в примере выше. | 0C1B2AD35E | C1B2 |
len(param) | Возвращает число, определяющее количество символов в строке. С результатом можно выполнять математические операции, так как оно является числом. Например, в выражении substr(param,len(param)-4,4) в качестве индекса используется выражение len(param)-4. Она означает, что подстрока будет считаться с четвертого с конца символа. | 0C1B2AD35E | 10 |
Математические операции
Математические операции сложения (+) и вычитания (-) возможны только с числовыми значениями, с текстовыми — только после их преобразования в числовые (см. пример для функции len выше).
Если в выражении с математической операцией один из элементов не является числовым, то результат не будет получен.