Типовые схемы — различия между версиями

Материал из Integra-S Wiki
Перейти к: навигация, поиск
(Схема "Открытие шлагбаума при вхождении цели в зону")
(Дополнительно)
 
(не показаны 82 промежуточные версии 2 участников)
Строка 102: Строка 102:
  
 
[[Файл:video2.png|центр|1000px]]
 
[[Файл:video2.png|центр|1000px]]
 +
 +
Для автоматического добавления камер можно воспользоваться командами "Создать все камеры" или "Создать локальные камеры" (при условии, что камеры добавлены на самом сервере Интегра-ВидеоVII) у элемента ПО Интегра-ВидеоVII(IntegraVideo7).<br /> Если включены умные подписки в конфигурационном файле AM, то связи между камерами и ПО Интегра-Видео VII не создадутся.
 +
Так же используя команду у элемента ПО Интегра-ВидеоVII "updateIpForLocalCameras" будет выполнено обновление ip адресов всех локальных камер привязанных к элементу ПО Интегра-ВидеоVII.
  
 
Затем, прописываем имя и сетевой адрес у элемента «Сервер», адрес должен соответствовать компьютеру, на котором установлены «ПО Интегра -Видео 7» и «Менеджер устройств». Элементы «Сервер» и «Компьютер» полностью идентичны по своим свойствам, имеют только разные модели.
 
Затем, прописываем имя и сетевой адрес у элемента «Сервер», адрес должен соответствовать компьютеру, на котором установлены «ПО Интегра -Видео 7» и «Менеджер устройств». Элементы «Сервер» и «Компьютер» полностью идентичны по своим свойствам, имеют только разные модели.
  
[[Файл:video3.png|центр|1000px]]
+
[[Файл:video3.png|центр|1000px]]  
  
 
После чего, в элементе «ПО Интегра-Видео 7» устанавливаем режим «Главный сервер» (main_server) и задаем сетевой адрес сервера видео, порт по умолчанию оставляем 9090.
 
После чего, в элементе «ПО Интегра-Видео 7» устанавливаем режим «Главный сервер» (main_server) и задаем сетевой адрес сервера видео, порт по умолчанию оставляем 9090.
Строка 114: Строка 117:
  
 
[[Файл:video5.png|центр|1000px]]
 
[[Файл:video5.png|центр|1000px]]
 +
 +
 +
=====Команда"SendCamerasTolv"=====
 +
 +
Дополнительная команда "SendCamerasTolv" реализована в Менеджер устройств AcuarioManager и добавлена типу устройств "IntegraVideo7". Эта команда предназначена для более легкой интеграции со сторонним ПО по видеонаблюдению, при этом не требуется  вручную  прописывать координаты с камер. Команда "SendCamerasTolv" запускается на устройстве ПО "Integra-Video":
 +
 +
 +
[[File:Схема .png|centre|1000px]]
 +
 +
 +
При запуске команды "SendCamerasTolv" все "наследники типа" "VideoCamera" группируются в список и формируется список наборов параметров. Затем этот набор параметров отправляется как параметр в метод ''"camera: update"''. Этот функционал реализован для всех способов взаимодействия с сервисом "IntegraVideo7".
  
 
==Схема "Agilion"==
 
==Схема "Agilion"==
Строка 268: Строка 282:
 
Пример отображения полученной информации с датчиков веществ:
 
Пример отображения полученной информации с датчиков веществ:
 
[[File:метеостанция12.jpg|центр]]
 
[[File:метеостанция12.jpg|центр]]
 
==Схема "Открытие шлагбаума по sip при вхождении цели в зону"==
 
Данная схема предназначена для открытия шлагбаума по sipпри вхождении указанных целей.
 
Для создания данной схемы необходимо добавить следующие элементы:
 
# Zone Controller (Скрипт необходимо импортировать отсюда http://maps.integra-s.com:5434/resources/typedef2017/egs/Zone%20Controller.put)
 
# Reflex Center (Скрипт необходимо импортировать отсюда http://maps.integra-s.com:5434/resources/typedef2017/egs/Reflex%20Center.put)
 
# Компьютер или Сервер (Computer/Server)
 
# Менеджер устройств (AcuarioManager)
 
# EGS Модуль (EGSModule)
 
# IntegraVideo7Sip
 
# Зона (Zone)
 
# Шлагбаум (Bascule_barrier)
 
# Движущийся объект (например Автобус)
 
Для того, чтобы импортировать скрипт необходимо сначала скопировать и вставить вышеуказанную ссылку в адресную строку браузера, нажать на клавиатуре Enter, в окне браузера нажать правой кнопкой мыши, в появившемся контекстном меню нажать на сохранить как и выбрать удобное для вас местоположения сохранив скрипт с расширением .put.
 
В редакторе Скада нажать на меню Действия > Импорт элементов > выбрать сохраненный скрипт.<br />
 
Необходимо добавить следующие связи:
 
# Zone Controler: EGS вход:EGSInput + EGS Модуль: EGS Выход: EGSOutput
 
# Reflex Center: EGS вход:EGSInput + EGS Модуль: EGS Выход: EGSOutput
 
# EGS Модуль: Привязка к менеджеру: ManagingContent + Менеджер устройств: Менеджер устройств: ManagingContainer
 
# Менеджер устройств: ПО:SoftwareContent + Компьютер или Сервер: Установленное ПО:SoftwareContainer
 
# IntegraVideo7Sip: Привязка к менеджеру: ManagingContent + Менеджер устройств: Менеджер устройств: ManagingContainer
 
# Шлагбаум: Логический вход: LogicInput + IntegraVideo7Sip: Логический выход: LogicOutput
 
# Зона: Логический выход: LogicOutput + Шлагбаум: Логический вход: LogicInput
 
[[File:Схема шлагбаума.jpg|центр]]
 
Далее необходимо настроить параметры элементов в свойствах элемента:<br />
 
'''1. Zone Controller'''<br />
 
Назначение<br />
 
Определение вхождения целей MoveableObject в охраняемые зоны Zone<br />
 
Генерирование событий ZoneEvent о входе цели в зону и выходе цели из зоны<br />
 
Расчет и сохранение списка зон, в которые входит цель trace_zones<br />
 
Генерирование событий о резком изменении скорости и направления цели<br />
 
Генерирование событий об остановке и начале движения после остановки<br />
 
Генерирование событий об превышении скорости и возврате к нормальной скорости<br />
 
Генерирование событий об начале и окончании опасного сближения<br />
 
Расчет числового приоритета (очередности) цели trace_order<br />
 
'''Настройки (settings):''' <br />
 
values - числовые значения для некоторых приоритетов:<br />
 
high - повышенный приоритет (1 < high < MaxValue)<br />
 
low - пониженный приоритет (0 < low < 1)<br />
 
server - строка содержащая либо гуид сервера, на который следует отправлять события, либо имя параметра самого события, содержащего этот гуид, например: server<br />
 
[[File:zone_controll.png|центр]]
 
После запуска скрипта в параметре hash появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Zone%20Controller.put&path=0/params/hash/value, в том случае если скрипт не был изменен<br />
 
'''2. Reflex Center<br />'''
 
Назначение<br />
 
Отслеживание изменения параметра объекта источника<br />
 
Поиск связанного с источником объекта приемника<br />
 
Выполнение действий с объектом приемником в соответствии с условием<br />
 
'''settings''' - список сценариев, имеющих следующие параметры:<br />
 
enabled - включить/выключить сценарий<br />
 
source - список гуидов и/или имен типов объектов источников<br />
 
target - путь от объекта источника к объекту приемнику<br />
 
condition - описание условия для выполнения действия<br />
 
action - описание действия при выполненных условиях<br />
 
params - список параметров рефлексов в виде таблицы ключ/значение, где ключ - имя параметра рефлекса, а значение - строковая форма значения параметра, подставляется в condition и action в виде {paramname}, где paramname - имя параметра<br />
 
tree - дерево из трех уровней где ключами являются значения числовых параметров condition и action, т.е. вида {0}, {1} и {2}, подходящей по смыслу ветки, где номер обозначает глубину, тогда как значение нижнего уровня подставляется вместо {3}<br />
 
operation - список указывающий операции сервера для запуска сценария:<br />
 
create - создание объекта<br />
 
update - изменение объекта<br />
 
delete - удаление объекта<br />
 
sсhedule - опциональный список расписаний для запуска скрипта (вместо запуска по событию) в расширенном формате cron (см. https://ru.wikipedia.org/wiki/Cron)<br />
 
comment - комментарий пользователя, описание сценария<br />
 
 
'''3. Компьютер или Сервер<br />'''
 
Настроить сетевой адрес<br />
 
 
'''4. IntegraVideo7Sip<br />'''
 
Сетевой адрес sip, пароль sip, порт sip, Адрес URL, Логин, Пароль<br />
 
При отправки команды на шлагбаум если соответствующий номер прописан, на сервер Интегра-Видео VII sip будет послана команда sip:invite<br />
 
'''5. Зона (Zone)<br />
 
area - область обслуживания (Координаты появятся после создания зоны в клиенте "Интегра планета Земля") <br />
 
area_heights - высоты области (Появится после создания зоны в клиенте "Интегра планета Земля").<br />
 
trace_factor - дополнительный делитель числового приоритета для зоны<br />
 
'''trace_settings''' - настройки слежения по зоне имеют следующие параметры:<br />
 
defaults - таблица соответствия типа цели приоритету<br />
 
detectors - список различных настроек детекторов, содержит следующие параметры:<br />
 
enabled - включить\выключить детектор<br />
 
types - список типов, для которых настраивается данный детектор<br />
 
exit_threshold - погрешность позиции для определения выхода из зоны, например: 10<br />
 
speed_limit - максимальная допустимая скорость, например: 7<br />
 
speed_change_threshold - порог изменения скорости, например: 20<br />
 
heading_change_threshold - порог изменения направления, например: 40<br />
 
stop_threshold - порог отсутствия движения, например: 0.6<br />
 
approach_threshold - минимальное допустимое расстояние между целями, например: 20<br />
 
alarm_actions - список флагов для выбора действий по зоне, которые считаются тревожными, например:<br />
 
enter - вход в зону<br />
 
exit - выход из зоны<br />
 
stop - остановка<br />
 
start - начало движения<br />
 
too_fast - превышение скорости<br />
 
not_too_fast - прекращение превышения скорости<br />
 
severe_speed_change - резкое изменение скорости<br />
 
severe_heading_change - резкое изменение направления<br />
 
dangerous_approach - опасное сближение<br />
 
no_dangerous_approach - прекращение опасного сближения<br />
 
attention_actions - список флагов для выбора действий по зоне, по которым необходимо привлечение внимания<br />
 
'''Определяются следующие действия цели в зоне:'''<br />
 
enter - вход в зону<br />
 
exit - выход из зоны<br />
 
stop - остановка<br />
 
start - начало движения<br />
 
too_fast - превышение скорости<br />
 
not_too_fast - прекращение превышения скорости<br />
 
severe_speed_change - резкое изменение скорости<br />
 
severe_heading_change - резкое изменение направления<br />
 
dangerous_approach - опасное сближение<br />
 
no_dangerous_approach - прекращение опасного сближения<br />
 
'''События'''<br />
 
Событие о действии цели в зоне ZoneEvent, содержит следующие параметры:<br />
 
owner - идентификатор зоны<br />
 
server - идентификатор сервера трекинга<br />
 
position - географическая позиция цели<br />
 
detector - идентификатор триггера<br />
 
alarm - признак тревожного события<br />
 
action - действие, см. выше<br />
 
target - идентификатор цели<br />
 
target_type - тип цели<br />
 
target_info - краткая информация о цели<br />
 
Замечания<br />
 
Параметр trace_order рассчитывается для всех целей в графе как описано тут [https://redmine.integra-s.com:11000/projects/eilyacuario/wiki/%D0%9F%D1%80%D0%B8%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D1%82_%D1%81%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F Приоритет слежения].<br />
 
Для целей в зоне с приоритетом ignore осуществляются все расчеты, однако никакие события не генерируются<br />
 
Для целей в зоне с позицией, помеченной outofdate, расчеты не осуществляются и события не генерируются, однако сами цели не удаляются из зоны<br />
 
Для целей в зоне с пустой позицией рассчеты не осуществляются, события не генерируются и сами цели удаляются из зоны<br />
 
Если цель без указанного пользователем приоритета (т.е. DEFAULT) входит сразу в несколько зон с различными настройками приоритетов по умолчанию defaults, то выбирается наибольший, т.к. такая ситуация может сложиться только в том случае, если зоны пересекаются<br />
 
Скрипту необходима актуализация параметра position целей (пометка как outofdate или сброс в null)<br />
 
Цель считается вошедшей в зону, если ее позиция входит внутрь соответствующего полигона зоны<br />
 
Цель считается вышедшей из зоны, если круг радиуса exit_threshold вокруг позиции цели полностью выходит из соответствующего полигона зоны<br />
 
 
'''6.Шлагбаум<br />'''
 
Высота, расположение, номер телефона для открытия шлагбаума, номер телефона для закрытия шлагбаума<br />
 
 
'''Пример работы:<br />'''
 
1. Создать схему как описано выше<br />
 
2. Элементу Зона настроить параметры:<br />
 
* область обслуживания (area): POLYGON((50.2183189 53.2368202,50.2208366 53.2379951,50.2220306 53.2369308,50.2197838 53.2357864,50.2197647 53.2358017,50.2183189 53.2368202))<br />
 
* высота области (area_heights):<br />
 
* 132.20870971679688<br />
 
* 127.05160522460938<br />
 
* 123.02214050292969<br />
 
* 125.25485229492188<br />
 
* 125.34675598144531<br />
 
* Настройки слежения (trace_settings):<br />
 
  {"defaults": {
 
    "Bus": "high"
 
  },
 
  "detectors": [
 
  {
 
  "enabled": true,
 
    "types": [
 
    "Bus"
 
    ],
 
  "exit_threshold": 0,
 
  "speed_limit": 7,
 
  "speed_change_threshold": 20,
 
  "heading_change_threshold": 40,
 
  "stop_threshold": 0.6,
 
  "approach_threshold": 20,
 
  "alarm_actions": [
 
    "exit",
 
    "enter"
 
    ],
 
  "attention_actions": [
 
    "exit",
 
    "enter"
 
  ]
 
  }
 
  ]
 
  }
 
 
3. Элементу Reflex Center настроить параметр:<br />
 
* Настройки:<br />
 
  {"responsive commander": {
 
      "enabled": true,
 
      "source": [
 
        "4858fbeb-c619-4849-b01f-e56f46465f11"
 
      ],
 
      "target": [
 
        "trace_zones",
 
        "Zone",
 
        "Pin",
 
        "Bascule_barrier"
 
      ],
 
      "condition": "trace_zones is not empty",
 
      "action": "command = \"open\"",
 
      "params": {},
 
      "tree": {},
 
      "operation": [
 
        "update"
 
      ],
 
      "schedule": [],
 
      "comment": ""
 
    }}
 
где, в source указан гуид движущегося объекта (так же можно указать имя типа, в данном примере Bus, т.е. при входе в зону любого объекта Bus будет открываться шлагбаум)<br />
 
в target слежение в зоне (trace_zones), шлагбаум(Bascule_barrier) подключенный к зоне (Zone) любим видом пина (Pin)<br />
 
в condition - условие (если зона не пуста (trace_zones is not empty))<br />
 
в action - выполнится команда открыть (command = \"open\") как только в зону попадет движущийся объект<br />
 
3. Далее если объект не движется, можно запустить скрипт "Симулятор движения (Position Simulator 1)", описание которого приведено на странице [[http://wiki.integra-s.com:11111/index.php/%D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80_%D0%B4%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_(Position_simulator_1) Симулятор движения]], и настроить в свойствах триггера параметры:<br />
 
* данные о движении объекта (settings.input):<br />
 
50.21979884154713,53.23603280606231,124 50.21992758757987,53.236084301430914,124 50.2200241471044,53.23613257828248,124 50.220136799883,53.236164762819776,124 50.22022263057147,53.23619372888256,124 50.22028700358784,53.23621303958015,124 50.22035137660421,53.2362387871633,124 50.220447936128735,53.236280626952755,124 50.2214349890462,53.23690500046691,124 50.220496215891025,53.23744568766287,124
 
50.21941260344898,53.23688247168483,124 50.22066251284994,53.23696936835009,124 50.220539131235235,53.23689856367324,124 50.22052303798115,53.23685994289082,124 50.22046939380084,53.23681810367033,124
 
50.220383563112364,53.23676660918871,124 50.22027091033376,53.236705459408626,124 50.22021190173542,53.236682930521006,128 50.22007242686663,53.23665396479085,128 50.21994368083395,53.236621780623125,128
 
50.2198632145635,53.236589596431095,128 50.21978811271108,53.2365702859042,128 50.21973446853077,53.23656063063748,128 50.21964327342427,53.23653488324884,128 50.21950379855548,53.23649626213669,128 50.21922484881795,53.23643189353865,128
 
* Цель (гуид движущегося объекта (в данном примере 4858fbeb-c619-4849-b01f-e56f46465f11))
 
Для того чтобы узнать гуид элемента необходимо перейти в меню Редактирование > Настройки > включить Расширенный режим, далее выбрать свойство необходимого элемента, нажать ЛКМ на название элемента, после чего выполнится копирование гуида в буфер обмена.
 
[[File:гуид элемента.png|центр]]
 
Результат:<br />
 
Для просмотра результата необходимо зайти в Менеджер событий.<br />
 
Настроить вкладку на необходимый сервер и параметры "Событие в зоне", шлагбаум.<br />
 
Далее после входа/выхода в зону движущегося объекта будет транслироваться событие о входе/выходе и выполнение команды "Открыть" у шлагбаума.
 
[[File:событие в зоне.png|центр]]
 
'''Пример схемы с двумя зонами и шлагбаумами'''<br />
 
[[File:схема с двумя зонами и шлагбаумами.png|центр]]
 
  
 
==Схема "Умного пешеходного перехода"==
 
==Схема "Умного пешеходного перехода"==
Строка 503: Строка 306:
  
 
Далее необходимо настроить параметры у элементов:<br />
 
Далее необходимо настроить параметры у элементов:<br />
# NemaGSMServer указать ключ, идентификатор пользователя(uid) и сетевой адрес
+
# Nema Сервер -  указать ключ, идентификатор пользователя(uid) и сетевой адрес
# NemaCrosswalk указать идентификатор объекта (oid).
+
# Пешеходный переход - указать идентификатор объекта (objectObjectListID), расположение (position)
 +
# Nema светильник - указать идентификатор объекта (objectListID), расположение (position)
 +
# Nema счетчик - указать идентификатор прибора (meterID)
 +
Пример отображения в клиенте "Интегра планета Земля" переход пешехода<br />
 +
[[File:first_passing.png|центр]]
 +
 
 +
==Схема радара HikvisionRadar==
 +
 
 +
Для того чтобы развернуть схему радара, необходимо:
 +
 
 +
1) В редакторе СКАДА добавить следующие элементы:
 +
#Am(Менеджер устройств 'Acuario Manager');
 +
#Computer1(Компьютер);
 +
#HikvisionRadar1(DS-PR1-60);
 +
#Plan1(План);
 +
#(Space1 ) Пространство.
 +
 
 +
Все эти элементы можно найти в открывшемся окне редактора СКАДА слева на панели, выбрав вкладку «Типы элементов»
 +
 
 +
2) Затем следует соединить устройства между собой Am(Менеджер устройств 'Acuario Manager') и Компьютер,  Am(Менеджер устройств 'Acuario Manager') и HikvisionRadar1(DS-PR1-60), HikvisionRadar1(DS-PR1-60) и Space1, Space1 и Plan1.
 +
В результате должна получиться следующая схема:
 +
 
 +
 
 +
[[File:R-1.png|centre|1000px]]
 +
 
 +
 
 +
Данная схема применима для трекинга.
 +
Настройка трекинга: http://wiki.integra-s.com:11111/index.php/Установка_сервера_в_Linux#Integraemberdb
 +
 
 +
3) В свойствах HikvisionRadar1(DS-PR1-60) рекомендуется заполнить следующие параметры:
 +
#angelBetweenHangerAndHorizon (угол (в вертикальной плоскости) между перпендикуляром к плоскости антенны радара и горизонтом) - (-15);
 +
#angelBetweenNorthAndRadar (угол между направлением на север и перпендикуляром к плоскости антенны радара (через восток)) - ( 42);
 +
#ip(сетевой адрес) - 192.168.10.133;
 +
#hangerHeight (высота подвеса ) - (2,5);
 +
#Географическая высота - (125);
 +
#login (логин) - admin;
 +
#password (пароль) - 'Volga1996!';
 +
#Порт - 8000;
 +
#Состояние - 'Активен (ок)';
 +
 
 +
 
 +
[[File:R-2.png|centre|]]
 +
 
 +
 
 +
[[File:R-3.png|centre|780px]]
 +
 
 +
 
 +
После проделанных действий следует запустить "Интегра Планета 4D".
 +
 
 +
4) В горизонтальном меню выбрать «Файл» и «Импортировать планировку»;
 +
 
 +
5) В открывшемся окне «Импорт здания» в строке поиска написать название нужного плана, например, Офис Интегра-С;
 +
 
 +
6) В списке загруженных зданий на сервер выбрать нужный план, (в нашем случае Офис Интегра-С) и нажать кнопку «Редактировать»;
 +
 
 +
7) Затем перейти на вкладку «Настройка серверов» и справа нажать на кнопку «Добавить сервер» («+»);
 +
 
 +
После этого надо выбрать «Существующее соединение» и из предлагаемого списка выбрать нужное подключение. Если отсутствует нужное подключение, то надо нажать на «Новое подключение» и заполнить все необходимые данные для добавления нового подключения
 +
 
 +
8) Установить "галочку" в строке для привязки устройства к серверу и сохранить изменения.
 +
 
 +
 
 +
[[File:R-4.png|centre|]]
 +
 
 +
 
 +
=====Добавление датчика HikvisionRadar на план=====
 +
 
 +
1) В горизонтальном меню выбрать «Редакторы» и «Редактор датчиков»;
 +
 
 +
2) В открывшемся окне «Доступные для расстановки объекты» найти устройство HikvisionRadar1(DS-PR1-60) и вынести его на план, удерживая ЛКМ;
 +
 
 +
3) Масштабировать датчик относительно здания на плане с помощью кнопок на панели в редакторе и сохранить текущие изменения.
 +
 
 +
 
 +
[[File:R-5.png|centre|]]
 +
 
 +
 
 +
== Модуль интеграции Lers  ==
 +
 
 +
'''Обновление модуля интеграции Lers'''
 +
 
 +
Для обновления библиотек модуля интеграции Lers необходимо:
 +
 
 +
:1. Перейти на сайт https://www.lers.ru/soft/download/;
 +
:2. Во вкладке "Обновление" скачать последнюю версию файла LersManualUpdate.zip;
 +
:3. В корне установленного AcuarioManager найти папку LersUpdateUnpacker и открыть файл readme.txt;
 +
:4. Следовать инструкции из readme.txt.
 +
 
 +
Инструкция из readme.txt:
 +
 
 +
:1. Поместить архив LersManualUpdate.zip в папку LersPath;
 +
:2. Запустить Extract.bat;
 +
:3. Скопировать папку Lers в корень AcuarioManager;
 +
:4. Удалить архив LersManualUpdate.zip из папки LersPath.
 +
 
 +
 
 +
 
 +
Для работы с модулем интеграции «Риф-Плюс» необходимо:
 +
 
 +
В Редакторе Скада:
 +
 
 +
:1. Добавить элемент "Риф-Плюс" (RifPlus). Этот элемент находится во вкладке «Типы элементов» главного окна редактора Скада;
 +
:2. Соединить элемент "Риф-Плюс" (RifPlus) с линком ManagementLink элемента AcuarioManager (Менеджер устройств «AcuarioManager»).
 +
 
 +
В результате получится схема:
 +
 
 +
 
 +
[[File:Риф 1.PNG|centre|]]
 +
 
 +
 
 +
:3. В свойствах элемента "Риф-Плюс" (RifPlus) заполнить параметры "Сетевой адрес", "Порт", "Имя объекта":
 +
 
 +
 
 +
[[File:Риф 3.PNG|centre|]]
 +
 
 +
 
 +
Далее для выполнения схемы необходимо отправить устройству команду ''update_scada_schema'', после этого устройство получит статус ''ok_schemeCreatingInProgress''.
 +
AcuarioManager запрашивает всю необходимую информацию от интегрируемой системы. Если в том месте схемы, где должен быть объект он отсутствует, то AcuarioManager создает внутри себя объект схемы со статусом ''ok_schemeCreatingInProgress''. Если объект в схеме присутствует, то AcuarioManager выставляет этому объекту статус ''schemeCreatingObjectReady''.
 +
После этого AcuarioManager передает созданные объекты FireFly. После получения подтверждения о состоянии объектов от FireFly AcuarioManager присваивает этим объектам статус ''schemeCreatingObjectReady''. Если процесс построения схемы завершился без ошибок, то AcuarioManager выставляет главному элементу статус ''schemeCreatingObjectReady''. Затем AcuarioManager перезапускает модуль RifPlus.
 +
 
 +
Если в процессе обнаруживается, что в схеме в редакторе Скада у главного элемента есть «потомок», который наследует базовый тип для этой интегрируемой системы, то этому элементу и всем его «потомкам» присваивается состояние ''error.schemeCreatingUnnecessary''. Такой элемент и все его «потомки» должны быть удалены вручную пользователем.
 +
 
 +
При запуске модуля AcuarioManager проверяет состояние главного элемента. Если обнаружено состояние ''ok_schemeCreatingInProgress'' или ''error_schemeCreatingError'', то AcuarioManage выводит в Error сообщение:
 +
 
 +
log.Error($"В процессе создания схемы возникли ошибки. Проверьте схему и установите стостояние итема {bastionOpcServerItem.name}:{bastionOpcServerItem.Id} в none.unknown, после чего перезагрузите acuario.manager или
 +
выполните команду обновления схемы для указанного итема повторно.");
 +
 
 +
При этом состояние ''ok_schemeCreatingInProgress'' будет сброшено в ''error_schemeCreatingError''. Элементы, которые присутствуют в схеме, но не связаны с главным элементом, не учитываются.
 +
 
 +
 
 +
 
 +
== Работа с модулем AcuarioManager для симуляции изменений и отдельной утилитой для обработке данных об изменениях из логов  ==
 +
 
 +
Для воспроизведения в офисе ситуации на объекте необходимо:
 +
 
 +
На объекте:
 +
 
 +
:1. Экспортировать схему объекта из СКАДА с сохранением guid итемов:
 +
 
 +
[[File:И1.png|centre|]]
 +
 
 +
 
 +
:2. Из папки "{Корень ам}\Logs\ff\" скопировать все файлы лога транзакций с именами, соответствующими шаблону  "ffTransaction.log.*":
 +
 
 +
 
 +
[[File:И2.png|centre|]]
 +
 
 +
 
 +
:3. Подготовленные файлы с информацией о версиях используемых AM, FF, typdef передать в офис на обработку.
 +
 
 +
 
 +
В офисе:
 +
 
 +
:1. Установить нужные версии AM, FF, typdef;
 +
 
 +
:2. Импортировать схему устройств в СКАДА:
 +
 
 +
[[File:И3.png|centre|]]
 +
 
 +
 
 +
:3. В папку "{Корень ам}\Utilities\LogParser\Source" поместить файлы лога транзакций (НЕ В АРХИВЕ И НЕ ВЛОЖЕННЫЕ В ДОП. ПАПКИ):
 +
 
 +
 
 +
[[File:И4.png|centre|]]
 +
 
 +
 
 +
:4. Запустить файл "{Корень ам}\Utilities\LogParser\LogParser.exe". В процессе и по окончании работы будут появляться сообщения о прогрессе обработки логов. В конце будет выведено количество пакетов транзакций и затраченное на обработку время:
 +
 
 +
 
 +
[[File:И5.png|centre|]]
 +
 
 +
 
 +
:5. В СКАДА, в схеме, которую загрузили в пункте 2, добавить итем типа "SimulatorModule". Связать его с итемом AcuarioManager линком "ManagementLink":
 +
 
 +
 
 +
[[File:И6.png|centre|]]
 +
 
 +
 
 +
:6. Запустить AcuarioManager
 +
 
 +
'''Уточнения:'''
 +
:1. Имена файлов логов неважны;
 +
:2. Если структура лога не будет соответствовать требуемой - парсер просто упадет;
 +
:3. При подключении к итему AcuarioManager в схеме СКАДА итема типа "SimulatorModule" все остальные модули отключаются и их можно не отсоединять вручную;
 +
:4. Не важно в каких базах находились переносимые с объекта итемы. При воспроизведении изменений будет осуществляться поиск итемов по их guid в суммарном графе, загруженном со всех добавленных в конфиг am'а подключений FireFly;
 +
:5. При воспроизведении изменений из лога все записи изменений, которые не считаются записью в архив, записываются с ТЕКУЩИМ на момент воспроизведения временем;
 +
:6. Если в логе время фактического изменения меньше времени отправки на как минимум 2 секунды, то такое изменение считается записью в архив и время изменения не заменяется на текущее;
 +
:7. Изменения собираются в транзакции строго тем же образом, которым они отправлялись при записи лога;
 +
:8. Связывать "SimulatorModule" с другими итемами кроме итема AcuarioManager не требуется;
 +
:9. Как только все записанные транзакции будут воспроизведены модуль начнет воспроизведение сначала. Пауза не предусмотрена.
 +
 
 +
 
 +
== Упрощенные динамические типы  ==
 +
 
 +
Предварительные действия:
 +
 
 +
1) Установить версию FireFly для динамических типов. Для этого:
 +
#Перейти по ссылке https://nextcloud.integra-s.com:11100/index.php/s/Q83ysM4q2NosbGw и загрузить архив ffdyn-win211021.zip;
 +
#Распаковать в удобное место на диске, например E:\distrFirefly (distrFirefly создан перед распаковкой);
 +
#Создать базу данных (с помощью create_DB_and_Schemas.bat) и настроить config.json;
 +
#Запустить serenity и FireFly;
 +
2) Установить и настроить amjs. Для этого:
 +
#Загрузить и установить nodejs версии не ниже 14.17.0 https://nodejs.org/en/download/. На момент описания инструкции установлен v14.18.1 (Windows 10). На windows 7 установить 14 версию не удастся, т.к. отсутствует поддерживаемость данной ОС);
 +
#Загрузить архив amjs.zip http://maps.integra-s.com:5434/resources/typedef2017/amjs/amjs.zip и распаковать в удобное для вас место, например: E:\amjsNode (amjsNode создан перед распаковкой);
 +
#Выполнить установку необходимых пакетов командой: npm install. В результате в папке amjsNode появится новый каталог node_modules(не пустой):
 +
 
 +
 
 +
[[File:1-T.png|centre|]]
 +
 
 +
 
 +
4. Настроить конфигурационный файл globals.js, указав данные FireFly и Центра Авторизации (ЦА), где:
 +
 
 +
'''url''' - сетевой адрес FireFly;
 +
 
 +
'''servers''' - список гуидов серверов (графов) на FireFly, где local (по умолчанию) - означает локальный сервер.
 +
 
 +
Пример массива из подключений:
 +
 
 +
"firefly":  [{
 +
        "url": "ws://192.168.11.2:8095/ws",
 +
        "servers": ["local"]
 +
    },
 +
{
 +
"url": "ws://192.168.11.2:8096/ws",
 +
"servers": ["local"]
 +
  }],                                    где 192.168.11.2:8095 – это 0 индекс подключения:
 +
 
 +
 
 +
[[File:2-T.png|centre|]]
 +
 
 +
 
 +
Где:
 +
 
 +
'''authid''' - имя пользователя в ЦА;
 +
 
 +
'''authpass''' - пароль пользователя в ЦА;
 +
 
 +
'''http://192.168.10.146:8888''' - базовый сетевой адрес ЦА;
 +
 
 +
'''plugins''' - специфические настройки плагинов, где {} - означает включить плагин, не имеющий настроек (т.е. без ffsoap/post, param-binding);
 +
 
 +
"ffsoap": {
 +
            "ff": 0, - '''индекс ФФ в секции FireFly''';
 +
 
 +
            "address": "10.0.0.26", - '''адрес, где запущен amjs плагин (откуда будет запрашиваться файл FireFlySoap.wsdl)''';
 +
 
 +
            "port": 9005, - '''порт, по которому запрашивается файл FireFlySoap.wsdl''';
 +
 
 +
            "wsdl": "FireFlySoap.wsdl" – '''имя файла, который расположен в корне папки amjsNode
 +
            }'''
 +
 
 +
 
 +
'''pulse''' - настройки пульса FireFly:
 +
 
 +
  '''timeout''' - время отсутствия пульса в секундах для того, чтобы считать потерянной связь с FireFly;
 +
 +
'''reconnection''' - настройки восстановления соединения:
 +
 
 +
  '''interval''' - интервал в секундах перед началом попыток соединения при потере пульса;
 +
 
 +
'''mainloop''' - настройки главного цикла приложения:
 +
 
 +
  '''delay''' - искусственная задержка в секундах после каждого главного цикла (нужно для снижения нагрузки на процессор);
 +
 
 +
 
 +
3) Обновить типы до версии >= 1200;
 +
4) Запустить amjs через командную строку (находясь в корне папки amjsNode) '''node amjs.js'''.
 +
 
 +
 
 +
===Создание виртуальных соединений (линков) ===
 +
 
 +
Для создания виртуальных соединений необходимо:
 +
 
 +
:1. Открыть меню «Редактирование», перейти в настройки и выбрать «Расширенный режим»;
 +
:2. Открыть меню «Редактирование» и перейти в «Редактор типов»;
 +
 
 +
:3. Нажать на кнопку      [[File:3-T.png|3-T.png]],  создать тип DynamicClass1. Динамический тип появится в списке типов с названием DynamicClass1:
 +
 
 +
[[File:4-T.png|centre|]]
 +
 
 +
:4. Для настройки свойств типа необходимо ЛКМ нажать на DynamicClass1 в списке типов:
 +
 
 +
 
 +
[[File:5-T.png|centre|]]
 +
 
 +
 
 +
#Поле для ввода имени динамического типа (имя должно быть введено на латинице и с заглавной буквы). Имя динамического типа не должно совпадать с именем статического типа;
 +
#Описание параметров – добавление необходимых параметров различных типов$
 +
#Описание – поле для описания типов$
 +
#Текст ошибки – поле для вывода текста ошибки.
 +
 
 +
:5. Перейти в описание параметров, нажать на кнопку «Добавить поле» и добавить параметр с названием field1 и типом reference. Имя параметра должно быть введено латинскими буквами, начиная  со строчной:
 +
 
 +
[[File:6-T.png|centre|]]
 +
 
 +
 
 +
:6. Принять и сохранить свойства типа$
 +
:7. Аналогично создать тип DynamicClass2 (можно не добавлять параметры);
 +
:8. Выйти из редактора типов, добавить созданные элементы на граф и добавить связь field1:ReferenceContainer+ReferenceContent:
 +
 
 +
 
 +
[[File:7-T.png|centre|]]
 +
 
 +
 
 +
Создан виртуальный линк - ReferenceLink:
 +
 
 +
 
 +
[[File:8-T.png|centre|]]
 +
 
 +
 
 +
=====Дополнительно=====
 +
 
 +
Виртуальные линки – это те линки, которых в базе физически нет. Есть только динамический параметр у одного объекта, который содержит идентификатор другого объекта.
 +
 
 +
Для создания виртуальных линков используются типы параметров reference и referenceList.
 +
 
 +
Reference – это параметр ссылочного типа представляет собой строку с фиксированным регулярным выражением для разбора гуидов (дефисы без скобок) и дополнительно позволяет задавать имя класса динамических объектов, на которые данная ссылка может указывать (если имя класса не указано, значит данная ссылка может указывать на любой объект).
 +
Для дополнительной настройки параметра необходимо нажать на {}:
 +
 
 +
[[File:9-T.png|centre|]]
 +
 
 +
 
 +
[[File:10-T.png|centre|]]
 +
 
 +
 
 +
ReferenceList – это параметр типа список ссылок и позволяет дополнительно задавать: минимальное и максимальное количество элементов в списке, а так же необходимость их уникальности.
 +
Для дополнительной настройки параметра необходимо нажать {}:
 +
 
 +
[[File:11-T.png|centre|]]
 +
 
 +
 
 +
[[File:12-T.png|centre|]]
 +
 
 +
 
 +
#Items – список фиксированных доступных значений;
 +
#minitems – минимальное количество элементов в списке;
 +
#maxitems – максимальное количество элементов в списке;
 +
#uniqueitems – проверка уникальности значений массива.

Текущая версия на 10:49, 21 декабря 2021

Типовые схемы предназначены для создания связей в системе, установленных на объекте.

Подготовка для работы

В любой создаваемой схеме необходима связка Компьютер-Менеджер устройств(AcuarioManager)

Typicalchemes 01.png

Менеджер устройств предназначен для взаимодействия с поставщиками данных - аппаратными модулями (ОПС, сенсорами, устройствами) и программными модулями (Интегра Видео 7, СКУД и пр).

Так же все добавленные элементы необходимо привязывать к своим пространствам.

Typicalchemes 02.png

В данном примере имеется два пространства "1 этаж" и "2 этаж", привязанные к одному плану. Каждый из объектов привязан к своему пространству, что упрощает расстановку датчиков на план в дальнейшем.

Схема СКД

Для создания схемы подключения системы контроля доступа необходимо добавить следующие элементы:

  1. Клиент Интегра ACS
  2. Замок
  3. Турникет

Для создания схемы подключения системы контроля доступа необходимо добавить следующие связи:

  1. Замок: AccessSlave:Прием доступа + Клиент Интегра ACS: AxxessMaster:Передача доступа
  2. Турникет: AccessSlave:Прием доступа + Клиент Интегра ACS: AxxessMaster:Передача доступа
  3. Менеджер устройств: ManaginContainer:Менеджер Устройств + Клиент Интегра ACS:ManaginContainer
  4. Компьютер: SoftwareContainer:Установленное ПО + Клиент Интегра ACS:SoftwareContent:ПО


Skd.png

Далее необходимо открыть меню элемента «Компьютер» и в строке «Сетевой адрес» вводим ip компьютера к которому должен подключаться «AcuarioManager».

Skd2.png

В меню элемента «Клиент Интегра ACS», в строке «Сервера Интегра ACS» прописывается ip адрес сервера.

Skd3.png

Датчики подключаемые к клиенту «Интегра ACS», настраиваются следующим образом:

  1. В строке «COM-порт» прописывается адрес com-порта по которому подключено устройство
  2. В строке «Адрес URL» - ip адрес сервера «Интегра ACS»
  3. В строке «Идентификатор устройства» - devid, который присваивает база данных.
Skd4.png

Схема ОПС "Болид"

Для создания схемы подключения ОПС «Болид» необходимо добавить следующие элементы:

  1. Болид С2000 пульт
  2. Болид сигнал 20
  3. Болид пожарный датчик

Для создания схемы подключения ОПС «Болид» необходимо добавить следующие связи:

  1. Менеджер устройств AcurioManager: ManaginContainer:Менеджер Устройств + Болид С2000 пульт: ManaginContent:MangingContainer
  2. Болид С2000 пульт:Rs485Socket:Разъем RS485 1 + Болид Сигнал 20:Rs485Socket:Разъем RS485 1
  3. Болид Сигнал 20:LowCurrentSocket:Разъем Слаботочного Провода + Болид пожарный датчик:LowCurrentSocket:Разъем Слаботочного Провода
Bolid.png

Далее в элементе «Компьютер» необходимо прописать Ip адрес компьютера на котором установлен «Менеджер устройств».

Bolid2.png

В элементе «Болид С2000 пульт» необходимо задать номер COM-порта, вида «COM1»,«COM2»,«COM3», для ОС Windows, «/dev/ttyS1», «/dev/ttyS2», «/dev/ttyS3», для Linux.

Bolid3.png

В элементе «Болид Сигнал 20» прописываем адрес. Его можно узнать при помощи программы uprog.

Bolid4.png

Так же для удобства работы необходимо задать имена для всех элементов в схеме.

Bolid5.png

Схема "Интегра Видео 7"

Для создания схемы подключения системы видеонаблюдения «Интегра видео 7» необходимо добавить следующие элементы:

  1. Компьютер или Сервер
  2. Сетевой коммутатор
  3. Опрос локальной сети
  4. По Интегра-Видео 7
  5. IP Видеокамера

Для создания схемы подключения системы видеонаблюдения «Интегра видео 7» необходимо добавить следующие связи:

  1. Сервер:Сервер Видео:SoftwareContainer:Установленное ПО + Менеджер устройств AcurioManager:SoftwareContent:ПО или Компьютер:SoftwareContainer:Установленное ПО + Менеджер устройств AcurioManager:SoftwareContent:ПО
  2. Менеджер устройств AcurioManager: ManaginContainer:Менеджер Устройств + Опрос локальной сети:ManaginContent:ManaginContent
  3. Менеджер устройств AcurioManager: ManaginContainer:Менеджер Устройств + ПО Интегра-Видео 7:ManaginContent:ManaginContent
  4. ПО Интегра-Видео 7:MediaContainer:Медиаданные + IP Видеокамера: MediaContent:Медиаданные
  5. Сетевой коммутатор:EthernetSocket:Сетевой разъем + Сервер:Сервер Видео:EthernetSocket:Сетевой разъем или Сетевой коммутатор:EthernetSocket:Сетевой разъем + Компьютер:EthernetSocket:Сетевой разъем
  6. Сетевой коммутатор:EthernetSocket:Сетевой разъем + IP Видеокамера:EthernetSocket:Сетевой разъем
Video.png

Далее для элементов «IP видеокамера» задаем любое имя объекта и адрес URL вида iv7://admin:fulladmin@/?udp_id=5705&key2=Камера 5705 где admin – логин пользователя, fulladmin – пароль пользователя, udp_id – идентификатор камеры в ИВ-7 (ID 5.4), key2 – имя камеры в ИВ-7.

Video2.png

Для автоматического добавления камер можно воспользоваться командами "Создать все камеры" или "Создать локальные камеры" (при условии, что камеры добавлены на самом сервере Интегра-ВидеоVII) у элемента ПО Интегра-ВидеоVII(IntegraVideo7).
Если включены умные подписки в конфигурационном файле AM, то связи между камерами и ПО Интегра-Видео VII не создадутся. Так же используя команду у элемента ПО Интегра-ВидеоVII "updateIpForLocalCameras" будет выполнено обновление ip адресов всех локальных камер привязанных к элементу ПО Интегра-ВидеоVII.

Затем, прописываем имя и сетевой адрес у элемента «Сервер», адрес должен соответствовать компьютеру, на котором установлены «ПО Интегра -Видео 7» и «Менеджер устройств». Элементы «Сервер» и «Компьютер» полностью идентичны по своим свойствам, имеют только разные модели.

Video3.png

После чего, в элементе «ПО Интегра-Видео 7» устанавливаем режим «Главный сервер» (main_server) и задаем сетевой адрес сервера видео, порт по умолчанию оставляем 9090.

Video4.png

Элемент «Опрос локальной сети» необходим для мониторинга состояния элементов «Компьютер» и «Сервер».

Video5.png


Команда"SendCamerasTolv"

Дополнительная команда "SendCamerasTolv" реализована в Менеджер устройств AcuarioManager и добавлена типу устройств "IntegraVideo7". Эта команда предназначена для более легкой интеграции со сторонним ПО по видеонаблюдению, при этом не требуется вручную прописывать координаты с камер. Команда "SendCamerasTolv" запускается на устройстве ПО "Integra-Video":


Схема .png


При запуске команды "SendCamerasTolv" все "наследники типа" "VideoCamera" группируются в список и формируется список наборов параметров. Затем этот набор параметров отправляется как параметр в метод "camera: update". Этот функционал реализован для всех способов взаимодействия с сервисом "IntegraVideo7".

Схема "Agilion"

Данная схема предназначена для настройки локального позиционирования.

Для создания данной схемы необходимо добавить следующие элементы:

  1. Компьютер или Сервер
  2. Менеджер устройств (AcuarioManager)
  3. Сервер Agilion
  4. Agilion Zero Point
  5. Agilion метка

Примечание: Менеджер устройств должен быть не старше версии 1.26.0.

Для создания схемы «Agilion» необходимо добавить следующие связи:

  1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
  2. Менеджер устройств: ManagingContainer + Сервер Agilion: Привязка к менеджеру:ManagingContent
  3. Сервер Agilion: Подключение Agilion Zero Point:AgilionZeroPointSocketOut + Agilion Zero Point: Разъем Agilion Zero Point вход:AgilionZeroPointSocketIn
  4. Сервер Agilion: Разъем Agilion выход:AgilionSocketOut + Agilion метка: Разъем Agilion вход:AgilionSocketIn
Shem 1.PNG

Далее необходимо открыть свойства элемента "Компьютер" и в строке "Сетевой адрес" ввести ip компьютера, к которому должен подключаться "Менеджер устройств".

Shem 2.PNG

В свойствах элемента "Сервер Agilion" указывается сетевой адрес (по умолчанию *) и порт, на который будут приниматься данные.

Shem 3.PNG

В элементе "AgilionZeroPoint" необходимо задать такую высоту и географические координаты, чтобы они соответствовали нулевой точке Agilion.

Shem 4.PNG

Элемент "Agilion метка" - это трекер, для которого указывается номер в поле "Адрес".

Shem 5.PNG

Для отслеживания объекта его необходимо присоединить к элементу "Agilion метка", подключив пины "Источник данных GPS:GPSProviderOut" из Agilion метки к пину "Приемник данных GPS:GPSProviderIn" из объекта.

Shem 6.PNG

Также следует настроить отправку данных на менеджер устройств в системе Agilion. Для этого необходимо открыть файл AgilionDataExport.ini в папке C:\Windows и настроить раздел ExportTCPIP, указав в нем поле Active=1, Host и Port компьютера, на котором стоит менеджер устройств.

Схема "Снепшоты"

Данная схема предназначена для выполнения снепшотов через указанный интервал времени.

Для создания данной схемы необходимо добавить следующие элементы:

  1. Egs Модуль
  2. Скрипт EgsScheduled

Для создания данной схемы необходимо добавить следующие связи:

  1. Egs Модуль: Привязка к менеджеру:ManagingContainer + Менеджер устройств:ManagingContainer
  2. Egs Модуль: Egs выход:EgsOutput + EgsScheduled: Egs вход:EgsInput
CallStored 3.PNG

Далее необходимо настроить сетевой адрес компьютера в свойствах элемента.

Shem 2.PNG

Триггер EgsScheduled настраивается следующим образом:

  1. текст скрипта (script) http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Call%20stored%202.put&path=0/params/script/value;
  2. единица измерения (period_unit), например: час;
  3. интервал в единицах измерения (period_count), например: 1;
  4. повторять через интервал или выполнить один раз в указанное время (repeat), например: 0 (бесконечно), 1 (один раз), 100;
  5. задействовать триггер (enabled), например: true;
  6. в настройках:
    1. имя хранимой процедуры БД (settings.proc): graph.get_time;
    2. аргументы хранимой процедуры БД (JSON массив) (settings.args), например: ["76606d62-a514-11e4-8c37-a7064178f246", 0], где первым параметром является идентификатор сервера, на котором выполняется скрипт, а вторым - номер версии, с которой необходимо получать данные (в данном случае 0).
Shem 7.PNG

При успешном выполнении через указанный интервал времени в параметр результат (settings.result) будет записываться результат в следующем виде:

{
"result": "ok"
}

Примечание: В случае если на схеме отсутствуют элементы типа Egs Модуль EgsModule, менеджер AcuarioManager и компьютер Computer, их необходимо добавить. Если присутствуют, то использовать текущие.

Более подробная информация о скрипте размещена на странице Вызов хранимой процедуры БД по расписанию (Call stored).

Схема "Очистка БД"

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

Для создания данной схемы необходимо добавить следующие элементы:

  1. Egs Модуль
  2. Скрипт EgsScheduled

Для создания данной схемы необходимо добавить следующие связи:

  1. Egs Модуль: Привязка к менеджеру:ManagingContainer + Менеджер устройств:ManagingContainer
  2. Egs Модуль: Egs выход:EgsOutput + EgsScheduled: Egs вход:EgsInput
CallStored 3.PNG

Далее необходимо настроить сетевой адрес компьютера в свойствах элемента.

Shem 2.PNG

Триггер EgsScheduled настраивается следующим образом:

  1. текст скрипта (script) http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Call%20stored%202.put&path=0/params/script/value;
  2. единица измерения (period_unit), например: месяц;
  3. интервал в единицах измерения (period_count), например: 1;
  4. повторять через интервал или выполнить один раз в указанное время (repeat), например: 0 (бесконечно), 1 (один раз), 100;
  5. задействовать триггер (enabled), например: true;
  6. в настройках:
    1. имя хранимой процедуры БД (settings.proc): graph.clearing_all_archive;
    2. аргументы хранимой процедуры БД (JSON массив) (settings.args), например: ["76606d62-a514-11e4-8c37-a7064178f246", "1 month"], ["76606d62-a514-11e4-8c37-a7064178f246", "2 months"], где первым параметром является идентификатор сервера, на котором выполняется скрипт, а вторым - интервал времени, ранее которого будут удалены записи. Если задать следующий аргумент: ["76606d62-a514-11e4-8c37-a7064178f246", "7 days"], то будут сохранены записи за 7 дней от текущей даты, остальные будут очищены.
Shem 8.PNG

При успешном выполнении через указанный интервал времени в параметр результат (settings.result) будет записываться результат в следующем виде:

{
"result": "ok"
}

Примечание: В случае если на схеме отсутствуют элементы типа Egs Модуль EgsModule, менеджер AcuarioManager и компьютер Computer, их необходимо добавить. Если присутствуют, то использовать текущие.

Более подробная информация о скрипте размещена на странице Вызов хранимой процедуры БД по расписанию (Call stored).

Схема "Получение данных с метеостанции на платформы Nokia"

Данная схема предназначена для получения данных с метеостанции на платформы Nokia

Для создания данной схемы необходимо добавить следующие элементы:

  1. Компьютер или Сервер
  2. Менеджер устройств (AcuarioManager)
  3. Клиент Cumulocity (CumulocityClient)
  4. Составная метеостанция (CompositeMeteostationStation)

А так же для примера типы веществ:

  1. Сероводород (H2S)
  2. Метилмеркаптан (CH3SH)
  3. Формальдегид (CH2O)

Для создания данной схемы необходимо добавить следующие связи:

  1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
  2. Менеджер устройств: ManagingContainer + CumulocityClient: Привязка к менеджеру:ManagingContent
  3. Составная метеостанция: Логический вход:LogicInput + CumulocityClient: Логический выход:LogicOutput
  4. Составная метеостанция: Логический выход:LogicOutput + вещества (Сероводород, Метилмеркаптан, Формальдегид, Метан):Логический вход:LogicInput
Метеостанция.jpg

Далее необходимо настроить параметры у элементов:

  1. Компьютер(сервер): сетевой адрес
  2. Клиент Cumulocity: url, логин, пароль, refreshS (как часто обновлять данные), timeoutS (если данных по датчику нет в течении этого времени, он посинеет)
  3. Составная метеостанция: идентификатор (id)
  4. Элемент вещество: в дополнительную информацию (additional info) указать id.

Составная метеостанция используется для агрегации датчиков, зеленеет как только приходит любое событие по этой метеостанции. К метеостанции по LogicLink можно подключать любые датчики, которые будут зеленеть при поступлении события по параметру.
Пример отображения полученной информации с датчиков веществ:

Метеостанция12.jpg

Схема "Умного пешеходного перехода"

Данная схема предназначена для получения данных с пешеходного перехода

Для создания данной схемы необходимо добавить следующие элементы:

  1. Компьютер или Сервер
  2. Менеджер устройств (AcuarioManager)
  3. Nema Сервер (NemaGSMServer)
  4. Пешеходный переход (NemaCrosswalk)

Для создания данной схемы необходимо добавить следующие связи:

  1. Компьютер: Установленное ПО:SoftwareContainer + Менеджер устройств: ПО:SoftwareContent
  2. Менеджер устройств: ManagingContainer + NemaGSMServer: Привязка к менеджеру:ManagingContent
  3. NemaGSMServer: NemaParamContainer + NemaCrosswalk: NemaParamContent
2схема перехода.png

По необходимости добавить следующие элементы:

  1. Nema светильник (NemaLamps) - осветительные приборы на перекрестке
  2. Nema счетчик (NemaMeters) - счетчики на перекрестке
  3. Предупреждающее табло с данными по встречной полосе (NemaOncomingBoard)
  4. Предупреждающее табло с данными по попутной полосе (NemaPassingBoard)

Далее необходимо настроить параметры у элементов:

  1. Nema Сервер - указать ключ, идентификатор пользователя(uid) и сетевой адрес
  2. Пешеходный переход - указать идентификатор объекта (objectObjectListID), расположение (position)
  3. Nema светильник - указать идентификатор объекта (objectListID), расположение (position)
  4. Nema счетчик - указать идентификатор прибора (meterID)

Пример отображения в клиенте "Интегра планета Земля" переход пешехода

First passing.png

Схема радара HikvisionRadar

Для того чтобы развернуть схему радара, необходимо:

1) В редакторе СКАДА добавить следующие элементы:

  1. Am(Менеджер устройств 'Acuario Manager');
  2. Computer1(Компьютер);
  3. HikvisionRadar1(DS-PR1-60);
  4. Plan1(План);
  5. (Space1 ) Пространство.

Все эти элементы можно найти в открывшемся окне редактора СКАДА слева на панели, выбрав вкладку «Типы элементов»

2) Затем следует соединить устройства между собой Am(Менеджер устройств 'Acuario Manager') и Компьютер, Am(Менеджер устройств 'Acuario Manager') и HikvisionRadar1(DS-PR1-60), HikvisionRadar1(DS-PR1-60) и Space1, Space1 и Plan1. В результате должна получиться следующая схема:


R-1.png


Данная схема применима для трекинга. Настройка трекинга: http://wiki.integra-s.com:11111/index.php/Установка_сервера_в_Linux#Integraemberdb

3) В свойствах HikvisionRadar1(DS-PR1-60) рекомендуется заполнить следующие параметры:

  1. angelBetweenHangerAndHorizon (угол (в вертикальной плоскости) между перпендикуляром к плоскости антенны радара и горизонтом) - (-15);
  2. angelBetweenNorthAndRadar (угол между направлением на север и перпендикуляром к плоскости антенны радара (через восток)) - ( 42);
  3. ip(сетевой адрес) - 192.168.10.133;
  4. hangerHeight (высота подвеса ) - (2,5);
  5. Географическая высота - (125);
  6. login (логин) - admin;
  7. password (пароль) - 'Volga1996!';
  8. Порт - 8000;
  9. Состояние - 'Активен (ок)';


R-2.png


R-3.png


После проделанных действий следует запустить "Интегра Планета 4D".

4) В горизонтальном меню выбрать «Файл» и «Импортировать планировку»;

5) В открывшемся окне «Импорт здания» в строке поиска написать название нужного плана, например, Офис Интегра-С;

6) В списке загруженных зданий на сервер выбрать нужный план, (в нашем случае Офис Интегра-С) и нажать кнопку «Редактировать»;

7) Затем перейти на вкладку «Настройка серверов» и справа нажать на кнопку «Добавить сервер» («+»);

После этого надо выбрать «Существующее соединение» и из предлагаемого списка выбрать нужное подключение. Если отсутствует нужное подключение, то надо нажать на «Новое подключение» и заполнить все необходимые данные для добавления нового подключения

8) Установить "галочку" в строке для привязки устройства к серверу и сохранить изменения.


R-4.png


Добавление датчика HikvisionRadar на план

1) В горизонтальном меню выбрать «Редакторы» и «Редактор датчиков»;

2) В открывшемся окне «Доступные для расстановки объекты» найти устройство HikvisionRadar1(DS-PR1-60) и вынести его на план, удерживая ЛКМ;

3) Масштабировать датчик относительно здания на плане с помощью кнопок на панели в редакторе и сохранить текущие изменения.


R-5.png


Модуль интеграции Lers

Обновление модуля интеграции Lers

Для обновления библиотек модуля интеграции Lers необходимо:

1. Перейти на сайт https://www.lers.ru/soft/download/;
2. Во вкладке "Обновление" скачать последнюю версию файла LersManualUpdate.zip;
3. В корне установленного AcuarioManager найти папку LersUpdateUnpacker и открыть файл readme.txt;
4. Следовать инструкции из readme.txt.

Инструкция из readme.txt:

1. Поместить архив LersManualUpdate.zip в папку LersPath;
2. Запустить Extract.bat;
3. Скопировать папку Lers в корень AcuarioManager;
4. Удалить архив LersManualUpdate.zip из папки LersPath.


Для работы с модулем интеграции «Риф-Плюс» необходимо:

В Редакторе Скада:

1. Добавить элемент "Риф-Плюс" (RifPlus). Этот элемент находится во вкладке «Типы элементов» главного окна редактора Скада;
2. Соединить элемент "Риф-Плюс" (RifPlus) с линком ManagementLink элемента AcuarioManager (Менеджер устройств «AcuarioManager»).

В результате получится схема:


Риф 1.PNG


3. В свойствах элемента "Риф-Плюс" (RifPlus) заполнить параметры "Сетевой адрес", "Порт", "Имя объекта":


Риф 3.PNG


Далее для выполнения схемы необходимо отправить устройству команду update_scada_schema, после этого устройство получит статус ok_schemeCreatingInProgress. AcuarioManager запрашивает всю необходимую информацию от интегрируемой системы. Если в том месте схемы, где должен быть объект он отсутствует, то AcuarioManager создает внутри себя объект схемы со статусом ok_schemeCreatingInProgress. Если объект в схеме присутствует, то AcuarioManager выставляет этому объекту статус schemeCreatingObjectReady. После этого AcuarioManager передает созданные объекты FireFly. После получения подтверждения о состоянии объектов от FireFly AcuarioManager присваивает этим объектам статус schemeCreatingObjectReady. Если процесс построения схемы завершился без ошибок, то AcuarioManager выставляет главному элементу статус schemeCreatingObjectReady. Затем AcuarioManager перезапускает модуль RifPlus.

Если в процессе обнаруживается, что в схеме в редакторе Скада у главного элемента есть «потомок», который наследует базовый тип для этой интегрируемой системы, то этому элементу и всем его «потомкам» присваивается состояние error.schemeCreatingUnnecessary. Такой элемент и все его «потомки» должны быть удалены вручную пользователем.

При запуске модуля AcuarioManager проверяет состояние главного элемента. Если обнаружено состояние ok_schemeCreatingInProgress или error_schemeCreatingError, то AcuarioManage выводит в Error сообщение:

log.Error($"В процессе создания схемы возникли ошибки. Проверьте схему и установите стостояние итема {bastionOpcServerItem.name}:{bastionOpcServerItem.Id} в none.unknown, после чего перезагрузите acuario.manager или 
выполните команду обновления схемы для указанного итема повторно.");

При этом состояние ok_schemeCreatingInProgress будет сброшено в error_schemeCreatingError. Элементы, которые присутствуют в схеме, но не связаны с главным элементом, не учитываются.


Работа с модулем AcuarioManager для симуляции изменений и отдельной утилитой для обработке данных об изменениях из логов

Для воспроизведения в офисе ситуации на объекте необходимо:

На объекте:

1. Экспортировать схему объекта из СКАДА с сохранением guid итемов:
И1.png


2. Из папки "{Корень ам}\Logs\ff\" скопировать все файлы лога транзакций с именами, соответствующими шаблону "ffTransaction.log.*":


И2.png


3. Подготовленные файлы с информацией о версиях используемых AM, FF, typdef передать в офис на обработку.


В офисе:

1. Установить нужные версии AM, FF, typdef;
2. Импортировать схему устройств в СКАДА:
И3.png


3. В папку "{Корень ам}\Utilities\LogParser\Source" поместить файлы лога транзакций (НЕ В АРХИВЕ И НЕ ВЛОЖЕННЫЕ В ДОП. ПАПКИ):


И4.png


4. Запустить файл "{Корень ам}\Utilities\LogParser\LogParser.exe". В процессе и по окончании работы будут появляться сообщения о прогрессе обработки логов. В конце будет выведено количество пакетов транзакций и затраченное на обработку время:


И5.png


5. В СКАДА, в схеме, которую загрузили в пункте 2, добавить итем типа "SimulatorModule". Связать его с итемом AcuarioManager линком "ManagementLink":


И6.png


6. Запустить AcuarioManager

Уточнения:

1. Имена файлов логов неважны;
2. Если структура лога не будет соответствовать требуемой - парсер просто упадет;
3. При подключении к итему AcuarioManager в схеме СКАДА итема типа "SimulatorModule" все остальные модули отключаются и их можно не отсоединять вручную;
4. Не важно в каких базах находились переносимые с объекта итемы. При воспроизведении изменений будет осуществляться поиск итемов по их guid в суммарном графе, загруженном со всех добавленных в конфиг am'а подключений FireFly;
5. При воспроизведении изменений из лога все записи изменений, которые не считаются записью в архив, записываются с ТЕКУЩИМ на момент воспроизведения временем;
6. Если в логе время фактического изменения меньше времени отправки на как минимум 2 секунды, то такое изменение считается записью в архив и время изменения не заменяется на текущее;
7. Изменения собираются в транзакции строго тем же образом, которым они отправлялись при записи лога;
8. Связывать "SimulatorModule" с другими итемами кроме итема AcuarioManager не требуется;
9. Как только все записанные транзакции будут воспроизведены модуль начнет воспроизведение сначала. Пауза не предусмотрена.


Упрощенные динамические типы

Предварительные действия:

1) Установить версию FireFly для динамических типов. Для этого:

  1. Перейти по ссылке https://nextcloud.integra-s.com:11100/index.php/s/Q83ysM4q2NosbGw и загрузить архив ffdyn-win211021.zip;
  2. Распаковать в удобное место на диске, например E:\distrFirefly (distrFirefly создан перед распаковкой);
  3. Создать базу данных (с помощью create_DB_and_Schemas.bat) и настроить config.json;
  4. Запустить serenity и FireFly;

2) Установить и настроить amjs. Для этого:

  1. Загрузить и установить nodejs версии не ниже 14.17.0 https://nodejs.org/en/download/. На момент описания инструкции установлен v14.18.1 (Windows 10). На windows 7 установить 14 версию не удастся, т.к. отсутствует поддерживаемость данной ОС);
  2. Загрузить архив amjs.zip http://maps.integra-s.com:5434/resources/typedef2017/amjs/amjs.zip и распаковать в удобное для вас место, например: E:\amjsNode (amjsNode создан перед распаковкой);
  3. Выполнить установку необходимых пакетов командой: npm install. В результате в папке amjsNode появится новый каталог node_modules(не пустой):


1-T.png


4. Настроить конфигурационный файл globals.js, указав данные FireFly и Центра Авторизации (ЦА), где:

url - сетевой адрес FireFly;

servers - список гуидов серверов (графов) на FireFly, где local (по умолчанию) - означает локальный сервер.

Пример массива из подключений:

"firefly":  [{ 
       "url": "ws://192.168.11.2:8095/ws",
       "servers": ["local"]
   },

{ "url": "ws://192.168.11.2:8096/ws", "servers": ["local"] }], где 192.168.11.2:8095 – это 0 индекс подключения:


2-T.png


Где:

authid - имя пользователя в ЦА;

authpass - пароль пользователя в ЦА;

http://192.168.10.146:8888 - базовый сетевой адрес ЦА;

plugins - специфические настройки плагинов, где {} - означает включить плагин, не имеющий настроек (т.е. без ffsoap/post, param-binding);

"ffsoap": {

           "ff": 0, - индекс ФФ в секции FireFly;
           "address": "10.0.0.26", - адрес, где запущен amjs плагин (откуда будет запрашиваться файл FireFlySoap.wsdl);
           "port": 9005, - порт, по которому запрашивается файл FireFlySoap.wsdl;
           "wsdl": "FireFlySoap.wsdl" – имя файла, который расположен в корне папки amjsNode
            }


pulse - настройки пульса FireFly:

 timeout - время отсутствия пульса в секундах для того, чтобы считать потерянной связь с FireFly;

reconnection - настройки восстановления соединения:

 interval - интервал в секундах перед началом попыток соединения при потере пульса;

mainloop - настройки главного цикла приложения:

 delay - искусственная задержка в секундах после каждого главного цикла (нужно для снижения нагрузки на процессор);


3) Обновить типы до версии >= 1200; 4) Запустить amjs через командную строку (находясь в корне папки amjsNode) node amjs.js.


Создание виртуальных соединений (линков)

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

1. Открыть меню «Редактирование», перейти в настройки и выбрать «Расширенный режим»;
2. Открыть меню «Редактирование» и перейти в «Редактор типов»;
3. Нажать на кнопку 3-T.png, создать тип DynamicClass1. Динамический тип появится в списке типов с названием DynamicClass1:
4-T.png
4. Для настройки свойств типа необходимо ЛКМ нажать на DynamicClass1 в списке типов:


5-T.png


  1. Поле для ввода имени динамического типа (имя должно быть введено на латинице и с заглавной буквы). Имя динамического типа не должно совпадать с именем статического типа;
  2. Описание параметров – добавление необходимых параметров различных типов$
  3. Описание – поле для описания типов$
  4. Текст ошибки – поле для вывода текста ошибки.
5. Перейти в описание параметров, нажать на кнопку «Добавить поле» и добавить параметр с названием field1 и типом reference. Имя параметра должно быть введено латинскими буквами, начиная со строчной:
6-T.png


6. Принять и сохранить свойства типа$
7. Аналогично создать тип DynamicClass2 (можно не добавлять параметры);
8. Выйти из редактора типов, добавить созданные элементы на граф и добавить связь field1:ReferenceContainer+ReferenceContent:


7-T.png


Создан виртуальный линк - ReferenceLink:


8-T.png


Дополнительно

Виртуальные линки – это те линки, которых в базе физически нет. Есть только динамический параметр у одного объекта, который содержит идентификатор другого объекта.

Для создания виртуальных линков используются типы параметров reference и referenceList.

Reference – это параметр ссылочного типа представляет собой строку с фиксированным регулярным выражением для разбора гуидов (дефисы без скобок) и дополнительно позволяет задавать имя класса динамических объектов, на которые данная ссылка может указывать (если имя класса не указано, значит данная ссылка может указывать на любой объект). Для дополнительной настройки параметра необходимо нажать на {}:

9-T.png


10-T.png


ReferenceList – это параметр типа список ссылок и позволяет дополнительно задавать: минимальное и максимальное количество элементов в списке, а так же необходимость их уникальности. Для дополнительной настройки параметра необходимо нажать {}:

11-T.png


12-T.png


  1. Items – список фиксированных доступных значений;
  2. minitems – минимальное количество элементов в списке;
  3. maxitems – максимальное количество элементов в списке;
  4. uniqueitems – проверка уникальности значений массива.