Команда по условию (Responsive commander) — различия между версиями
Mikheeva (обсуждение | вклад) (→Дополнения) |
Mikheeva (обсуждение | вклад) (→Проверка) |
||
(не показано 6 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
− | Отправка команды устройствам по условию на языке скрипта. | + | Отправка команды устройствам по условию на языке скрипта. Скрипт работает с одной локальной базой интеграции. |
==Построение схемы== | ==Построение схемы== | ||
Строка 37: | Строка 37: | ||
[[File:ResponsiveCommander_5.PNG|центр|1000px]] | [[File:ResponsiveCommander_5.PNG|центр|1000px]] | ||
− | 5. Привязать пин "'''Привязка к менеджеру: ManagingContent'''" из '''Egs Модуля''' к пину "''' | + | 5. Привязать пин "'''Привязка к менеджеру: ManagingContent'''" из '''Egs Модуля''' к пину "'''Менеджер устройств: ManagingContainer'''" из '''Менеджера устройств'''. |
[[File:Scheduled_com_9.PNG|центр|1000px]] | [[File:Scheduled_com_9.PNG|центр|1000px]] | ||
Строка 53: | Строка 53: | ||
##условие для отправки команды ('''source_condition'''), например: state is "alarm_alarm", string(state) like "alarm_*", temperature > 100, temperature < 10 or temperature > 20; | ##условие для отправки команды ('''source_condition'''), например: state is "alarm_alarm", string(state) like "alarm_*", temperature > 100, temperature < 10 or temperature > 20; | ||
##имя типа линка, соединяющего источник и приемник ('''link_type'''), например: LogicLink, Position; | ##имя типа линка, соединяющего источник и приемник ('''link_type'''), например: LogicLink, Position; | ||
− | ##флаг, указывающий по одну или по разные стороны линка находятся источник события и приемник команды ('''link_same_side'''), см. примеры | + | ##флаг, указывающий по одну или по разные стороны линка находятся источник события и приемник команды ('''link_same_side'''), см. примеры внизу; |
##тип объекта приемника команд ('''target_types'''), например: Turnstile; | ##тип объекта приемника команд ('''target_types'''), например: Turnstile; | ||
##список идентификаторов объектов приемников команд ('''target_guids'''), например: 119eee75-8a52-4443-b537-aac86d3a8a8f; | ##список идентификаторов объектов приемников команд ('''target_guids'''), например: 119eee75-8a52-4443-b537-aac86d3a8a8f; | ||
Строка 65: | Строка 65: | ||
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке <code>http:http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Responsive%20commander%203.put&path=0/params/hash/value</code> | После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке <code>http:http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Responsive%20commander%203.put&path=0/params/hash/value</code> | ||
− | ''Хэш-сумма будет совпадать только в том случае, если скрипт не был изменен.'' | + | ''Хэш-сумма будет совпадать только в том случае, если скрипт был импортирован и не был изменен.'' |
==Алгоритм работы== | ==Алгоритм работы== | ||
Строка 78: | Строка 78: | ||
##выбранным объектам в поле '''command''' записывается команда '''settings.target_command'''. | ##выбранным объектам в поле '''command''' записывается команда '''settings.target_command'''. | ||
#Если в '''settings.link_type''' не указан тип линка: | #Если в '''settings.link_type''' не указан тип линка: | ||
− | ##выбираются все объекты типов, соответствующих хотя бы одной маске из списка '''settings.target_types''', либо имеющие идентификатор из списка '''settings.target_guids'''. | + | ##выбираются все объекты типов, соответствующих хотя бы одной маске из списка '''settings.target_types''', либо имеющие идентификатор из списка '''settings.target_guids''' (если указано). |
##выбранным объектам в поле '''command''' записывается команда '''settings.target_command'''. | ##выбранным объектам в поле '''command''' записывается команда '''settings.target_command'''. | ||
Строка 84: | Строка 84: | ||
1. По тревоге от любого датчика пожарной сигнализации открыть на выход все турникеты. | 1. По тревоге от любого датчика пожарной сигнализации открыть на выход все турникеты. | ||
{ | { | ||
− | + | source_types: FireSecurityCategory | |
− | + | source_guids: | |
− | + | source_condition: string(state) like "alarm_*" | |
− | + | link_type: | |
− | + | link_same_side: false | |
− | + | target_types: Turnstile | |
− | + | target_guids: | |
− | + | target_command: open_out | |
} | } | ||
2. По тревоге от датчика пожарной сигнализации открыть на выход турникет, связанный с ним линком '''LogicLink'''. | 2. По тревоге от датчика пожарной сигнализации открыть на выход турникет, связанный с ним линком '''LogicLink'''. | ||
{ | { | ||
− | + | source_types: FireSecurityCategory | |
− | + | source_guids: | |
− | + | source_condition: string(state) like "alarm_*", | |
− | + | link_type: LogicLink | |
− | + | link_same_side: false | |
− | + | target_types: Turnstile | |
− | + | target_guids: | |
− | + | target_command: open_out | |
} | } | ||
3. По тревоге от датчика пожарной сигнализации открыть на выход турникет, находящийся в том же помещении, т.е. связанный с тем же объектом типа '''Space'''. | 3. По тревоге от датчика пожарной сигнализации открыть на выход турникет, находящийся в том же помещении, т.е. связанный с тем же объектом типа '''Space'''. | ||
{ | { | ||
− | + | source_types: FireSecurityCategory | |
− | + | source_guids: | |
− | + | source_condition: string(state) like "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. | 4. По тревоге от датчика пожарной сигнализации c идентификатором 7cd95cde-e320-456e-afc1-475899d78707 открыть на выход турникет с идентификатором 119eee75-8a52-4443-b537-aac86d3a8a8f. | ||
{ | { | ||
− | + | source_types:FireSecurityCategory | |
− | + | source_guids: 7cd95cde-e320-456e-afc1-475899d78707 | |
− | + | source_condition: string(state) like "alarm_*" | |
− | + | link_type: | |
− | + | link_same_side: false | |
− | + | target_types: Turnstile | |
− | + | target_guids: 119eee75-8a52-4443-b537-aac86d3a8a8f | |
− | + | target_command: open_out | |
} | } | ||
Строка 144: | Строка 144: | ||
#тип объекта источника событий ('''source_types'''): "Computer"; | #тип объекта источника событий ('''source_types'''): "Computer"; | ||
− | #условие для отправки команды (''' | + | #условие для отправки команды ('''source_condition'''): cpu-temp>100; |
#имя типа линка, соединяющего источник и приемник ('''link_type'''): ""; | #имя типа линка, соединяющего источник и приемник ('''link_type'''): ""; | ||
#флаг, указывающий по одну или по разные стороны линка находятся источник события и приемник команды ('''link_same_side'''): false; | #флаг, указывающий по одну или по разные стороны линка находятся источник события и приемник команды ('''link_same_side'''): false; |
Текущая версия на 11:44, 21 мая 2019
Отправка команды устройствам по условию на языке скрипта. Скрипт работает с одной локальной базой интеграции.
Содержание
Построение схемы
Для построения схемы требуется:
1. Добавить триггер EgsObjectUpdated.
- Для этого необходимо:
- 1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент EgsObjectUpdated.
- 2. Дважды нажать на выбранный элемент, после чего появится окно для добавления элемента.
- 3. Нажать кнопку "Добавить". Элемент появится на рабочей области.
2. Аналогично пункту 1 добавить элементы Egs Модуль EgsModule, менеджер AcuarioManager и компьютер Computer.
3. Настроить сетевой адрес компьютера.
Для этого необходимо выделить на схеме компьютер и нажать на кнопку вызова свойств элемента.
В окне свойств элемента указать ip адрес используемого компьютера в строке "Сетевой адрес".
4. Связать EgsObjectUpdated и Egs Модуль, подключив пины «Egs вход: EgsInput» у EgsObjectUpdated и «Egs выход: EgsOutput» у Egs Модуля.
5. Привязать пин "Привязка к менеджеру: ManagingContent" из Egs Модуля к пину "Менеджер устройств: ManagingContainer" из Менеджера устройств.
6. Подключить пин "ПО: SoftwareContent" из Менеджера устройств с пином "Установленное ПО: SoftwareContainer" из Компьютера.
7. Настроить следующие параметры триггера:
- текст скрипта (script)
http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Responsive%20commander%203.put&path=0/params/script/value;
- в настройках:
- тип объекта источника событий (source_types), например: FireSecurityCategory;
- список идентификаторов объектов источников событий (source_guids), например: 7cd95cde-e320-456e-afc1-475899d78707;
- условие для отправки команды (source_condition), например: state is "alarm_alarm", string(state) like "alarm_*", temperature > 100, temperature < 10 or temperature > 20;
- имя типа линка, соединяющего источник и приемник (link_type), например: LogicLink, Position;
- флаг, указывающий по одну или по разные стороны линка находятся источник события и приемник команды (link_same_side), см. примеры внизу;
- тип объекта приемника команд (target_types), например: Turnstile;
- список идентификаторов объектов приемников команд (target_guids), например: 119eee75-8a52-4443-b537-aac86d3a8a8f;
- отправляемая команда (target_command), например: activate, deactivate, open_out.
Настройку параметров триггера можно выполнить, открыв свойства элемента.
Проверка
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке http:http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Responsive%20commander%203.put&path=0/params/hash/value
Хэш-сумма будет совпадать только в том случае, если скрипт был импортирован и не был изменен.
Алгоритм работы
- Проверяется, чтобы объект источник события имел тип settings.source_types и идентификатор из списка settings.source_guids (если указано).
- Проверяется, что условие в settings.source_condition выполняется.
- Если в 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: source_condition: string(state) like "alarm_*" link_type: link_same_side: false target_types: Turnstile target_guids: target_command: open_out }
2. По тревоге от датчика пожарной сигнализации открыть на выход турникет, связанный с ним линком LogicLink.
{ source_types: FireSecurityCategory source_guids: source_condition: string(state) like "alarm_*", link_type: LogicLink link_same_side: false target_types: Turnstile target_guids: target_command: open_out }
3. По тревоге от датчика пожарной сигнализации открыть на выход турникет, находящийся в том же помещении, т.е. связанный с тем же объектом типа Space.
{ source_types: FireSecurityCategory source_guids: source_condition: string(state) like "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:FireSecurityCategory source_guids: 7cd95cde-e320-456e-afc1-475899d78707 source_condition: string(state) like "alarm_*" link_type: link_same_side: false target_types: Turnstile target_guids: 119eee75-8a52-4443-b537-aac86d3a8a8f target_command: open_out }
Пример работы
Для построения схемы необходимо:
1. Создать схему по выше описанному алгоритму (см. Построение схемы).
2. Добавить элемент Турникет.
3. Настроить параметр "Сетевой адрес" компьютера.
4. Настроить следующие параметры триггера:
- тип объекта источника событий (source_types): "Computer";
- условие для отправки команды (source_condition): cpu-temp>100;
- имя типа линка, соединяющего источник и приемник (link_type): "";
- флаг, указывающий по одну или по разные стороны линка находятся источник события и приемник команды (link_same_side): false;
- тип объекта приемника команд (target_types): "Turnstile";
- список идентификаторов объектов приемников команд (target_guids). В данном случае это турникет с идентификатором: 70500b89-8b04-46b3-9173-6a48ecd78e61;
- отправляемая команда (target_command): open_out;
- список идентификаторов объектов источников событий (source_guids).
Для этого необходимо зайти в свойства компьютера и нажать на ссылку "Компьютер". Идентификатор будет скопирован в буфер обмена. В данном случае это: 19db0aa3-b998-4709-a2d7-03fca6bc675c.
Результат:
Если температура CPU превысит 100 градусов, выполнится команда "открыть на выход" турникет.
Дополнения
1. В пункте 1 раздела Построение схемы добавление триггера EgsObjectUpdated можно осуществить по ссылке.
Для этого необходимо:
- 1. Импортировать скрипт по следующей ссылке:
http://maps.integra-s.com:5434/resources/typedef2017/egs/Responsive%20commander%203.put.
- 2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
- 3. В открывшемся окне выбрать импортированный скрипт "Responsive commander.put".
- Элемент появится на рабочей области.
2. В пункте 7 раздела Построение схемы редактирование параметров элемента можно осуществить, выделив элемент правой кнопкой мыши и в контекстном меню выбрав пункт "Редактировать параметры".
- После этого откроется окно для редактирования параметров.