Команда по событию (Responsive commander 1)

Материал из Integra-S Wiki
Версия от 15:59, 10 апреля 2018; Mikheeva (обсуждение | вклад) (Построение схемы)
Перейти к: навигация, поиск

Отправка команды устройствам по событию от других устройств (или от самого себя).

Настройка

Добавления триггера EgsObjectUpdated

Триггер EgsObjectUpdated можно добавить двумя способами:

Добавление триггера EgsObjectUpdated по ссылке

Для добавления скрипта необходимо:

1. Импортировать скрипт по следующей ссылке: http://maps.integra-s.com/resources/typedef2017/egs/Responsive%20commander%201.put.

2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".

Scheduled com 1.png

3. В открывшемся окне выбрать импортированный скрипт "Responsive commander 1.put".

ResponsiveCommander 1.PNG

Элемент появится на рабочей области.

ResponsiveCommander 3.PNG

Добавление триггера вручную

Для того чтобы добавить триггер вручную, необходимо:

1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент EgsObjectUpdated.

ResponsiveCommander 2.png

2. Дважды нажать на выбранный элемент.

После этого появится окно для добавления элемента.

Scheduled com 5.png

3. Нажать кнопку "Добавить".

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

Построение схемы

Для дальнейшего построения схемы необходимо:

1. Добавить элемент EgsModule, менеджер AcuarioManager и компьютер Computer.

ResponsiveCommander 4.PNG

2. Настроить сетевой адрес компьютера.

Для этого необходимо выделить на схеме элемент Computer и нажать на кнопку вызова свойств элемента.

В окне свойств элемента указать ip адрес используемого компьютера в строке "Сетевой адрес".

Scheduled com 7.PNG

3. Связать EgsScheduled и Egs Модуль, подключив пины «Egs вход: EgsInput» у EgsScheduled и «Egs выход: EgsOutput» у Egs Модуля.

PositionSimulator 2.PNG

4. Привязать пин "Привязка к менеджеру: ManagingContent" из Egs Модуля к пину "Привязка к менеджеру: ManagingContainer" из Менеджера устройств.

Scheduled com 9.PNG

5. Подключить пин "ПО: SoftwareContent" из Менеджера устройств с пином "Установленное ПО: SoftwareContainer" из Компьютера.

PositionSimulator 3.PNG

Замечание:

Если скрипт не был импортирован, то для триггера необходимо настроить параметры:

  1. текст скрипта (script) http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/Position%20simulator%201.put&path=0/params/script/value;
  2. тип (typedef) http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/Position%20simulator%201.put&path=0/params/typedef/value;
  3. единица измерения (period_unit), например: секунда;
  4. интервал в единицах измерения (period_count), например: 1;
  5. точное время внутри интервала (period_time), например: 00:00:00, 14:30:00;
  6. повторять через интервал или выполнить один раз в указанное время (repeat), например: 0 (бесконечно), 1 (один раз), 100;
  7. задействовать триггер (enabled), например: true;
  8. в настройках:
8.1 данные о движении объекта в некотором формате (settings.input), например:
48.39250538706612,53.08561325603247,0 48.3916008019351,53.08549340734039,0 48.39167409940283,53.0853119589439,0 48.39181445107519,53.08495754008844,0 48.39209640494313,53.08438800284189,0 48.39227957653078,53.08389896728745,0 48.39283025959841,53.08396288429309,0 48.39373600936838,53.08412382293808,0 48.39360388037241,53.08466109322499,0 48.39313385277075,53.08562609372662,0 48.39250538706612,53.08561325603247,0;
8.2 регулярное выражение для разбора данных (settings.pattern), должно содержать три именованные группы с именами longitude, latitude и altitude, например:
(?:(?<longitude>-?\d+\.?\d*),(?<latitude>-?\d+\.?\d*),(?<altitude>-?\d+\.?\d*))\s*;
8.3 идентификатор двигаемого объекта (settings.target), например: dd0385b7-b32a-4658-88ab-afef3743459b.

Настройку параметров триггера также можно выполнить, нажав правой кнопкой мыши по элементу EgsScheduled и в контекстном меню выбрав пункт "Редактировать параметры".

PositionSimulator 4.png

После этого откроется окно для редактирования параметров.

PositionSimulator 5.PNG

Также это можно выполнить, открыв свойства элемента.

PositionSimulator 6.PNG

Маски типов и состояний

Маски могут быть как точным именами типов или состояний, так и их частями, содержащими следующие контрольные символы:

? - любой одиночный символ;
* - ноль или более символов;
# - любая цифра от 0 до 9;
[ charlist ] - любой одиночный символ в charlist;
[! charlist ] - любой одиночный символ, не включенный в charlist.

Проверка

После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/Position%20simulator%201.put&path=0/params/hash/value

Хэш-сумма будет совпадать только в том случае, если скрипт не был изменен.

Алгоритм работы

  1. Находится объект назначения с идентификатором settings.target.
  2. Данные из settings.input при помощи регулярного выражения из settings.pattern преобразовываются в список групп параметров longitude, latitude и altitude.
  3. С заданным интервалом из списка выбирается следующая группа параметров по кругу.
  4. Параметры группы записываются в соответствующие параметры объекта назначения.

Пример работы

Для построения схемы необходимо:

1. Создать схему по выше описанному алгоритму.

PositionSimulator 3.PNG

2. Добавить элемент Большой корабль.

PositionSimulator 7.PNG

3. Настроить параметр "Сетевой адрес" компьютера.

4. Настроить следующие параметры триггера:

  1. единица измерения (period_unit): секунда;
  2. интервал в единицах измерения (period_count): 1;
  3. повторять через интервал или выполнить один раз в указанное время (repeat): 0;
  4. задействовать триггер (enabled): true;
  5. в настройках:
5.1 данные о движении объекта в некотором формате (settings.input):
48.39250538706612,53.08561325603247,0 48.3916008019351,53.08549340734039,0 48.39167409940283,53.0853119589439,0 48.39181445107519,53.08495754008844,0 48.39209640494313,53.08438800284189,0 48.39227957653078,53.08389896728745,0 48.39283025959841,53.08396288429309,0 48.39373600936838,53.08412382293808,0 48.39360388037241,53.08466109322499,0 48.39313385277075,53.08562609372662,0 48.39250538706612,53.08561325603247,0;
5.2 регулярное выражение для разбора данных (settings.pattern), должно содержать три именованные группы с именами longitude, latitude и altitude:
(?:(?<longitude>-?\d+\.?\d*),(?<latitude>-?\d+\.?\d*),(?<altitude>-?\d+\.?\d*))\s*;
5.3 идентификатор двигаемого объекта (settings.target). Для этого необходимо зайти в свойства элемента Большой корабль и нажать на ссылку "Большой корабль". Идентификатор скопируется в буфер обмена. В данном случае это: 2e3b0a7a-cb77-4c93-b461-7c8672dace06.
PositionSimulator 8.png

После сохранения параметров триггера в параметре "Расположение" двигаемого элемента с периодичностью в 1 секунду будут устанавливаться значения.