Детектор вхождения целей в зоны (Trace detector 1) — различия между версиями
Mikheeva (обсуждение | вклад) (→Построение схемы) |
Mikheeva (обсуждение | вклад) |
||
Строка 107: | Строка 107: | ||
#географический полигон зоны ('''area'''), например: POLYGON((50.22190511 53.2362532,50.22222154 53.23630881,50.22224243 53.23622371,50.2218933105469 53.2361679077148,50.22190511 53.2362532)); | #географический полигон зоны ('''area'''), например: POLYGON((50.22190511 53.2362532,50.22222154 53.23630881,50.22224243 53.23622371,50.2218933105469 53.2361679077148,50.22190511 53.2362532)); | ||
#приоритет зоны ('''trace_priority'''), например: normal. | #приоритет зоны ('''trace_priority'''), например: normal. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Проверка== | ==Проверка== | ||
− | После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке <code>http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/ | + | После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке <code>http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%201.put&path=0/params/hash/value</code> |
''Хэш-сумма будет совпадать только в том случае, если скрипт не был изменен.'' | ''Хэш-сумма будет совпадать только в том случае, если скрипт не был изменен.'' | ||
Строка 124: | Строка 115: | ||
==Алгоритм работы== | ==Алгоритм работы== | ||
− | # | + | #Типы из параметров триггера '''spawn_alarm_types''', '''spawn_event_types''', '''trace_highest_types''', '''trace_high_types''', '''trace_normal_types''', '''trace_low_types''' и '''trace_lowest_types''' объединяются в общий список отслеживаемых типов целей. |
− | # | + | #Bсе типы целей должны быть унаследованы от '''MoveableObject'''. |
− | ## | + | #Выбираются все зоны из всех баз, подключенных к серверу. |
− | + | #Перебирает все зоны, у которых параметр '''trace_priority''', установлен в значение, отличное от '''DEFAULT'''. | |
− | ## | + | #Далее для каждой полученной зоны: |
− | + | ##в памяти создается список идентификаторов целей, находящихся в этой зоне в данный момент; | |
− | ## | + | ##выполняет запрос на сервер '''getObjectsByPoligon''' с параметром зоны '''area''', списком отслеживаемых типов целей и параметром триггера '''trace_timeout'''; |
− | ## | + | ##полученный список идентификаторов целей в зоне сравнивается с сохраненным; |
− | ## | + | ##вычисляются цели, вошедшие в зону и вышедшие из нее; |
+ | ##по полученным спискам идентификаторов в базе трекинга находятся цели т.е. объекты типа '''MoveableObject'''; | ||
+ | ##обновляется параметр цели '''trace_zones''', т.е. список идентификаторов зон, в которых в данный момент находится цель; | ||
+ | ##в соответствии с параметрами '''trace_highest_types''', '''trace_high_types''', '''trace_normal_types''', '''trace_low_types''' и '''trace_lowest_types''' проставляется определенный приоритет цели в параметр '''trace_priority'''; | ||
+ | ##в соответствии с параметрами '''spawn_alarm_types''' и '''spawn_event_types''' генерируются события '''ZoneAlarm''' или '''ZoneEvent''', содержащие следующие параметры: | ||
+ | ###'''owner''' - идентификатор зоны; | ||
+ | ###'''server''' - идентификатор сервера трекинга; | ||
+ | ###'''position''' - географическая позиция цели; | ||
+ | ###'''detector''' - идентификатор триггера; | ||
+ | ###'''action''' - действие: enter или exit; | ||
+ | ###'''target''' - идентификатор цели; | ||
+ | ###'''target_type''' - тип цели; | ||
+ | ###'''target_info''' - краткая информация о цели. | ||
==Пример работы== | ==Пример работы== |
Версия 15:05, 12 апреля 2018
Определение вхождения целей в охраняемые зоны. Генерирование событий о входе цели в зону и выходе цели из зоны. Расчет и сохранение списка зон, в которые входит цель, и приоритета слежения за целью.
Содержание
Зависимости
Скрипт зависит от какого-либо другого модуля поставляющего географические координаты движущихся объектов базе трекинга, т.е. меняющего параметр position у объектов наследников типа MoveableObject.
Настройка
Добавления триггера EgsScheduled
Триггер EgsScheduled можно добавить двумя способами:
Добавление триггера EgsScheduled по ссылке
Для добавления скрипта необходимо:
1. Импортировать скрипт по следующей ссылке: http://maps.integra-s.com/resources/typedef2017/egs/Trace%20detector%201.put.
2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
3. В открывшемся окне выбрать импортированный скрипт "Trace detector 1.put".
Элемент появится на рабочей области.
Добавление триггера вручную
Для того чтобы добавить триггер вручную, необходимо:
1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент EgsScheduled.
2. Дважды нажать на выбранный элемент.
После этого появится окно для добавления элемента.
3. Нажать кнопку "Добавить".
Также все элементы можно добавлять путем захвата и перетаскивания на рабочую область левой кнопкой мыши.
Построение схемы
Для дальнейшего построения схемы необходимо:
1. Добавить элемент EgsModule, менеджер AcuarioManager и компьютер Computer.
2. Настроить сетевой адрес компьютера.
Для этого необходимо выделить на схеме элемент Computer и нажать на кнопку вызова свойств элемента.
В окне свойств элемента указать ip адрес используемого компьютера в строке "Сетевой адрес".
3. Связать EgsScheduled и Egs Модуль, подключив пины «Egs вход: EgsInput» у EgsScheduled и «Egs выход: EgsOutput» у Egs Модуля.
4. Привязать пин "Привязка к менеджеру: ManagingContent" из Egs Модуля к пину "Привязка к менеджеру: ManagingContainer" из Менеджера устройств.
5. Подключить пин "ПО: SoftwareContent" из Менеджера устройств с пином "Установленное ПО: SoftwareContainer" из Компьютера.
Замечание:
Если скрипт не был импортирован, то для триггера необходимо настроить параметры:
- текст скрипта (script)
http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%201.put&path=0/params/script/value;
- единица измерения (period_unit), например: секунда;
- интервал в единицах измерения (period_count), например: 1;
- точное время внутри интервала (period_time), например: 00:00:00, 14:30:00;
- повторять через интервал или выполнить один раз в указанное время (repeat), например: 0 (бесконечно), 1 (один раз), 100;
- задействовать триггер (enabled), например: true;
- типы целей, для которых следует генерировать тревожное событие ZoneAlarm (spawn_alarm_types), например: UndefinedSeaTarget;
- типы целей, для которых следует генерировать нормальное событие ZoneEvent (spawn_event_types), например: ExtraLargeShip, LargeShip, SmallShip, TinyShip, Boat;
- типы целей с высшим приоритетом (trace_highest_types), например: ExtraLargeShip, UndefinedSeaTarget;
- типы целей с высоким приоритетом (trace_high_types), например: LargeShip;
- типы целей с нормальным приоритетом (trace_normal_types), например: SmallShip;
- типы целей с низким приоритетом (trace_low_types), например: TinyShip;
- типы целей с низшим приоритетом (trace_lowest_types), например: Boat;
- максимальное количество секунд с последнего обновления цели (trace_timeout), например: 500.
Настройку параметров триггера также можно выполнить, нажав правой кнопкой мыши по элементу EgsScheduled и в контекстном меню выбрав пункт "Редактировать параметры".
После этого откроется окно для редактирования параметров.
Также это можно выполнить, открыв свойства элемента.
6. У каждой охраняемой зоны Zone настроить следующие параметры:
- географический полигон зоны (area), например: POLYGON((50.22190511 53.2362532,50.22222154 53.23630881,50.22224243 53.23622371,50.2218933105469 53.2361679077148,50.22190511 53.2362532));
- приоритет зоны (trace_priority), например: normal.
Проверка
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке http://maps.integra-s.com/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%201.put&path=0/params/hash/value
Хэш-сумма будет совпадать только в том случае, если скрипт не был изменен.
Алгоритм работы
- Типы из параметров триггера spawn_alarm_types, spawn_event_types, trace_highest_types, trace_high_types, trace_normal_types, trace_low_types и trace_lowest_types объединяются в общий список отслеживаемых типов целей.
- Bсе типы целей должны быть унаследованы от MoveableObject.
- Выбираются все зоны из всех баз, подключенных к серверу.
- Перебирает все зоны, у которых параметр trace_priority, установлен в значение, отличное от DEFAULT.
- Далее для каждой полученной зоны:
- в памяти создается список идентификаторов целей, находящихся в этой зоне в данный момент;
- выполняет запрос на сервер getObjectsByPoligon с параметром зоны area, списком отслеживаемых типов целей и параметром триггера trace_timeout;
- полученный список идентификаторов целей в зоне сравнивается с сохраненным;
- вычисляются цели, вошедшие в зону и вышедшие из нее;
- по полученным спискам идентификаторов в базе трекинга находятся цели т.е. объекты типа MoveableObject;
- обновляется параметр цели trace_zones, т.е. список идентификаторов зон, в которых в данный момент находится цель;
- в соответствии с параметрами trace_highest_types, trace_high_types, trace_normal_types, trace_low_types и trace_lowest_types проставляется определенный приоритет цели в параметр trace_priority;
- в соответствии с параметрами spawn_alarm_types и spawn_event_types генерируются события ZoneAlarm или ZoneEvent, содержащие следующие параметры:
- owner - идентификатор зоны;
- server - идентификатор сервера трекинга;
- position - географическая позиция цели;
- detector - идентификатор триггера;
- action - действие: enter или exit;
- target - идентификатор цели;
- target_type - тип цели;
- target_info - краткая информация о цели.
Пример работы
Для построения схемы необходимо:
1. Создать схему по выше описанному алгоритму.
2. Добавить элемент Болид Пожарный датчик.
3. Настроить параметр "Сетевой адрес" компьютера.
4. Настроить следующие параметры триггера:
- единица измерения (period_unit): секунда;
- интервал в единицах измерения (period_count): 1;
- повторять через интервал или выполнить один раз в указанное время (repeat): 0;
- задействовать триггер (enabled): true;
- в настройках:
- список масок имен типов (settings.types): BOLID_*;
- флаг включения алгоритма для тех. осмотров (settings.maintenance): true;
- флаг включения алгоритма для проверок (settings.verification): false.
5. Настроить следующие параметры пожарного датчика:
- период обслуживания(maintenancePeriod): 23;
- последнее обслуживание(maintenanceLast): 2018-02-01T10:00:00
После сохранения параметров триггера и пожарного датчика в параметр датчика установится запланированное обслуживание (maintenancePlanned): 2018-02-24T10:00:00.