Обработчики

Для создания нового обработчика необходимо перейти в меню "Обработчики". В центре меню располагается рабочая область, в которой происходит разработка алгоритма (создание кода), выбор объектов, установка соответствия между переменными, прописанными в исходном коде, и параметрами модели, запуск и остановка обработчика. В панели главного меню, расположенной слева, открывается список всех доступных пользователю созданных ранее обработчиков. Для каждого обработчика приводится его название, описание и текущий статус. Отображается статус "Есть ошибки", если алгоритм, заложенный в обработчик, находится в процессе разработки, и статус "Готов к работе" - если для данного обработчика был выбран объект, на котором он должен исполняться.

scheme

Обработчики предназначены для выполнения определенного алгоритма. К примеру, необходимо рассчитать расход топлива. Для этого нужно создать новый обработчик. В появившемся диалоговом окне нужно ввести наименование и описание обработчика.

scheme

После того как новый обработчик был создан, пользователю отображается интегрированная среда разработки, доступная во вкладке "Код". Именно в ней пользователь может реализовать свой алгоритм. По умолчанию разработка осуществляется на языке JavaScript версии ES6.

В рабочей области пользователю изначально предоставляется некий готовый шаблон. Он не является строгим и отображается лишь в качестве наглядного примера того, каким образом может быть реализован обработчик.

scheme

В начале и в конце исходного кода приводятся комментарии, составленные в соответствии с нормами JSDoc. В начале кода указан небольшой комментарий, в котором говорится о том, что именно выполняет прописанная функция и какие входные параметры для нее используются. Каждая переменная в комментарии объявляется через блочный тег @param, далее вводится встроенный тег в фигурных скобках с указанием типа данных, например, {number} или {string}, затем добавляется наименование и назначение самой переменной. Если навести курсор мыши на название функции process или на сами переменные a и b, приведенные в шаблоне, то можно увидеть всплывающую подсказку, содержимое которой копирует текст комментария. В конце исходного кода отображается логин пользователя и наименование файла. В самом обработчике комментарии указывать необязательно, однако, их использование может существенно облегчить работу.

Возвращаясь к примеру о расходе топлива, для его расчета необходимо воспользоваться формулой:

x = l/(s/100) = 100*l/s,
где x - расход толпива, выражается в л/100 км;
    l - затраченный объем топлива;
    s - пройденное расстояние.

Данная формула прописывается в обработчике с учетом особенностей языка программирования. Можно воспользоваться функцией, заданной по умолчанию в качестве шаблона. Для нее в соответствии с формулой входными данными будут являться prev_fuel и cur_fuel, первоначальное и остаточное количество литров в бензобаке, и distance, пройденное расстояние. Выходной переменной является fuel_cons, расход топлива. При этом не стоит забывать о том, что комментарии, созданные по умолчанию, тоже требуют редактирования.

scheme

Опираясь на готовый шаблон, можно создать свой исходный код, позволяющий обработать данные, получаемые от устройства. При этом в процессе разработки могут быть использованы встроенные модули, предоставляющие дополнительные возможности для обработки пакетов данных.

После завершения процесса разработки необходимо сохранить все текущие изменения. При желании можно протестировать написанный код. При нажатии на кнопку "Тестировать" внизу рабочей области открывается панель, доступная для ввода значений входных параметров. В ней же отображаются выходные данные, которые должны получиться при запуске разработанного исходного кода. Если был произведен расчет значений выходных параметров, они получились верными и тест был удачно пройден, то обработчик можно считать успешно протестированным.

scheme

Если для обработки данных, которая необходима для данного кейса, достаточно создать всего лишь один обработчик, то его можно сразу запустить, не создавая цепочек обработки.

Во вкладке "Объекты" осуществляется выбор объектов, на которых необходимо запустить обработчик. При нажатии на кнопку "Объекты" открывается список всех доступных пользователю объектов, из которого можно выбрать один или несколько объектов. Стоит отметить, что один и тот же обработчик может исполняться на нескольких объектах, если задуманная в данном кейсе бизнес-логика и сконфигурированные модели устройств позволяют это сделать. В окне "Выбор" можно выбрать все объекты из списка, нажав на "+", или же удалить все добавленные объекты. После того, как объекты были выбраны, их список отображается в данном меню.

scheme

Далее во вкладке "Параметры" необходимо указать входные и выходные параметры, основываясь на модели, добавленной к выбранному объекту (ее название отображается в верхней части рабочей области). В данной вкладке рядом с названием обработчика отображается количество введенных параметров, оно изменяется по мере заполнения полей. В разделе "Import" указываются входные данные, в разделе "Export", соответственно, выходные. Для каждой переменной, прописанной в функции, присваивается свой параметр. Например, в рассматриваемом кейсе переменной prev_fuel будет соответствовать параметр "Previous Fuel", переменной cur_fuel - "Current fuel", переменной distance - "Distance" и выходной переменной fuel_cons - "Fuel consumption".

Если запуск данного обработчика предполагает расчет какого-либо нового параметра, значение которого устройством не отравляется, то необходимо в модель текущего объекта добавить дополнительный аргумент, в который будет записываться рассчитанное значение.

scheme

Если от устройства не отправляются данные по каким-либо параметрам, то в этом случае можно воспользоваться параметрами по умолчанию. С учетом версии ES6 их значения можно задать при объявлении функции.

function process(prev_fuel = 10, cur_fuel = 5, distance) {
  //body of function
}

Тогда в случае отсутствия значения для одного или нескольких параметров при выполнении алгоритма будут использоваться значения, заданные по умолчанию, как при запуске тестирования, так и при присвоении параметров.

scheme

Путем выбора аргументов из отображаемого списка заполняются все параметры функции. Если входные и выходные переменные носят те же наименования, что и идентификаторы параметров, то все поля могут быть автоматически заполнены. При необходимости поля можно очистить.

scheme

Когда код был разработан и успешно протестирован, был выбран объект и введены все необходимые параметры, обработчик может быть запущен. Индикация запуска отображается во вкладке "Объекты" в виде зеленой полосы рядом с объектом.

scheme

При этом функционирование обработчика можно в любой момент остановить. Тогда индикационная полоса станет серой.