Выгрузка ролика по событию (Responsive media exporter) — различия между версиями

Материал из Integra-S Wiki
Перейти к: навигация, поиск
(Дополнения)
(Проверка)
 
(не показано 17 промежуточных версий этого же участника)
Строка 1: Строка 1:
Выгрузка ролика с видеокамеры по событию от связанного устройства.
+
Выгрузка ролика с видеокамеры по событию от связанного устройства. Скрипт работает с одной локальной базой интеграции.
  
 
==Построение схемы==
 
==Построение схемы==
Строка 35: Строка 35:
 
4. Связать '''EgsObjectUpdated''' и '''Egs Модуль''', подключив пины «'''Egs вход: EgsInput'''» у '''EgsObjectUpdated''' и  «'''Egs выход: EgsOutput'''» у '''Egs Модуля'''.
 
4. Связать '''EgsObjectUpdated''' и '''Egs Модуль''', подключив пины «'''Egs вход: EgsInput'''» у '''EgsObjectUpdated''' и  «'''Egs выход: EgsOutput'''» у '''Egs Модуля'''.
  
[[File:mediaExporter.PNG|центр|1000px]]
+
[[File:mediaExporter_2.PNG|центр|1000px]]
  
5. Привязать пин "'''Привязка к менеджеру: ManagingContent'''" из '''Egs Модуля''' к пину "'''Привязка к менеджеру: ManagingContainer'''" из '''Менеджера устройств'''.
+
5. Привязать пин "'''Привязка к менеджеру: ManagingContent'''" из '''Egs Модуля''' к пину "'''Менеджер устройств: ManagingContainer'''" из '''Менеджера устройств'''.
  
 
[[File:Scheduled_com_9.PNG|центр|1000px]]
 
[[File:Scheduled_com_9.PNG|центр|1000px]]
Строка 43: Строка 43:
 
6. Подключить пин "'''ПО: SoftwareContent'''" из '''Менеджера устройств''' с пином "'''Установленное ПО: SoftwareContainer'''" из '''Компьютера'''.
 
6. Подключить пин "'''ПО: SoftwareContent'''" из '''Менеджера устройств''' с пином "'''Установленное ПО: SoftwareContainer'''" из '''Компьютера'''.
  
[[File:mediaExporter_2.PNG|центр|1000px]]
+
[[File:mediaExporter.PNG|центр|1000px]]
  
 
7. Настроить следующие параметры триггера:
 
7. Настроить следующие параметры триггера:
Строка 61: Строка 61:
 
Настройку параметров триггера можно выполнить, открыв свойства элемента.
 
Настройку параметров триггера можно выполнить, открыв свойства элемента.
  
[[File:PointObserver_3.PNG|центр]]
+
[[File:mediaExporter_7.PNG|центр]]
  
 
==Маски состояний==
 
==Маски состояний==
Строка 75: Строка 75:
 
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Responsive%20media%20exporter%202.put&path=0/params/hash/value</code>
 
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Responsive%20media%20exporter%202.put&path=0/params/hash/value</code>
  
''Хэш-сумма будет совпадать только в том случае, если скрипт не был изменен.''
+
''Хэш-сумма будет совпадать только в том случае, если скрипт был импортирован и не был изменен.''
 +
 
 +
==Алгоритм работы==
 +
 
 +
#Проверяется, чтобы объект источник события соответствовал хотя бы одной маске из списка '''settings.source_types''', либо имел идентификатор из списка '''settings.source_guids'''.
 +
#Проверяется, что список измененных параметров содержит состояние объекта и значение состояния соответствует хотя бы одной маске из списка '''settings.source_states'''.
 +
#Если '''settings.logic_link''' равно true, выбираются все видеокамеры '''VideoCamera''', соединенные с источником события линком типа '''LogicLink'''.
 +
#Если '''settings.same_space''' равно true, выбираются все видеокамеры '''VideoCamera''', связанные с тем же помещением '''Space''', что и источник события.
 +
#Для выбранных камер запускается следующая асинхронная функция.
 +
##Запоминается текущее время, т.е. время события
 +
##Выдерживается пауза, равная '''settings.media_duration'''
 +
##Запускается экспорт ролика в папку '''settings.media_path''', так чтобы время события оказалось в середине ролика.
 +
 
 +
==Примеры использования==
 +
1. По тревоге от любого датчика пожарной сигнализации создавать 10 минутные ролики со связанных линком типа '''LogicLink''' видеокамер.
 +
 +
    "source_types": "FireSecurityCategory",
 +
    "source_guids": null,
 +
    "source_states": ["alarm_*"],
 +
    "link_type": true,
 +
    "same_space": false,
 +
    "media_path": "f:\video",
 +
    "media_duration": "00:10:00",
 +
    "url": "http://localhost:1986/axis2/services/Iv7Server"
 +
}
 +
 
 +
2. По тревоге от датчика пожарной сигнализации c идентификатором 7cd95cde-e320-456e-afc1-475899d78707 создавать 30 секундные ролики с видеокамер находящихся в том же помещении
 +
 +
    "source_types": "FireSecurityCategory",
 +
    "source_guids": ["7cd95cde-e320-456e-afc1-475899d78707"],
 +
    "source_states": ["alarm_*"],
 +
    "link_type": false,
 +
    "same_space": true,
 +
    "media_path": "f:\video",
 +
    "media_duration": "00:10:00",
 +
    "url": "http://localhost:1986/axis2/services/Iv7Server"
 +
}
  
 
==Пример работы==
 
==Пример работы==
Строка 83: Строка 119:
 
1. Создать схему по выше описанному алгоритму (см. [[Поворот_связанной_поворотной_камеры_в_предустановленную_точку_по_команде_(Point_observer_1)#Построение_схемы|Построение схемы]]).
 
1. Создать схему по выше описанному алгоритму (см. [[Поворот_связанной_поворотной_камеры_в_предустановленную_точку_по_команде_(Point_observer_1)#Построение_схемы|Построение схемы]]).
 
   
 
   
[[File:PointObserver_2.PNG|центр|1000px]]
+
[[File:mediaExporter_2.PNG|центр|1000px]]
  
2. Добавить элемент Наблюдаемая точка и IP Поворотная видеокамера. Подключите пин "'''Источник наблюдателя: Overseer_output'''" из '''IP поворотной видеокамеры''' с пином "'''Приемник наблюдателя: Overseer_input'''" из '''Наблюдаемой точки'''.
+
2. Добавить элементы Пространство, IP поворотная камера и Болид Пожарный датчик. Подключить пин "'''Привязка к расположению: PositionContent'''" из '''Болид Пожарный датчик''' с пином "'''Расположение: PositionContainer'''" из '''Пространства'''. Подключить пин "'''Привязка к расположению: PositionContent'''" из '''IP поворотная камера''' с пином "'''Расположение: PositionContainer'''" из '''Пространства'''
  
[[File:PointObserver_4.PNG|центр|1000px]]
+
[[File:mediaExporter_3.PNG|центр|1000px]]
  
 
3. Настроить параметр "Сетевой адрес" компьютера.
 
3. Настроить параметр "Сетевой адрес" компьютера.
Строка 93: Строка 129:
 
4. Настроить следующие параметры триггера:
 
4. Настроить следующие параметры триггера:
  
 +
#текст скрипта ('''script''') <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Responsive%20media%20exporter%202.put&path=0/params/script/value;</code>
 
#задействовать триггер ('''enabled'''): true;
 
#задействовать триггер ('''enabled'''): true;
 
#в настройках:
 
#в настройках:
##адрес URL ('''url'''): http://192.168.10.31:1986/axis2/services/Iv7Server;
+
##тип объекта источника событий ('''source_type'''): Sensor;
##дистанция до цели, начиная с которой приближение камеры будет всегда максимальным ('''max_zoom_distance'''): 1500;
+
##список идентификаторов объектов источников событий ('''source_guids'''): 7e30627c-d9e6-47c4-9e49-77b4d8b9db4b (идентификатор пожарного датчика);
##коэффициент, ограничивающий максимальное приближение камеры ('''max_zoom_limit_factor'''), от 0.0 (0%) до 1.0 (100%): 1.
+
##список масок имен событий, активирующих скрипт ('''source_states'''): alarm_*, error_*;
 +
##выгрузка ролика с камеры, связанной с источником события линком типа LogicLink ('''logic_link'''): false;
 +
##выгрузка ролика с камеры, связанной с тем же помещением Space, что и источник события ('''same_space'''): true;
 +
##путь к папке на диске для выгрузки роликов ('''media_path'''):  d:\video;
 +
##продолжительность ролика, исходное событие - в середине ролика ('''media_duration'''):  00:10:00;
 +
##адрес веб-сервиса ИнтеграВидео7 ('''url'''): http://localhost:1986/axis2/services/Iv7Server.
  
5. У наблюдаемой точки '''ObservablePoint''' настроить следующие параметры:
+
Для того чтобы получить идентификатор пожарного датчика, необходимо зайти в свойства элемента и нажать на ссылку "Болид Пожарный датчик". Идентификатор будет скопирован в буфер обмена. В данном случае это: 7e30627c-d9e6-47c4-9e49-77b4d8b9db4b.
  
#расположение ('''position'''): (50.22210012; 53.23655301);
+
[[File:mediaExporter_4.PNG|центр]]
#высота над уровнем моря ('''altitude'''): 123.58162603527308.
 
  
6. Настроить параметры поворотной камеры:
+
5. Настроить параметры поворотной камеры:
  
 
#географические координаты ('''geo_position'''): POINT(50.22219146 53.23627474);
 
#географические координаты ('''geo_position'''): POINT(50.22219146 53.23627474);
Строка 111: Строка 152:
 
#адрес URL ('''url'''): iv7://admin:fulladmin@/?udp_id=211&key2=211 rtsp://q:__root__@192.168.10.211/axis-media/media.amp?videocodec=h264&streamprofile=Balanced.
 
#адрес URL ('''url'''): iv7://admin:fulladmin@/?udp_id=211&key2=211 rtsp://q:__root__@192.168.10.211/axis-media/media.amp?videocodec=h264&streamprofile=Balanced.
  
Далее необходимо запустить скрипт "Команда по расписанию (Scheduled commander 1)", описание которого приведено на странице [[Команда по расписанию (Scheduled commander 1)]], и настроить в свойствах триггера параметры:
 
#список масок имен типов для отправки команды ('''types'''): ObservablePoint;
 
#команда ('''command'''): observe;
 
#идентификатор объекта для отправки команды ('''guids'''). Для этого необходимо зайти в свойства элемента Наблюдаемая точка и нажать на ссылку "Наблюдаемая точка". Идентификатор будет скопирован в буфер обмена. В данном случае это: 0be65844-9e76-42cd-b4ae-2709e0d04ac5.
 
 
[[File:PointObserver_8.png|центр]]
 
  
 
'''Результат''':
 
'''Результат''':
  
Камера поворачивается в наблюдаемую точку.
+
Загружается ролик в указанную папку.
  
 
==Дополнения==
 
==Дополнения==
1. В пункте 1 раздела [[Выгрузка_ролика_по_событию(Responsive_media_exporter)#Построение_схемы|Построение схемы]] добавление триггера '''EgsObjectUpdated''' можно осуществить по ссылке.
+
1. В пункте 1 раздела [[Выгрузка_ролика_по_событию_(Responsive_media_exporter)#Построение_схемы|Построение схемы]] добавление триггера '''EgsObjectUpdated''' можно осуществить по ссылке.
  
 
Для этого необходимо:
 
Для этого необходимо:
Строка 132: Строка 167:
 
[[File:Scheduled_com_1.png|центр|1000px]]
 
[[File:Scheduled_com_1.png|центр|1000px]]
  
:3. В открывшемся окне выбрать импортированный скрипт "Point observer 1.put".
+
:3. В открывшемся окне выбрать импортированный скрипт "Responsive media exporter.put".
  
[[File:PointObserver_5.PNG|центр|1000px]]
+
[[File:mediaExporter_5.PNG|центр]]
  
 
:Элемент появится на рабочей области.
 
:Элемент появится на рабочей области.
Строка 140: Строка 175:
 
[[File:ResponsiveCommander_3.PNG|центр|1000px]]
 
[[File:ResponsiveCommander_3.PNG|центр|1000px]]
  
2. В пункте 7 раздела [[Выгрузка_ролика_по_событию(Responsive_media_exporter)#Построение_схемы|Построение схемы]] редактирование параметров элемента можно осуществить, выделив элемент правой кнопкой мыши и в контекстном меню выбрав пункт "Редактировать параметры".
+
2. В пункте 7 раздела [[Выгрузка_ролика_по_событию_(Responsive_media_exporter)#Построение_схемы|Построение схемы]] редактирование параметров элемента можно осуществить, выделив элемент правой кнопкой мыши и в контекстном меню выбрав пункт "Редактировать параметры".
  
[[File:PointObserver_6.png|центр]]
+
[[File:mediaExporter_6.PNG|центр]]
  
 
:После этого откроется окно для редактирования параметров.''
 
:После этого откроется окно для редактирования параметров.''
  
[[File:PointObserver_7.PNG|центр]]
+
[[File:mediaExporter_8.PNG|центр]]

Текущая версия на 11:48, 21 мая 2019

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

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

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

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

MediaExporter 2.PNG

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

Scheduled com 9.PNG

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

MediaExporter.PNG

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

  1. текст скрипта (script) http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Responsive%20media%20exporter%202.put&path=0/params/script/value;
  2. задействовать триггер (enabled), например: true;
  3. в настройках:
    1. тип объекта источника событий (source_type), например: FireSecurityCategory;
    2. список идентификаторов объектов источников событий (source_guids), например: 7cd95cde-e320-456e-afc1-475899d78707;
    3. список масок имен событий, активирующих скрипт (source_states), например: alarm_*, error_*;
    4. выгрузка ролика с камеры, связанной с источником события линком типа LogicLink (logic_link), например: true, false;
    5. выгрузка ролика с камеры, связанной с тем же помещением Space, что и источник события (same_space), например: true, false;
    6. путь к папке на диске для выгрузки роликов (media_path), например: f:\video;
    7. продолжительность ролика, исходное событие - в середине ролика (media_duration), например: 00:10:00;
    8. адрес веб-сервиса ИнтеграВидео7 (url), например: http://localhost:1986/axis2/services/Iv7Server.

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

MediaExporter 7.PNG

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

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

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

Проверка

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

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

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

  1. Проверяется, чтобы объект источник события соответствовал хотя бы одной маске из списка settings.source_types, либо имел идентификатор из списка settings.source_guids.
  2. Проверяется, что список измененных параметров содержит состояние объекта и значение состояния соответствует хотя бы одной маске из списка settings.source_states.
  3. Если settings.logic_link равно true, выбираются все видеокамеры VideoCamera, соединенные с источником события линком типа LogicLink.
  4. Если settings.same_space равно true, выбираются все видеокамеры VideoCamera, связанные с тем же помещением Space, что и источник события.
  5. Для выбранных камер запускается следующая асинхронная функция.
    1. Запоминается текущее время, т.е. время события
    2. Выдерживается пауза, равная settings.media_duration
    3. Запускается экспорт ролика в папку settings.media_path, так чтобы время события оказалось в середине ролика.

Примеры использования

1. По тревоге от любого датчика пожарной сигнализации создавать 10 минутные ролики со связанных линком типа LogicLink видеокамер.

{   
   "source_types": "FireSecurityCategory",
   "source_guids": null,
   "source_states": ["alarm_*"],
   "link_type": true,
   "same_space": false,
   "media_path": "f:\video",
   "media_duration": "00:10:00",
   "url": "http://localhost:1986/axis2/services/Iv7Server" 
}

2. По тревоге от датчика пожарной сигнализации c идентификатором 7cd95cde-e320-456e-afc1-475899d78707 создавать 30 секундные ролики с видеокамер находящихся в том же помещении {

   "source_types": "FireSecurityCategory",
   "source_guids": ["7cd95cde-e320-456e-afc1-475899d78707"],
   "source_states": ["alarm_*"],
   "link_type": false,
   "same_space": true,
   "media_path": "f:\video",
   "media_duration": "00:10:00",
   "url": "http://localhost:1986/axis2/services/Iv7Server" 
}

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

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

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

MediaExporter 2.PNG

2. Добавить элементы Пространство, IP поворотная камера и Болид Пожарный датчик. Подключить пин "Привязка к расположению: PositionContent" из Болид Пожарный датчик с пином "Расположение: PositionContainer" из Пространства. Подключить пин "Привязка к расположению: PositionContent" из IP поворотная камера с пином "Расположение: PositionContainer" из Пространства

MediaExporter 3.PNG

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

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

  1. текст скрипта (script) http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Responsive%20media%20exporter%202.put&path=0/params/script/value;
  2. задействовать триггер (enabled): true;
  3. в настройках:
    1. тип объекта источника событий (source_type): Sensor;
    2. список идентификаторов объектов источников событий (source_guids): 7e30627c-d9e6-47c4-9e49-77b4d8b9db4b (идентификатор пожарного датчика);
    3. список масок имен событий, активирующих скрипт (source_states): alarm_*, error_*;
    4. выгрузка ролика с камеры, связанной с источником события линком типа LogicLink (logic_link): false;
    5. выгрузка ролика с камеры, связанной с тем же помещением Space, что и источник события (same_space): true;
    6. путь к папке на диске для выгрузки роликов (media_path): d:\video;
    7. продолжительность ролика, исходное событие - в середине ролика (media_duration): 00:10:00;
    8. адрес веб-сервиса ИнтеграВидео7 (url): http://localhost:1986/axis2/services/Iv7Server.

Для того чтобы получить идентификатор пожарного датчика, необходимо зайти в свойства элемента и нажать на ссылку "Болид Пожарный датчик". Идентификатор будет скопирован в буфер обмена. В данном случае это: 7e30627c-d9e6-47c4-9e49-77b4d8b9db4b.

MediaExporter 4.PNG

5. Настроить параметры поворотной камеры:

  1. географические координаты (geo_position): POINT(50.22219146 53.23627474);
  2. географическая высота (geo_height): 130;
  3. калибровочная матрица (calibrationMatrix): 0.95980984 0.28064746 -0.0014583534 -0.28058684 0.95946532 -0.026406791 -0.0060117589 0.025754692 0.99965024;
  4. адрес URL (url): iv7://admin:fulladmin@/?udp_id=211&key2=211 rtsp://q:__root__@192.168.10.211/axis-media/media.amp?videocodec=h264&streamprofile=Balanced.


Результат:

Загружается ролик в указанную папку.

Дополнения

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

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

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

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

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