Создание модели устройства
Для создания новой модели перейдите на вкладку Модели. Добавьте модель, нажав на плюсик.
Заполните следующие поля:
- имя — наименование модели;
- описание — подробная характеристика модели, заполняется при необходимости;
- импорт — возможность импортировать готовую модель в виде файла или по ссылке.
Выберите шаблон — заготовленную структуру модели. В платформу добавлено несколько готовых моделей, созданных на основе реализованных в ней протоколов. Модель создается по выбранному шаблону и включает в себя ряд аргументов, событий и действий, которые могут использоваться для устройств с таким протоколом. Вам остается только подстроить модель, добавляя, удаляя и конфигурируя узлы модели.
Также вместо создания новой модели можно воспользоваться одним из стартовых
наборов.
Подробнее о стартовых наборах
Нажмите кнопку Создать. Перед вами откроется ваша новая модель. В левой части отображается древовидная структура модели, включающая в себя разнотипные узлы. В правой - окно редактирования выбранного узла.
Параметры узлов модели
Общие
Сначала в каждом узле указывается его тип. В зависимости от выбранного типа формируются соответствующие поля формы для последующего заполнения.
Типы:
-
Подсистема - тип узла, который служит для организации структуры модели, позволяя объединять параметры в группы. Подсистема подразумевает, что данный узел содержит в себе несколько элементов в виде ответвлений древовидной структуры.
-
Аргумент – это параметр, который передает устройство на платформу (например, текущее измерение сенсора).
Аргументы могут быть числовыми, логическими, строковыми или представлять собой объект или массив. При этом для числовых аргументов можно указать единицу измерения, изображение и задать уровни. -
Конфигурация – это параметр, значение которого затем можно задать в в интерфейсе объекта. Его можно использовать в работе автоматов и обработчиков. По своей сути, узлы с данным типом — это константы, которые необходимы для хранения дополнительной информации об объекте. Это может быть, к примеру, максимально допустимая температура, объем топливного бака, длительность работы и т.п.
-
Действие - это операция, которая нужна для отправки команды на устройство или запуска автомата.
-
Событие - это наступление определенных условий, которое либо было зафиксировано объектом, либо произошло во внешних по отношению к объекту контроля приложениях. События используются в автоматах при построении переходов между состояниями. Именно по произошедшим с объектом событиям эти переходы и происходят.
У каждого типа есть пиктограмма, которая отображается слева от узла в дереве модели. Это позволяет визуально определять, к какому типу относится тот или иной узел.
Далее вводится уникальный по модели идентификатор и имя узла. Идентификатор необходим для распознавания узла в системе. Он является названием поля из данных о состоянии устройства при обращении к нему через API. Имя, в отличие от идентификатора, может быть неуникальным. Как идентификатор, так и имя генерируются при создании узла, их следует заменить на те идентификатор и имя, которые вам понятны и удобны.
Идентификатор должен быть уникальным! Идентификатор должен быть осмысленным! Идентификатор - для внутренней работы системы, имя - для интерфейса пользователя.
В платформе также заложены дополнительные функции для аргументов со специальными идентификаторами.
Идентификатор параметра | Функция | |
---|---|---|
Системная информация, всегда присутствует в интерфейсе объекта | ||
online | Статус подключения устройства:
| |
_ts | Время получения пакета данных от устройства (хранится в микросекундах UTC). Если в модели не используется параметр с идентификатором time, то его функции выполняет _ts | |
Параметры, которые создает пользователь | ||
time | Время, по которому сортируются пакеты данных от устройства в истории, может отличаться от времени получения (_ts). Часто используется, когда устройство параллельно с актуальной информацией высылает исторические данные | |
lat, lon | Координаты перемещения объекта на карте | |
angle | Угол поворота иконки объекта на карте | |
x, y, z | Координаты перемещения объекта на схеме | |
speed | Скорость перемещения объекта на карте при использовании движения по маршруту для бота |
Придумывайте понятные и емкие имена. Если нужны детали, добавьте подробное описание.
Описание дает более полное представление о параметре. Оно выводится в качестве всплывающей подсказки при наведении на параметр в интерфейсе объекта.
Для узлов с типами “Подсистема” и “Событие” других полей заполнять не нужно. Описание полей для узлов с другими типами представлено ниже.
Для типа “Аргумент”
Для аргумента заполняются следующие поля:
-
тип данных: выбирается один из возможных типов данных: числовой, логический, строковый, объект или массив. Тип данных служит для корректного отображения значений параметров в интерфейсе. Также для определенных типов есть дополнительные возможности:
-
числовой: указание множителя, единицы измерения, изображения и уровней перехода (разделы При разборе и Отображение);
-
логический: указание изображения и уровней перехода (разделы При разборе и Отображение);
-
объект: разбор данных в формате JSON (пример).
-
-
источник: по нему происходит поиск значения параметра в структуре данных, полученных от устройства; строго зависит от протокола. Конфигурирование источников для конкретных протоколов подробно рассмотрено в разделе примеров;
-
линейный: данный переключатель определяет, можно ли построить по параметру линейный график (плавно возрастающий или плавно убывающий): например, по температуре можно, а по широте или долготе - нет, такой график по отдельной координате не имеет смысла. При активации этого флага становится доступным добавление изображения в качестве иконки данного параметра и указание уровней индикации текущего значения параметра.
Разделы При разборе и Отображение открывают дополнительные поля:
-
множитель: параметр, полученный от устройства, умножится на указанное значение (функция доступна только для чисел);
-
сохранять binary как: служит для отображения данных в интерфейсе объекта в разном формате (например, Text - “ok”, Base64 - “b2s=”, HEX - “6F 6B”);
-
единица измерения: для отображения рядом с числом; дополнительная функция есть у следующих единиц измерения:
-
проценты (%) - число помещается в шкалу, заполняющуюся согласно полученному значению процента;
-
миллисекунды (мс) - число, полученное в миллисекундах UNIX, конвертируется в удобочитаемый формат даты и времени.
-
-
изображение: svg иконка для дополнительной индикации, представляет параметр в графическом виде на карточке объекта;
-
уровни: пороги изменения цвета иконки и текста.
Настройка уровней отличается для аргументов по типам данных:
-
число
-
изменение уровня при попадании полученной величины в определенный диапазон значений
-
изменение уровня при точном совпадении полученной величины с указанным значением
-
-
логический тип
- строка
Иногда после загрузки собственного SVG изображения его цвет не меняется в соответствии с выставленными уровнями. В этом случае откройте картинку через любой текстовый редактор и уберите поле “fill”. После этого загрузите обновленное SVG изображение еще раз. Теперь его цвет будет меняться согласно заданным уровням.
Для типа “Конфигурация”
Для конфигурации заполняется только поле Тип данных.
Для типа “Действие”
Для действия заполняется поле выполнить: выберите тип действия, который необходимо выполнять:
-
автомат: в поле Автомат выберите тот автомат, который нужно запустить по команде;
-
команду к устройству: в поле Отправить выберите тип команды в зависимости от протокола, после чего в разделе С параметрами укажите параметры команды.
В параметрах команды можно указать:
- конкретные значения, которые будут каждый раз отправляться в команде;
- параметры, значение которых можно указать непосредственно при отправке
команды. Это нужно, если пользователь не знает заранее те значения, которые
необходимо передавать в команде, либо эти значения раз от раза могут
меняться. Для создания такого параметра необходимо при создании команды в
модели объявить его в фигурных скобках
{{param_name}}
;
- текущие параметры устройства. Для создания такого параметра необходимо при
создании команды в модели указать в фигурных скобках object.state и после
точки указать идентификатор параметра из модели (например,
{{object.state.temperature}})
. При отправке команды подставится значение этого параметра из журнала.
Для корневого узла
Для корневого узла модели помимо имени и описания можно задать иконку. Все объекты с такой моделью отобразятся на карте с заданной иконкой. При этом можно использовать как стандартные иконки, так и загрузить собственное изображение в формате SVG.
Формирование структуры модели
Справа от каждого узла модели при наведении появляются иконка “глаз” и три точки, при нажатии на которые открываются функции по работе с узлами.
- Скрыть (иконка “глаз”) - скрытие элемента из интерфейса объекта. Этот параметр не будет обрабатываться платформой и отображаться в журнале, но при необходимости его можно вернуть. В случае скрытия узла с типом Подсистема параметры, которые в нее входят, также скрываются в интерфейса объекта;
-
Добавить - создание нового узла в виде ответвления для выбранного элемента на уровень ниже;
-
Копировать - копирование выбранного элемента. При этом копируется вся заполненная по узлу информация с тем отличием, что у идентификатора приписывается сгенерированный постфикс, а у имени добавляется надпись ”(copy)”;
-
Удалить - удаление выбранного элемента.
Все элементы по модели перемещаются с помощью drag-and-drop. Так вы определяете структуру модели для вашего устройства удобным образом.
Рекомендуем все параметры и команды разносить по смысловым группам - подсистемам. Это позволит организовать удобный интерфейс отображения в объекте.
Для того чтобы посмотреть, как будет выглядеть в журнале состояние объекта и интерфейс отправки команд, нажмите Показать превью.
Также любой элемент модели можно редактировать и просматривать на вкладке Код. Полная структура модели представлена там в формате JSON.