Трансляция состояний в события (State Event) — различия между версиями

Материал из Integra-S Wiki
Перейти к: навигация, поиск
(Маски состояний)
(Пример работы)
 
(не показано 13 промежуточных версий этого же участника)
Строка 54: Строка 54:
 
  }
 
  }
 
Таблица соответствий имеет вид json объекта, ключами которого являются либо имена типов устройств, либо их идентификаторы, а значениями - соответствующие им наборы масок состояний устройства, либо одна единственная маска. Точки в именах событий (например: ok.normal) следует заменять символом подчеркивания (например: ok_normal).
 
Таблица соответствий имеет вид json объекта, ключами которого являются либо имена типов устройств, либо их идентификаторы, а значениями - соответствующие им наборы масок состояний устройства, либо одна единственная маска. Точки в именах событий (например: ok.normal) следует заменять символом подчеркивания (например: ok_normal).
 +
 +
В события типа StateEvent транслируются следующие параметры:
 +
# Владелец (BaseEvent.owner) - идентификатор элемента
 +
# Сервер (BaseEvent.server) - идентификатор сервера
 +
# Расположение(BaseEvent.position) - географические координаты элемента
 +
# Состояние (StateEvent.state) - состояние элемента
 +
# Время (StateEvent.datetime) - время изменения состояния
 +
# Версия (StateEvent.version) - версия изменений элемента
 +
# Тип (StateEvent.itemtype) - тип элемента
 +
# Имя (StateEvent.name) - имя элемента
  
 
Настройку параметров триггера можно выполнить, открыв свойства элемента.
 
Настройку параметров триггера можно выполнить, открыв свойства элемента.
Строка 68: Строка 78:
  
 
==Проверка==
 
==Проверка==
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Smart%20zone%201.put&path=0/params/hash/value</code>
+
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/State%20Event%201.put&path=0/params/hash/value</code>
  
 
''Хэш-сумма будет совпадать только в том случае, если скрипт был импортирован и не был изменен.''
 
''Хэш-сумма будет совпадать только в том случае, если скрипт был импортирован и не был изменен.''
 
==Алгоритм работы==
 
 
#Если в зоне нет ни одного устройства: Состояние зоны устанавливается в неизвестно (none.unknown).
 
#Если в зоне одно устройство: Cостояние устройства транслируются в состояние зоны с автоматическим приведением к в норме (ok.normal), неисправно (error.defective), тревога (alarm.alarm).
 
#Если в зоне более одного устройства:
 
##Для перехода зоны в тревогу необходимо, чтобы в тревоге находились как минимум два устройства.
 
##Для перехода зоны в неисправность достаточно, чтобы хотя бы одно устройство было в состоянии неисправность, неизвестно или DEFAULT (2 тревоги приоритетнее).
 
##Для перехода зоны из тревоги в норму необходимо, чтобы все устройства пришли в норму.
 
##Для перехода зоны из неисправности в норму необходимо, чтобы пришли в норму все устройства, кроме одного, которое может быть в тревоге или норме.
 
#Команды activate и deactivate транслируются в соответствующие команды всех устройств.
 
  
 
==Пример работы==
 
==Пример работы==
Строка 89: Строка 88:
 
1. Создать схему по выше описанному алгоритму (см. [[Рассчитывание_состояния_зоны_(Smart_Zone)#Построение_схемы|Построение схемы]]).
 
1. Создать схему по выше описанному алгоритму (см. [[Рассчитывание_состояния_зоны_(Smart_Zone)#Построение_схемы|Построение схемы]]).
 
   
 
   
[[File:smart zones_1.PNG|центр|900px]]
+
[[File:StateEvent_1.PNG|центр|800px]]
  
2. Добавить элемент Зона и 3 IP видеокамеры, соединив пины "'''Зона:ZoneOutputPin'''" у Зоны и "'''Привязка к зоне:ZoneInputPin'''" у IP видеокамеры.
+
2. Добавить элемент Болид Подарный датчик и IP видеокамера.
  
[[File:smart zones_4.PNG|центр|900px]]
+
[[File:StateEvent_4.PNG|центр|800px]]
  
 
3. Настроить параметр "Сетевой адрес" компьютера.
 
3. Настроить параметр "Сетевой адрес" компьютера.
  
 
4. Настроить следующие параметры триггера:
 
4. Настроить следующие параметры триггера:
#текст скрипта (script): http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Smart%20zone%201.put&path=0/params/script/value;
+
#текст скрипта ('''script'''): <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/State%20Event%201.put&path=0/params/script/value;</code>
#задействовать триггер (enabled): true.
+
#задействовать триггер (enabled), например: true.
 +
#в настройках таблица соответствий типов или идентификаторов устройств набору фильтров состояний в json формате ('''table'''), см. ниже.
 +
{
 +
    "VideoCamera": [ "alarm_*", "ok_normal" ],
 +
    "b98fd896-dfc5-4e86-82f0-e491e436e3d9": "*"
 +
}
  
5. Установить в 2 IP видеокамерах состояние "Тревога".
+
:Для ввода идентификатора необходимо зайти в свойства элемента Болид Пожарный датчик и нажать на ссылку "Болид Пожарный датчик". Идентификатор будет скопирован в буфер обмена. В данном случае это: b98fd896-dfc5-4e86-82f0-e491e436e3d9.
 +
[[File:StateEvent_5.PNG|центр]]
  
 
'''Результат''':
 
'''Результат''':
  
В Зоне устанавливается состояние "Тревога".
+
Для просмотра результата необходимо зайти в [[Онлайн мониторинг событий | Менеджер событий]].
 +
 
 +
Настроить вкладку на необходимый сервер и параметр "Событие состояния" (StateEvent).
 +
 
 +
[[File:StateEvent_6.PNG|центр|500px]]
 +
 
 +
После изменения состояния в пожарном датчике или если в IP видеокамере установится тревожное состояние или в норме, данные события появятся в списке.
 +
[[File:StateEvent_7.PNG|центр|1400px]]
 +
 
 +
По нажатию на кнопку "Показать информацию" [[File:manager_38.PNG]] раскроется подробная информация о событии.
 +
[[File:StateEvent_8.PNG|центр|1400px]]
  
 
==Дополнения==
 
==Дополнения==
1. В пункте 1 раздела [[Рассчитывание_состояния_зоны_(Smart_Zone)#Построение_схемы|Построение схемы]] добавление триггера '''EgsObjectUpdated''' можно осуществить по ссылке.
+
1. В пункте 1 раздела [[Трансляция_состояний_в_события_(State_Event)#Построение_схемы|Построение схемы]] добавление триггера '''EgsObjectUpdated''' можно осуществить по ссылке.
  
 
Для этого необходимо:
 
Для этого необходимо:
  
:1. Импортировать скрипт по следующей ссылке: <code>http://maps.integra-s.com:5434/resources/typedef2017/egs/Smart%20zone%201.put.</code>
+
:1. Импортировать скрипт по следующей ссылке: <code>http://maps.integra-s.com:5434/resources/typedef2017/egs/State%20Event%201.put.</code>
 
:2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
 
:2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
  
 
[[File:Scheduled_com_1.png|центр|700px]]
 
[[File:Scheduled_com_1.png|центр|700px]]
  
:3. В открывшемся окне выбрать импортированный скрипт "Smart Zone.put".
+
:3. В открывшемся окне выбрать импортированный скрипт "State Event.put".
 
+
[[File:StateEvent_9.PNG|центр]]
[[File:smart zones_6.PNG|центр]]
 
  
 
:Элемент появится на рабочей области.
 
:Элемент появится на рабочей области.
 
 
[[File:ResponsiveCommander_3.PNG|центр|700px]]
 
[[File:ResponsiveCommander_3.PNG|центр|700px]]
  
2. В пункте 7 раздела [[Рассчитывание_состояния_зоны_(Smart_Zone)#Построение_схемы|Построение схемы]] редактирование параметров элемента можно осуществить, выделив элемент правой кнопкой мыши и в контекстном меню выбрав пункт "Редактировать параметры".
+
2. В пункте 7 раздела [[Трансляция_состояний_в_события_(State_Event)#Построение_схемы|Построение схемы]] редактирование параметров элемента можно осуществить, выделив элемент правой кнопкой мыши и в контекстном меню выбрав пункт "Редактировать параметры".
 
+
[[File:StateEvent_10.PNG|центр]]
[[File:smart zones_5.PNG|центр]]
 
  
 
:После этого откроется окно для редактирования параметров.''
 
:После этого откроется окно для редактирования параметров.''
[[File:smart zones_7.PNG|центр|900px]]
+
[[File:StateEvent_11.PNG|центр|1000px]]

Текущая версия на 11:15, 3 июня 2019

Отслеживание изменений состояния элементов, соответствующих по типу или гуиду какому либо фильтру состояний из таблицы соответствия. Трансляция состояний, удовлетворяющих выбранному фильтру, в события типа StateEvent.

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

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

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 Модуля.

StateEvent 2.PNG

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

Scheduled com 9.PNG

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

StateEvent 1.PNG

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

  1. текст скрипта (script): http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/State%20Event%201.put&path=0/params/script/value;
  2. задействовать триггер (enabled), например: true.
  3. в настройках таблица соответствий типов или идентификаторов устройств набору фильтров состояний в json формате (table), см. ниже.
{
   "VideoCamera": [ "alarm_*", "ok_normal" ],
    "4562ea51-77ff-4539-b087-3db8d52510b8": "*" 
}

Таблица соответствий имеет вид json объекта, ключами которого являются либо имена типов устройств, либо их идентификаторы, а значениями - соответствующие им наборы масок состояний устройства, либо одна единственная маска. Точки в именах событий (например: ok.normal) следует заменять символом подчеркивания (например: ok_normal).

В события типа StateEvent транслируются следующие параметры:

  1. Владелец (BaseEvent.owner) - идентификатор элемента
  2. Сервер (BaseEvent.server) - идентификатор сервера
  3. Расположение(BaseEvent.position) - географические координаты элемента
  4. Состояние (StateEvent.state) - состояние элемента
  5. Время (StateEvent.datetime) - время изменения состояния
  6. Версия (StateEvent.version) - версия изменений элемента
  7. Тип (StateEvent.itemtype) - тип элемента
  8. Имя (StateEvent.name) - имя элемента

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

StateEvent 3.PNG

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

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

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

Проверка

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

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

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

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

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

StateEvent 1.PNG

2. Добавить элемент Болид Подарный датчик и IP видеокамера.

StateEvent 4.PNG

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

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

  1. текст скрипта (script): http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/State%20Event%201.put&path=0/params/script/value;
  2. задействовать триггер (enabled), например: true.
  3. в настройках таблица соответствий типов или идентификаторов устройств набору фильтров состояний в json формате (table), см. ниже.
{
   "VideoCamera": [ "alarm_*", "ok_normal" ],
    "b98fd896-dfc5-4e86-82f0-e491e436e3d9": "*" 
}
Для ввода идентификатора необходимо зайти в свойства элемента Болид Пожарный датчик и нажать на ссылку "Болид Пожарный датчик". Идентификатор будет скопирован в буфер обмена. В данном случае это: b98fd896-dfc5-4e86-82f0-e491e436e3d9.
StateEvent 5.PNG

Результат:

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

Настроить вкладку на необходимый сервер и параметр "Событие состояния" (StateEvent).

StateEvent 6.PNG

После изменения состояния в пожарном датчике или если в IP видеокамере установится тревожное состояние или в норме, данные события появятся в списке.

StateEvent 7.PNG

По нажатию на кнопку "Показать информацию" Manager 38.PNG раскроется подробная информация о событии.

StateEvent 8.PNG

Дополнения

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

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

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

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

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