Трансляция состояний в KKS(KKS Translator) — различия между версиями

Материал из Integra-S Wiki
Перейти к: навигация, поиск
(Построение схемы)
(Маски состояний)
 
(не показано 18 промежуточных версий этого же участника)
Строка 63: Строка 63:
 
     }
 
     }
 
  }
 
  }
 +
Таблица соответствий имеет вид json объекта, ключами которого являются имена произвольных типов объектов, а значениями другие json объекты, ключами которых, в свою очередь, являются маски состояний, а значениями соответствующие KKS коды. Точки в именах событий (например: ok.normal) следует заменять символом подчеркивания (например: ok_normal).
  
 
Настройку параметров триггера можно выполнить, открыв свойства элемента.
 
Настройку параметров триггера можно выполнить, открыв свойства элемента.
[[File:ProxiItem_6.PNG|центр]]
+
[[File:kks_3.PNG|центр]]
 +
 
 +
==Маски состояний==
 +
Маски могут быть как точным именами типов или состояний, так и их частями, содержащими следующие контрольные символы:
 +
 
 +
? - любой одиночный символ;
 +
* - ноль или более символов;
 +
# - любая цифра от 0 до 9;
 +
[ charlist ] - любой одиночный символ в charlist;
 +
[! charlist ] - любой одиночный символ, не включенный в charlist.
  
 
==Проверка==
 
==Проверка==
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Proxy%20item%202.put&path=0/params/hash/value</code>
+
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/KKS%20Translator%201.put&path=0/params/hash/value</code>
  
''Хэш-сумма будет совпадать только в том случае, если скрипт не был изменен.''
+
''Хэш-сумма будет совпадать только в том случае, если скрипт был импортирован и не был изменен.''
  
 
==Алгоритм работы==
 
==Алгоритм работы==
  
#При смене состояния устройства, имеющего тип из списка '''item_type''':
+
#Проверяется, в списке имен измененных параметров было ли состояние объекта, т.е. параметр '''state'''.
##находятся все прокси, соединенные с устройством линком от '''item_pin''' к '''proxy_pin''' и имеющие тип из списка '''proxy_type''';
+
#Из корневого объекта таблицы соответствия выбираются все значения, ключи которых входят в список типов изменившегося элемента системы.
##значение состояния устройства копируется в состояние прокси;
+
#Из выбранных подтаблиц соответствия выбираются все значения, ключи которых являются корректной маской текстового значения состояния изменившегося элемента системы.
##если у прокси нет такого состояния, то выбирается наиболее близкое базовое состояние из списка '''ok.normal''', '''error.defective''', '''alarm.alarm''' и '''none.unknown'''.
+
#Если получившийся список не пуст - его первое значение записывается в параметр '''kks_state''' изменившегося элемента системы, иначе - ничего не происходит.
#При смене команды прокси, имеющего тип из списка '''proxy_type''':
 
##находятся все устройства, соединенные с прокси линком от '''proxy_pin''' к '''item_pin''' и имеющие тип из списка '''item_type''';
 
##значение команды прокси копируется в состояние устройства;
 
##если у устройства нет такого состояния, то выставляется значение '''DEFAULT''' и параметр помечается как не валидный.
 
  
 
==Пример работы==
 
==Пример работы==
Строка 87: Строка 93:
 
Для построения схемы необходимо:
 
Для построения схемы необходимо:
  
1. Создать схему по выше описанному алгоритму (см. [[Элемент_-_заместитель_связанного_устройства_(Proxy_item_1)#Построение_схемы|Построение схемы]]).
+
1. Создать схему по выше описанному алгоритму (см. [[Трансляция_состояний_в_KKS(KKS_Translator)#Построение_схемы|Построение схемы]]).
+
 
[[File:ProxiItem_3.PNG|центр|1000px]]
+
[[File:kks_5.PNG|центр|1000px]]
  
2. Добавить элемент Зона и IP Видеокамера. Подключите пин "'''Привязка к зоне: ZoneInputPin'''" из '''IP Видеокамеры''' с пином "'''Зона: ZoneOutputPin'''" из '''Зоны'''.
+
2. Добавить элемент Болид пожарный датчик.
  
[[File:ProxiItem_7.PNG|центр|1000px]]
+
[[File:kks_4.PNG|центр|1000px]]  
  
 
3. Настроить параметр "Сетевой адрес" компьютера.
 
3. Настроить параметр "Сетевой адрес" компьютера.
Строка 100: Строка 106:
  
 
#задействовать триггер ('''enabled'''): true;
 
#задействовать триггер ('''enabled'''): true;
#в настройках:
+
#в настройках таблица соответствий состояний KKS кодам в json формате ('''table'''), см. ниже.
##тип устройств ('''item_type'''): VideoCamera;
+
{
##имя пина, через который устройство подключено к прокси ('''item_pin'''): zoneInputPin;
+
    "FireSecurityCategory":  
##тип прокси ('''proxy_type'''): Zone;
+
    {
##имя пина, через который прокси подключен к устройствам ('''proxy_pin'''): zoneOutputPin.
+
        "alarm*": "XF02",
 +
        "ok_normal": "XF01",
 +
    }
 +
}
  
 
'''Результат''':
 
'''Результат''':
  
При смене состояния IP Видеокамеры, например, на тревогу, появится соответствующее состояние у Зоны.
+
При смене состояния датчика, на тревогу, в его параметре "KKS состояние" будет установлен код XF02, при смене состояния на "в норме" - XF01.
  
 
==Дополнения==
 
==Дополнения==
1. В пункте 1 раздела [[Элемент_-_заместитель_связанного_устройства_(Proxy_item_1)#Построение_схемы|Построение схемы]] добавление триггера '''EgsObjectUpdated''' можно осуществить по ссылке.
+
1. В пункте 1 раздела [[Трансляция_состояний_в_KKS(KKS_Translator)#Построение_схемы|Построение схемы]] добавление триггера '''EgsObjectUpdated''' можно осуществить по ссылке.
  
 
Для этого необходимо:
 
Для этого необходимо:
  
:1. Импортировать скрипт по следующей ссылке: <code>http://maps.integra-s.com:5434/resources/typedef2017/egs/Proxy%20item%202.put.</code>
+
:1. Импортировать скрипт по следующей ссылке: <code>http://maps.integra-s.com:5434/resources/typedef2017/egs/KKS%20Translator%201.put.</code>
 
:2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
 
:2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
  
 
[[File:Scheduled_com_1.png|центр|1000px]]
 
[[File:Scheduled_com_1.png|центр|1000px]]
  
:3. В открывшемся окне выбрать импортированный скрипт "Proxy item 1.put".
+
:3. В открывшемся окне выбрать импортированный скрипт "KKS Translator 1.put".
  
[[File:ProxiItem_1.PNG|центр|1000px]]
+
[[File:kks_6.PNG|центр|1000px]]
  
 
:Элемент появится на рабочей области.
 
:Элемент появится на рабочей области.
Строка 128: Строка 137:
 
[[File:ResponsiveCommander_3.PNG|центр|1000px]]
 
[[File:ResponsiveCommander_3.PNG|центр|1000px]]
  
2. В пункте 7 раздела [[Элемент_-_заместитель_связанного_устройства_(Proxy_item_1)#Построение_схемы|Построение схемы]] редактирование параметров элемента можно осуществить, выделив элемент правой кнопкой мыши и в контекстном меню выбрав пункт "Редактировать параметры".
+
2. В пункте 7 раздела [[Трансляция_состояний_в_KKS(KKS_Translator)#Построение_схемы|Построение схемы]] редактирование параметров элемента можно осуществить, выделив элемент правой кнопкой мыши и в контекстном меню выбрав пункт "Редактировать параметры".
  
[[File:ProxiItem_4.png|центр]]
+
[[File:kks_7.PNG|центр]]
  
 
:После этого откроется окно для редактирования параметров.''
 
:После этого откроется окно для редактирования параметров.''
  
[[File:ProxiItem_5.PNG|центр]]
+
[[File:kks_8.PNG|центр|1000px]]

Текущая версия на 13:24, 22 мая 2019

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

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

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

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

Kks 1.PNG

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

Scheduled com 9.PNG

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

Kks 2.PNG

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

  1. текст скрипта (script) http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/KKS%20Translator%201.put&path=0/params/script/value;
  2. задействовать триггер (enabled), например: true;
  3. в настройках таблица соответствий состояний KKS кодам в json формате (table), см. ниже.
{
   "FireSecurityCategory": 
   {
       "alarm*": "XF02",
       ""ok_normal": "XF01",
   },
   "SpatialObject": 
   {
       "error*": "XE02",
       "none*": "XE02",
       "*": "XE01" 
   }
}

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

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

Kks 3.PNG

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

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

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

Проверка

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

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

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

  1. Проверяется, в списке имен измененных параметров было ли состояние объекта, т.е. параметр state.
  2. Из корневого объекта таблицы соответствия выбираются все значения, ключи которых входят в список типов изменившегося элемента системы.
  3. Из выбранных подтаблиц соответствия выбираются все значения, ключи которых являются корректной маской текстового значения состояния изменившегося элемента системы.
  4. Если получившийся список не пуст - его первое значение записывается в параметр kks_state изменившегося элемента системы, иначе - ничего не происходит.

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

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

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

Kks 5.PNG

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

Kks 4.PNG

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

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

  1. задействовать триггер (enabled): true;
  2. в настройках таблица соответствий состояний KKS кодам в json формате (table), см. ниже.
{
    "FireSecurityCategory": 
    {
        "alarm*": "XF02",
        "ok_normal": "XF01",
    }
}

Результат:

При смене состояния датчика, на тревогу, в его параметре "KKS состояние" будет установлен код XF02, при смене состояния на "в норме" - XF01.

Дополнения

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

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

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

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

Kks 7.PNG
После этого откроется окно для редактирования параметров.
Kks 8.PNG