Команда по условию (Responsive commander) — различия между версиями

Материал из Integra-S Wiki
Перейти к: навигация, поиск
(Пример работы)
(Проверка)
 
(не показано 11 промежуточных версий этого же участника)
Строка 1: Строка 1:
Отправка команды устройствам по условию на языке скрипта.
+
Отправка команды устройствам по условию на языке скрипта. Скрипт работает с одной локальной базой интеграции.
  
 
==Построение схемы==
 
==Построение схемы==
Строка 37: Строка 37:
 
[[File:ResponsiveCommander_5.PNG|центр|1000px]]
 
[[File:ResponsiveCommander_5.PNG|центр|1000px]]
  
5. Привязать пин "'''Привязка к менеджеру: ManagingContent'''" из '''Egs Модуля''' к пину "'''Привязка к менеджеру: ManagingContainer'''" из '''Менеджера устройств'''.
+
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_types: FireSecurityCategory
     "source_guids": null,
+
     source_guids:  
     "source_condition": "string(state) like "alarm_*"",
+
     source_condition: string(state) like "alarm_*"
     "link_type": "",
+
     link_type:  
     "link_same_side": false,
+
     link_same_side: false
     "target_types": "Turnstile",
+
     target_types: Turnstile
     "target_guids": null,
+
     target_guids:  
     "target_command": "open_out"
+
     target_command: open_out
 
  }
 
  }
 
2. По тревоге от датчика пожарной сигнализации открыть на выход турникет, связанный с ним линком '''LogicLink'''.
 
2. По тревоге от датчика пожарной сигнализации открыть на выход турникет, связанный с ним линком '''LogicLink'''.
 
  {
 
  {
     "source_types": "FireSecurityCategory",
+
     source_types: FireSecurityCategory
     "source_guids": null,
+
     source_guids:  
     "source_condition": "string(state) like "alarm_*"",
+
     source_condition: string(state) like "alarm_*",
     "link_type": "LogicLink",
+
     link_type: LogicLink
     "link_same_side": false,
+
     link_same_side: false
     "target_types": "Turnstile",
+
     target_types: Turnstile
     "target_guids": null,
+
     target_guids:  
     "target_command": "open_out"
+
     target_command: open_out
 
  }
 
  }
 
3. По тревоге от датчика пожарной сигнализации открыть на выход турникет, находящийся в том же помещении, т.е. связанный с тем же объектом типа '''Space'''.
 
3. По тревоге от датчика пожарной сигнализации открыть на выход турникет, находящийся в том же помещении, т.е. связанный с тем же объектом типа '''Space'''.
 
  {
 
  {
     "source_types": "FireSecurityCategory",
+
     source_types: FireSecurityCategory
     "source_guids": [],
+
     source_guids:  
     "source_condition": "string(state) like "alarm_*"",
+
     source_condition: string(state) like "alarm_*"
     "link_type": "Position",
+
     link_type: Position
     "link_same_side": true,
+
     link_same_side: true
     "target_types": "Turnstile",
+
     target_types: Turnstile
     "target_guids": [],
+
     target_guids:  
     "target_command": "open_out"
+
     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_types:FireSecurityCategory
     "source_guids": ["7cd95cde-e320-456e-afc1-475899d78707"],
+
     source_guids: 7cd95cde-e320-456e-afc1-475899d78707
     "source_condition": "string(state) like "alarm_*"",
+
     source_condition: string(state) like "alarm_*"
     "link_type": "",
+
     link_type:  
     "link_same_side": false,
+
     link_same_side: false
     "target_types": Turnstile",
+
     target_types: Turnstile
     "target_guids": ["119eee75-8a52-4443-b537-aac86d3a8a8f"],
+
     target_guids: 119eee75-8a52-4443-b537-aac86d3a8a8f
     "target_command": "open_out"
+
     target_command: open_out
 
  }
 
  }
  
Строка 144: Строка 144:
  
 
#тип объекта источника событий ('''source_types'''): "Computer";
 
#тип объекта источника событий ('''source_types'''): "Computer";
#условие для отправки команды ('''source_states'''): cpu-temp>100;
+
#условие для отправки команды ('''source_condition'''): cpu-temp>100;
 
#имя типа линка, соединяющего источник и приемник ('''link_type'''): "";
 
#имя типа линка, соединяющего источник и приемник ('''link_type'''): "";
 
#флаг, указывающий по одну или по разные стороны линка находятся источник события и приемник команды ('''link_same_side'''): false;
 
#флаг, указывающий по одну или по разные стороны линка находятся источник события и приемник команды ('''link_same_side'''): false;
Строка 153: Строка 153:
 
Для этого необходимо зайти в свойства компьютера и нажать на ссылку "Компьютер". Идентификатор будет скопирован в буфер обмена. В данном случае это: 19db0aa3-b998-4709-a2d7-03fca6bc675c.
 
Для этого необходимо зайти в свойства компьютера и нажать на ссылку "Компьютер". Идентификатор будет скопирован в буфер обмена. В данном случае это: 19db0aa3-b998-4709-a2d7-03fca6bc675c.
  
[[File:ResponsiveCommander_13.png|центр|1000px]]
+
[[File:ResponsiveCommander_13.png|центр]]
  
 
'''Результат''':
 
'''Результат''':
Строка 164: Строка 164:
 
Для этого необходимо:
 
Для этого необходимо:
  
:1. Импортировать скрипт по следующей ссылке: <code>http://maps.integra-s.com:5434/resources/typedef2017/egs/Responsive%20commander%202.put.</code>
+
:1. Импортировать скрипт по следующей ссылке: <code>http://maps.integra-s.com:5434/resources/typedef2017/egs/Responsive%20commander%203.put.</code>
 
:2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
 
:2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
  
 
[[File:Scheduled_com_1.png|центр|1000px]]
 
[[File:Scheduled_com_1.png|центр|1000px]]
  
:3. В открывшемся окне выбрать импортированный скрипт "Outdated remover 1.put".
+
:3. В открывшемся окне выбрать импортированный скрипт "Responsive commander.put".
  
 
[[File:ResponsiveCommander_1.PNG|центр|1000px]]
 
[[File:ResponsiveCommander_1.PNG|центр|1000px]]
Строка 183: Строка 183:
 
:После этого откроется окно для редактирования параметров.''
 
:После этого откроется окно для редактирования параметров.''
  
[[File:ResponsiveCommander_8.PNG|центр|1000px]]
+
[[File:ResponsiveCommander_14.png|центр|1000px]]

Текущая версия на 11:44, 21 мая 2019

Отправка команды устройствам по условию на языке скрипта. Скрипт работает с одной локальной базой интеграции.

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

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

1. Добавить триггер EgsObjectUpdated.

Для этого необходимо:
1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент EgsObjectUpdated.
ResponsiveCommander 2.png
2. Дважды нажать на выбранный элемент, после чего появится окно для добавления элемента.
Scheduled com 5.png
3. Нажать кнопку "Добавить". Элемент появится на рабочей области.
ResponsiveCommander 3.PNG

2. Аналогично пункту 1 добавить элементы Egs Модуль EgsModule, менеджер AcuarioManager и компьютер Computer.

ResponsiveCommander 4.PNG

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

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

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

Scheduled com 7.PNG

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

ResponsiveCommander 5.PNG

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

Scheduled com 9.PNG

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

ResponsiveCommander 6.PNG

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

  1. текст скрипта (script) http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Responsive%20commander%203.put&path=0/params/script/value;
  2. в настройках:
    1. тип объекта источника событий (source_types), например: FireSecurityCategory;
    2. список идентификаторов объектов источников событий (source_guids), например: 7cd95cde-e320-456e-afc1-475899d78707;
    3. условие для отправки команды (source_condition), например: state is "alarm_alarm", string(state) like "alarm_*", temperature > 100, temperature < 10 or temperature > 20;
    4. имя типа линка, соединяющего источник и приемник (link_type), например: LogicLink, Position;
    5. флаг, указывающий по одну или по разные стороны линка находятся источник события и приемник команды (link_same_side), см. примеры внизу;
    6. тип объекта приемника команд (target_types), например: Turnstile;
    7. список идентификаторов объектов приемников команд (target_guids), например: 119eee75-8a52-4443-b537-aac86d3a8a8f;
    8. отправляемая команда (target_command), например: activate, deactivate, open_out.

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

ResponsiveCommander 9.PNG

Проверка

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

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

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

  1. Проверяется, чтобы объект источник события имел тип settings.source_types и идентификатор из списка settings.source_guids (если указано).
  2. Проверяется, что условие в settings.source_condition выполняется.
  3. Если в settings.link_type указан тип линка и settings.link_same_side равен false:
    1. выбираются все объекты, находящиеся с ранее выбранными по разную сторону линка settings.link_type;
    2. выбранным объектам в поле command записывается команда settings.target_command.
  4. Если в settings.link_type указан тип линка и settings.link_same_side равен true:
    1. выбираются все объекты, находящиеся с ранее выбранными по одну сторону линка settings.link_type;
    2. выбранным объектам в поле command записывается команда settings.target_command.
  5. Если в settings.link_type не указан тип линка:
    1. выбираются все объекты типов, соответствующих хотя бы одной маске из списка settings.target_types, либо имеющие идентификатор из списка settings.target_guids (если указано).
    2. выбранным объектам в поле 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. Создать схему по выше описанному алгоритму (см. Построение схемы).

ResponsiveCommander 6.PNG

2. Добавить элемент Турникет.

ResponsiveCommander 12.png

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

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

  1. тип объекта источника событий (source_types): "Computer";
  2. условие для отправки команды (source_condition): cpu-temp>100;
  3. имя типа линка, соединяющего источник и приемник (link_type): "";
  4. флаг, указывающий по одну или по разные стороны линка находятся источник события и приемник команды (link_same_side): false;
  5. тип объекта приемника команд (target_types): "Turnstile";
  6. список идентификаторов объектов приемников команд (target_guids). В данном случае это турникет с идентификатором: 70500b89-8b04-46b3-9173-6a48ecd78e61;
  7. отправляемая команда (target_command): open_out;
  8. список идентификаторов объектов источников событий (source_guids).

Для этого необходимо зайти в свойства компьютера и нажать на ссылку "Компьютер". Идентификатор будет скопирован в буфер обмена. В данном случае это: 19db0aa3-b998-4709-a2d7-03fca6bc675c.

ResponsiveCommander 13.png

Результат:

Если температура CPU превысит 100 градусов, выполнится команда "открыть на выход" турникет.

Дополнения

1. В пункте 1 раздела Построение схемы добавление триггера EgsObjectUpdated можно осуществить по ссылке.

Для этого необходимо:

1. Импортировать скрипт по следующей ссылке: http://maps.integra-s.com:5434/resources/typedef2017/egs/Responsive%20commander%203.put.
2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
Scheduled com 1.png
3. В открывшемся окне выбрать импортированный скрипт "Responsive commander.put".
ResponsiveCommander 1.PNG
Элемент появится на рабочей области.
ResponsiveCommander 3.PNG

2. В пункте 7 раздела Построение схемы редактирование параметров элемента можно осуществить, выделив элемент правой кнопкой мыши и в контекстном меню выбрав пункт "Редактировать параметры".

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