Симулятор событий (State simulator 1) — различия между версиями

Материал из Integra-S Wiki
Перейти к: навигация, поиск
(Построение схемы)
 
(не показаны 23 промежуточные версии этого же участника)
Строка 1: Строка 1:
Тестирование системы.
+
Тестирование системы. Скрипт работает с одной локальной базой интеграции.
  
==Настройка==
+
==Построение схемы==
===Добавления триггера EgsScheduled===
+
Для построения схемы требуется:
  
Триггер '''EgsScheduled''' можно добавить двумя способами:
+
1. Добавить триггер '''EgsScheduled'''.
  
====Добавление триггера EgsScheduled по ссылке====
+
:Для этого необходимо:
  
Для добавления скрипта необходимо:
+
:1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент '''EgsScheduled'''.
 
 
1. Импортировать скрипт по следующей ссылке: <code>http://maps.integra-s.com/resources/typedef2017/egs/State%20simulator%201.put.</code>
 
 
 
2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
 
 
 
[[File:Scheduled_com_1.png|центр|1000px]]
 
 
 
3. В открывшемся окне выбрать импортированный скрипт "State simulator 1.put".
 
 
 
[[File:StateSimulator_1.PNG|1000px]]
 
 
 
Элемент появится на рабочей области.
 
 
 
[[File:Scheduled_com_3.png|центр|1000px]]
 
 
 
====Добавление триггера вручную====
 
 
 
Для того чтобы добавить триггер вручную, необходимо:
 
 
 
1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент '''EgsScheduled'''.
 
  
 
[[File:Scheduled_com_4.png|центр]]
 
[[File:Scheduled_com_4.png|центр]]
  
2. Дважды нажать на выбранный элемент.
+
:2. Дважды нажать на выбранный элемент, после чего появится окно для добавления элемента.  
 
 
После этого появится окно для добавления элемента.  
 
  
 
[[File:Scheduled_com_5.png|центр]]
 
[[File:Scheduled_com_5.png|центр]]
  
3. Нажать кнопку "Добавить".  
+
:3. Нажать кнопку "Добавить". Элемент появится на рабочей области.
  
Также все элементы можно добавлять путем захвата и перетаскивания на рабочую область левой кнопкой мыши.
+
[[File:Scheduled_com_3.png|центр|1000px]]
  
===Построение схемы===
+
:''Также все элементы можно добавлять путем захвата и перетаскивания на рабочую область левой кнопкой мыши.''
  
Для дальнейшего построения схемы необходимо:
+
2. Аналогично пункту 1 добавить элементы Egs Модуль '''EgsModule''',  менеджер '''AcuarioManager''' и компьютер '''Computer'''.
 
 
1. Добавить элемент '''EgsModule''',  менеджер '''AcuarioManager''' и компьютер '''Computer'''.
 
  
 
[[File:Scheduled_com_6.PNG|центр|1000px]]
 
[[File:Scheduled_com_6.PNG|центр|1000px]]
  
2. Настроить сетевой адрес компьютера.  
+
3. Настроить сетевой адрес компьютера.  
  
Для этого  необходимо выделить на схеме элемент '''Computer''' и нажать на кнопку вызова свойств элемента.  
+
Для этого  необходимо выделить на схеме компьютер и нажать на кнопку вызова свойств элемента.  
  
 
В окне свойств элемента указать ip адрес используемого компьютера в строке "Сетевой адрес".
 
В окне свойств элемента указать ip адрес используемого компьютера в строке "Сетевой адрес".
Строка 58: Строка 34:
 
[[File:Scheduled_com_7.PNG|центр|1000px]]
 
[[File:Scheduled_com_7.PNG|центр|1000px]]
  
3. Связать '''EgsScheduled''' и '''Egs Модуль''', подключив пины «'''Egs вход: EgsInput'''» у '''EgsScheduled''' и  «'''Egs выход: EgsOutput'''» у '''Egs Модуля'''.
+
4. Связать '''EgsScheduled''' и '''Egs Модуль''', подключив пины «'''Egs вход: EgsInput'''» у '''EgsScheduled''' и  «'''Egs выход: EgsOutput'''» у '''Egs Модуля'''.
  
 
[[File:StateSimulator_2.PNG|центр|1000px]]
 
[[File:StateSimulator_2.PNG|центр|1000px]]
  
4. Привязать пин "'''Привязка к менеджеру: ManagingContent'''" из '''Egs Модуля''' к пину "'''Привязка к менеджеру: ManagingContainer'''" из '''Менеджера устройств'''.
+
5. Привязать пин "'''Привязка к менеджеру: ManagingContent'''" из '''Egs Модуля''' к пину "'''Менеджер устройств: ManagingContainer'''" из '''Менеджера устройств'''.
  
 
[[File:Scheduled_com_9.PNG|центр|1000px]]
 
[[File:Scheduled_com_9.PNG|центр|1000px]]
  
5. Подключить пин "'''ПО: SoftwareContent'''" из '''Менеджера устройств''' с пином "'''Установленное ПО: SoftwareContainer'''" из '''Компьютера'''.
+
6. Подключить пин "'''ПО: SoftwareContent'''" из '''Менеджера устройств''' с пином "'''Установленное ПО: SoftwareContainer'''" из '''Компьютера'''.
  
 
[[File:StateSimulator_3.PNG|центр|1000px]]
 
[[File:StateSimulator_3.PNG|центр|1000px]]
  
''Замечание:''
+
7. Настроить следующие параметры триггера:
  
''Если скрипт не был импортирован, то для триггера необходимо настроить параметры:''
+
#текст скрипта ('''script''')'' <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/State%20simulator%202.put&path=0/params/script/value;</code>
 
+
#единица измерения ('''period_unit'''), например: секунда;
#''текст скрипта ('''script''')'' <code>http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/State%20simulator%201.put&path=0/params/script/value;</code>
+
#интервал в единицах измерения ('''period_count'''), например: 1;
#''тип ('''typedef''') '' <code>http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/State%20simulator%201.put&path=0/params/typedef/value;</code>
+
#точное время внутри интервала ('''period_time'''), например: 00:00:00, 14:30:00;
#''единица измерения ('''period_unit'''), например: секунда;''
+
#повторять через интервал или выполнить один раз в указанное время ('''repeat'''), например: 0 (бесконечно), 1 (один раз), 100;
#''интервал в единицах измерения ('''period_count'''), например: 1;''
+
#задействовать триггер ('''enabled'''), например: true;
#''точное время внутри интервала ('''period_time'''), например: 00:00:00, 14:30:00;''
+
#в настройках:
#''повторять через интервал или выполнить один раз в указанное время ('''repeat'''), например: 0 (бесконечно), 1 (один раз), 100;''
+
##тип устройства, участвующего в симуляции ('''settings.types'''), например: Onvif_*;
#''задействовать триггер ('''enabled'''), например: true;''
+
##список масок имен событий, участвующих в симуляции ('''settings.states'''), например:  alarm_*, error_*;
#''в настройках:''
+
##клиентское время начала симуляции ('''settings.time_start'''), если не указано, используется текущее время;
##''список масок имен типов, участвующих в симуляции ('''settings.types'''), например: Onvif_*;''
+
##клиентское время окончания симуляции '''(settings.time_stop'''), если указано, то по его достижении симуляция останавливается;
##''список масок имен событий, участвующих в симуляции ('''settings.states'''), например:  alarm_*, error_*;''
+
##приращение клиентского времени  ('''settings.time_gain'''), добавляется к settings.time_start на каждой итерации;
##''клиентское время начала симуляции ('''settings.time_start'''), если не указано, используется текущее время;''
+
##отклонение приращения клиентского времени ('''settings.time_yaw''').
##''клиентское время окончания симуляции '''(settings.time_stop'''), если указано, то по его достижении симуляция останавливается;''
 
##''приращение клиентского времени  ('''settings.time_gain'''), добавляется к settings.time_start на каждой итерации;''
 
##''отклонение приращения клиентского времени ('''settings.time_yaw''')''.
 
 
 
''Tекущее клиентское время итерации рассчитывается по следующей формуле:''
 
''текущее_время = предыдущее_время + приращение + случайное_число_из_интервала от - отклонение до + отклонение''
 
''Если settings.time_gain не указано и repeat более нуля, то приращение рассчитывается по следующей формуле:''
 
''приращение = (время_окончания - время_начала) / количество_итераций''
 
 
 
''Настройку параметров триггера также можно выполнить, нажав правой кнопкой мыши по элементу '''EgsScheduled''' и в контекстном меню выбрав пункт "Редактировать параметры".''
 
  
[[File:OutdatedRemover_4.png|центр]]
+
Tекущее клиентское время итерации рассчитывается по следующей формуле:
 +
текущее_время = предыдущее_время + приращение + случайное_число_из_интервала от - отклонение до + отклонение
 +
Если settings.time_gain не указано и repeat более нуля, то приращение рассчитывается по следующей формуле:
 +
приращение = (время_окончания - время_начала) / количество_итераций
  
''После этого откроется окно для редактирования параметров.''
+
Настройку параметров триггера можно выполнить, открыв свойства элемента.
  
[[File:OutdatedRemover_5.PNG|центр]]
+
[[File:StateSimulator_6.PNG|центр]]
  
''Также это можно выполнить, открыв свойства элемента.''
+
==Маски состояний==
 
+
Маски могут быть как точным именами состояний, так и их частями, содержащими следующие контрольные символы:
[[File:OutdatedRemover_6.PNG|центр]]
 
 
 
==Маски типов и состояний==
 
Маски могут быть как точным именами типов или состояний, так и их частями, содержащими следующие контрольные символы:
 
  
 
  ? - любой одиночный символ;
 
  ? - любой одиночный символ;
Строка 116: Строка 81:
  
 
==Проверка==
 
==Проверка==
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке <code>http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/Outdated%20remover%201.put&path=0/params/hash/value</code>
+
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/State%20simulator%202.put&path=0/params/hash/valuee</code>
  
 
''Хэш-сумма будет совпадать только в том случае, если скрипт не был изменен.''
 
''Хэш-сумма будет совпадать только в том случае, если скрипт не был изменен.''
Строка 122: Строка 87:
 
==Алгоритм работы==
 
==Алгоритм работы==
  
#Выбираются объекты типов, соответствующих хотя бы одной маске из списка '''settings.types'''.
+
#Из объектов типа '''settings.types''', выбирается объект с наименьшей версией.
#Из них выбираются такие, у которых время последнего изменения плюс '''settings.timeout''' больше текущего времени.
+
#Для выбранного объекта выбирается состояние, соответствующее хотя бы одной маске из списка '''settings.states'''.
#Выбранным объектам проставляется флаг удаления.
+
#Если необходимо, рассчитывается клиентское время события.
 +
#Изменяется состояние объекта.
  
 
==Пример работы==
 
==Пример работы==
Строка 130: Строка 96:
 
Для построения схемы необходимо:
 
Для построения схемы необходимо:
  
1. Создать схему по выше описанному алгоритму.
+
1. Создать схему по выше описанному алгоритму (см. [[Симулятор_событий_(State_simulator_1)#Построение_схемы|Построение схемы]]).
 
   
 
   
[[File:OutdatedRemover_3.PNG|центр|1000px]]
+
[[File:StateSimulator_3.PNG|центр|1000px]]
  
2. Добавить элемент Болид Пожарный датчик.
+
2. Добавить элемент Турникет.
  
[[File:OutdatedRemover_7.PNG|центр|1000px]]
+
[[File:StateSimulator_7.PNG|центр|1000px]]
  
 
3. Настроить параметр "Сетевой адрес" компьютера.
 
3. Настроить параметр "Сетевой адрес" компьютера.
Строка 147: Строка 113:
 
#задействовать триггер ('''enabled'''): true;
 
#задействовать триггер ('''enabled'''): true;
 
#в настройках:
 
#в настройках:
## список масок имен типов, участвующих в симуляции ('''settings.types'''): BOLID_*;
+
##тип ('''settings.types'''): Turnstile;
##интервал, в течении которого объект должен обновиться ('''settings.timeout'''):  00.00:00:01.
+
##список масок имен событий, участвующих в симуляции ('''settings.states'''): alarm_*;
 +
##клиентское время начала симуляции ('''settings.time_start'''): 2018-01-01T00:00:00;
 +
##клиентское время окончания симуляции ('''settings.time_stop'''): 2019-01-01T00:00:00;
 +
##приращение клиентского времени ('''settings.time_gain'''): 00:00:10;
 +
##отклонение приращения клиентского времени ('''settings.time_yaw'''): 00:00:00.
 +
 
 +
'''Результат''':
 +
 
 +
Состояние турникета будет устанавливаться в состояние "Тревога".
 +
 
 +
==Дополнения==
 +
1. В пункте 1 раздела [[Симулятор_событий_(State_simulator_1)#Построение_схемы|Построение схемы]] добавление триггера '''EgsScheduled''' можно осуществить по ссылке.
 +
 
 +
Для этого необходимо:
 +
 
 +
:1. Импортировать скрипт по следующей ссылке: <code>http://maps.integra-s.com:5434/resources/typedef2017/egs/State%20simulator%202.put.</code>
 +
:2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
 +
 
 +
[[File:Scheduled_com_1.png|центр|1000px]]
 +
 
 +
:3. В открывшемся окне выбрать импортированный скрипт "State simulator 1.put".
 +
 
 +
[[File:StateSimulator_1.PNG|центр|1000px]]
 +
 
 +
:Элемент появится на рабочей области.
 +
 
 +
[[File:Scheduled_com_3.png|центр|1000px]]
 +
 
 +
2. В пункте 7 раздела [[Симулятор_событий_(State_simulator_1)#Построение_схемы|Построение схемы]] редактирование параметров элемента можно осуществить, выделив элемент правой кнопкой мыши и в контекстном меню выбрав пункт "Редактировать параметры".
 +
 
 +
[[File:StateSimulator_4.png|центр]]
  
5. В свойствах пожарного датчика настроить параметр последнее обслуживание ('''maintenanceLast'''): 2016-04-01T10:00:00.
+
:После этого откроется окно для редактирования параметров.''
  
После сохранения параметров пожарный датчик удалится.
+
[[File:StateSimulator_5.PNG|центр|1000px]]

Текущая версия на 12:41, 6 марта 2019

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

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

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

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

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

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

Scheduled com 6.PNG

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

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

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

Scheduled com 7.PNG

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

StateSimulator 2.PNG

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

Scheduled com 9.PNG

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

StateSimulator 3.PNG

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

  1. текст скрипта (script) http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/State%20simulator%202.put&path=0/params/script/value;
  2. единица измерения (period_unit), например: секунда;
  3. интервал в единицах измерения (period_count), например: 1;
  4. точное время внутри интервала (period_time), например: 00:00:00, 14:30:00;
  5. повторять через интервал или выполнить один раз в указанное время (repeat), например: 0 (бесконечно), 1 (один раз), 100;
  6. задействовать триггер (enabled), например: true;
  7. в настройках:
    1. тип устройства, участвующего в симуляции (settings.types), например: Onvif_*;
    2. список масок имен событий, участвующих в симуляции (settings.states), например: alarm_*, error_*;
    3. клиентское время начала симуляции (settings.time_start), если не указано, используется текущее время;
    4. клиентское время окончания симуляции (settings.time_stop), если указано, то по его достижении симуляция останавливается;
    5. приращение клиентского времени (settings.time_gain), добавляется к settings.time_start на каждой итерации;
    6. отклонение приращения клиентского времени (settings.time_yaw).

Tекущее клиентское время итерации рассчитывается по следующей формуле:

текущее_время = предыдущее_время + приращение + случайное_число_из_интервала от - отклонение до + отклонение

Если settings.time_gain не указано и repeat более нуля, то приращение рассчитывается по следующей формуле:

приращение = (время_окончания - время_начала) / количество_итераций

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

StateSimulator 6.PNG

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

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

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

Проверка

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

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

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

  1. Из объектов типа settings.types, выбирается объект с наименьшей версией.
  2. Для выбранного объекта выбирается состояние, соответствующее хотя бы одной маске из списка settings.states.
  3. Если необходимо, рассчитывается клиентское время события.
  4. Изменяется состояние объекта.

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

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

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

StateSimulator 3.PNG

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

StateSimulator 7.PNG

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

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

  1. единица измерения (period_unit): секунда;
  2. интервал в единицах измерения (period_count): 1;
  3. повторять через интервал или выполнить один раз в указанное время (repeat): 0;
  4. задействовать триггер (enabled): true;
  5. в настройках:
    1. тип (settings.types): Turnstile;
    2. список масок имен событий, участвующих в симуляции (settings.states): alarm_*;
    3. клиентское время начала симуляции (settings.time_start): 2018-01-01T00:00:00;
    4. клиентское время окончания симуляции (settings.time_stop): 2019-01-01T00:00:00;
    5. приращение клиентского времени (settings.time_gain): 00:00:10;
    6. отклонение приращения клиентского времени (settings.time_yaw): 00:00:00.

Результат:

Состояние турникета будет устанавливаться в состояние "Тревога".

Дополнения

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

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

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

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

StateSimulator 4.png
После этого откроется окно для редактирования параметров.
StateSimulator 5.PNG