Команда по событию (Responsive commander 1)
Отправка команды устройствам по событию от других устройств (или от самого себя).
Содержание
Настройка
Добавления триггера EgsObjectUpdated
Триггер EgsObjectUpdated можно добавить двумя способами:
Добавление триггера EgsObjectUpdated по ссылке
Для добавления скрипта необходимо:
1. Импортировать скрипт по следующей ссылке: http://maps.integra-s.com/resources/typedef2017/egs/Responsive%20commander%201.put.
2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
3. В открывшемся окне выбрать импортированный скрипт "Responsive commander 1.put".
Элемент появится на рабочей области.
Добавление триггера вручную
Для того чтобы добавить триггер вручную, необходимо:
1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент EgsObjectUpdated.
2. Дважды нажать на выбранный элемент.
После этого появится окно для добавления элемента.
3. Нажать кнопку "Добавить".
Также все элементы можно добавлять путем захвата и перетаскивания на рабочую область левой кнопкой мыши.
Построение схемы
Для дальнейшего построения схемы необходимо:
1. Добавить элемент EgsModule, менеджер AcuarioManager и компьютер Computer.
2. Настроить сетевой адрес компьютера.
Для этого необходимо выделить на схеме элемент Computer и нажать на кнопку вызова свойств элемента.
В окне свойств элемента указать ip адрес используемого компьютера в строке "Сетевой адрес".
3. Связать EgsObjectUpdated и Egs Модуль, подключив пины «Egs вход: EgsInput» у EgsObjectUpdated и «Egs выход: EgsOutput» у Egs Модуля.
4. Привязать пин "Привязка к менеджеру: ManagingContent" из Egs Модуля к пину "Привязка к менеджеру: ManagingContainer" из Менеджера устройств.
5. Подключить пин "ПО: SoftwareContent" из Менеджера устройств с пином "Установленное ПО: SoftwareContainer" из Компьютера.
Замечание:
Если скрипт не был импортирован, то для триггера необходимо настроить параметры:
- текст скрипта (script)
http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/Responsive%20commander%201.put&path=0/params/script/value;
- тип (typedef)
http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/Responsive%20commander%201.put&path=0/params/typedef/value;
- в настройках:
- список масок имен типов источников событий (source_types), например: FireSecurityCategory, BOLID_*;
- список идентификаторов объектов источников событий (source_guids), например: 7cd95cde-e320-456e-afc1-475899d78707;
- список масок имен событий, активирующих скрипт (source_states), например: alarm_*, error_*;
- имя типа линка, соединяющего источник и приемник (link_type), например: LogicLink, Position;
- флаг, указывающий по одну или по разные стороны линка находятся источник события и приемник команды (link_same_side), см. примеры в низу;
- список масок имен типов приемников команд (target_types), например: Turnstile;
- список идентификаторов объектов приемников команд (target_guids), например: 119eee75-8a52-4443-b537-aac86d3a8a8f;
- отправляемая команда (target_command), например: activate, deactivate, open_out.
Настройку параметров триггера также можно выполнить, нажав правой кнопкой мыши по элементу EgsObjectUpdated и в контекстном меню выбрав пункт "Редактировать параметры".
После этого откроется окно для редактирования параметров.
Также это можно выполнить, открыв свойства элемента.
Маски типов и состояний
Маски могут быть как точным именами типов или состояний, так и их частями, содержащими следующие контрольные символы:
? - любой одиночный символ; * - ноль или более символов; # - любая цифра от 0 до 9; [ charlist ] - любой одиночный символ в charlist; [! charlist ] - любой одиночный символ, не включенный в charlist.
Проверка
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/Responsive%20commander%201.put&path=0/params/hash/value
Хэш-сумма будет совпадать только в том случае, если скрипт не был изменен.
Алгоритм работы
- Проверяется, чтобы объект источник события соответствовал хотя бы одной маске из списка settings.source_types, либо имел идентификатор из списка settings.source_guids.
- Проверяется, что список измененных параметров содержит состояние объекта, и значение состояния соответствует хотя бы одной маске из списка settings.source_states.
- Если в settings.link_type указан тип линка и settings.link_same_side равен false:
- выбираются все объекты, находящиеся с ранее выбранными по разную сторону линка settings.link_type;
- выбранным объектам в поле command записывается команда settings.target_command.
- Если в settings.link_type указан тип линка и settings.link_same_side равен true:
- выбираются все объекты, находящиеся с ранее выбранными по одну сторону линка settings.link_type;
- выбранным объектам в поле command записывается команда settings.target_command.
- Если в settings.link_type не указан тип линка:
- выбираются все объекты типов, соответствующих хотя бы одной маске из списка settings.target_types, либо имеющие идентификатор из списка settings.target_guids.
- выбранным объектам в поле command записывается команда settings.target_command.
Примеры использования
1. По тревоге от любого датчика пожарной сигнализации открыть на выход все турникеты.
{ "source_types": ["FireSecurityCategory"], "source_guids": null, "source_states": ["alarm_*"], "link_type": "", "link_same_side": false, "target_types": ["Turnstile"], "target_guids": null, "target_command": "open_out" }
2. По тревоге от датчика пожарной сигнализации открыть на выход турникет, связанный с ним линком LogicLink.
{ "source_types": ["FireSecurityCategory"], "source_guids": null, "source_states": ["alarm_*"], "link_type": "LogicLink", "link_same_side": false, "target_types": ["Turnstile"], "target_guids": null, "target_command": "open_out" }
3. По тревоге от датчика пожарной сигнализации открыть на выход турникет, находящийся в том же помещении, т.е. связанный с тем же объектом типа Space.
{ "source_types": ["FireSecurityCategory"], "source_guids": [], "source_states": ["alarm_*"], "link_type": "Position", "link_same_side": true, "target_types": ["Turnstile"], "target_guids": [], "target_command": "open_out" }
4. По тревоге от датчика пожарной сигнализации c идентификатором 7cd95cde-e320-456e-afc1-475899d78707 открыть на выход турникет с идентификатором 119eee75-8a52-4443-b537-aac86d3a8a8f.
{ "source_types": [], "source_guids": ["7cd95cde-e320-456e-afc1-475899d78707"], "source_states": ["alarm_*"], "link_type": "", "link_same_side": false, "target_types": [], "target_guids": ["119eee75-8a52-4443-b537-aac86d3a8a8f"], "target_command": "open_out" }
Пример работы
Для построения схемы необходимо:
1. Создать схему по выше описанному алгоритму.
2. Добавить элемент Большой корабль.
3. Настроить параметр "Сетевой адрес" компьютера.
4. Настроить следующие параметры триггера:
- единица измерения (period_unit): секунда;
- интервал в единицах измерения (period_count): 1;
- повторять через интервал или выполнить один раз в указанное время (repeat): 0;
- задействовать триггер (enabled): true;
- в настройках:
- 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.
После сохранения параметров триггера в параметре "Расположение" двигаемого элемента с периодичностью в 1 секунду будут устанавливаться значения.