Исходный код вики Отправка событий по входящим подпискам
Последние авторы
| author | version | line-number | content |
|---|---|---|---|
| 1 | Вкладка **Платформа НЕЙРОСС** раздела **Дополнительные настройки** позволяет настроить разрешение на отправку событий Платформы НЕЙРОСС / ДеВизор «внешним» системам по входящей ONVIF-подписке. Можно отправлять все события системы, так и фильтровать события по теме (топику) и содержимому. | ||
| 2 | |||
| 3 | {{info}} | ||
| 4 | **Переход к функционалу**: [[Рабочий стол НЕЙРОСС>>doc:ui.ui-desktop.WebHome]] > [[Параметры узла>>doc:ui.node.WebHome]] > [[Дополнительные настройки>>doc:ui.node.ui-advanced.WebHome]] > Вкладка Платформа НЕЙРОСС ~[[[Изменения интерфейса НЕЙРОСС>>doc:ui.ui-desktop.ui-changes.WebHome]]]. | ||
| 5 | {{/info}} | ||
| 6 | |||
| 7 | == Общие сведения == | ||
| 8 | |||
| 9 | Узлы НЕЙРОСС выступают в качестве ONVIF-узлов и обеспечивают возможность оформления входящих и исходящих подписок на события ~[[[Управление подписками>>doc:ui.ui-network.ui-net-subscriptions.WebHome]]] В частности, узлы НЕЙРОСС обеспечивают возможность оформления входящей подписки от «внешнего» потребителя ONVIF-событий — «внешней системы», оформляющей подписку на события узла НЕЙРОСС и обеспечивающий приём таких событий. | ||
| 10 | |||
| 11 | Узлы НЕЙРОСС серверного типа оформляют подписку по запросу, но рассылка событий начинается только после включения функции на самом узле Платформа НЕЙРОСС / ДеВизор средствами данного раздела. | ||
| 12 | |||
| 13 | (% class="box infomessage" %) | ||
| 14 | ((( | ||
| 15 | До версии 20.55 подключение функции осуществляется в файле конфигурирования. При работе в данных версиях обратитесь к специалистам компании ИТРИУМ за консультацией. | ||
| 16 | |||
| 17 | С версии 20.55 параметр доступен в интерфейсе НЕЙРОСС. | ||
| 18 | ))) | ||
| 19 | |||
| 20 | После включения функции рассылки событий во внешнюю систему(ы) начинают передаваться все события (в рамках ограничений протокола). | ||
| 21 | |||
| 22 | {{warning title="ВНИМАНИЕ"}} | ||
| 23 | Рассылка событий осуществляется в режиме реального времени по факту возникновения. Если потребитель должен постоянно быть на связи и «слушать» события. Последующее вычитывание событий НЕ поддерживается. Также есть ограничения на отправку некоторых событий. Полный функционал взаимодействия по ONVIF, в том числе с вычитыванием пропущенных событий, реализовано в Плагине ВИС ~[[[Интеграция с «внешними» информационными системами (ВИС)>>doc:neyross.setup.integration-tools.vis.WebHome]]], при этом события передаются по HTTP POST / JSON, а не ONVIF WS-Notification. | ||
| 24 | {{/warning}} | ||
| 25 | |||
| 26 | (% class="wikigeneratedid" %) | ||
| 27 | Поддерживается фильтрация событий по топикам (типу ONVIF-события) и по содержимому. Фильтрация событий осуществляется на стороне «внешней» системы. Механизм основан на стандартном ONVIF WS-Notification Subscribe с фильтрами TopicExpression и MessageContent (XPath). | ||
| 28 | |||
| 29 | (% class="wikigeneratedid" %) | ||
| 30 | Пока наличие исходящих подписок отображается только для узлов типа БОРЕЙ. В будущих версиях функция будет реализована для серверов НЕЙРОСС ~[[[Управление подписками>>doc:ui.ui-network.ui-net-subscriptions.WebHome]]]. | ||
| 31 | |||
| 32 | == «Включение» рассылки событий == | ||
| 33 | |||
| 34 | При необходимости передачи событий по входящим ONVIF-подпискам в блоке **Прочее **установите флаг в поле** Отправлять события по входящим подпискам**. | ||
| 35 | |||
| 36 | Нажмите на кнопку **Сохранить**. Изменения вступают в силу через 2–3 минуты, перезагрузка узла не требуется. | ||
| 37 | |||
| 38 | == Оформление подписки == | ||
| 39 | |||
| 40 | === Endpoint === | ||
| 41 | |||
| 42 | {{code language="text"}} | ||
| 43 | http://<IP-адрес Платформы>/soap/onvif/events | ||
| 44 | {{/code}} | ||
| 45 | |||
| 46 | === Подписка без фильтров === | ||
| 47 | |||
| 48 | (% class="wikigeneratedid" %) | ||
| 49 | Отправить SOAP Subscribe с указанием только ConsumerReference и InitialTerminationTime. На Consumer должны приходить все ONVIF-события, доступные в Платформе НЕЙРОСС по подписке. | ||
| 50 | |||
| 51 | === Подписка с фильтрацией событий === | ||
| 52 | |||
| 53 | (% class="wikigeneratedid" %) | ||
| 54 | {{{Фильтр задаётся в блоке <wsn:Filter> запроса}}} | ||
| 55 | |||
| 56 | |||
| 57 | (% class="wikigeneratedid" %) | ||
| 58 | **Фильтр по топикам** | ||
| 59 | |||
| 60 | Фильтр по топикам задается строкой с топиками, разделенными знаком "|" . фильтр работает по правилу ИЛИ — событие проходит, если topic совпадает с любым из перечисленных. | ||
| 61 | |||
| 62 | Типовые topic'и событий СКУД приведены в таблице ниже: | ||
| 63 | |||
| 64 | |=Topic|=Смысл | ||
| 65 | |((( | ||
| 66 | ter:AccessControl/AccessGranted/Credential | ||
| 67 | )))|((( | ||
| 68 | Доступ разрешён | ||
| 69 | ))) | ||
| 70 | |((( | ||
| 71 | ter:AccessControl/AccessTaken/Credential | ||
| 72 | )))|((( | ||
| 73 | Проход совершен | ||
| 74 | ))) | ||
| 75 | |((( | ||
| 76 | ter:AccessControl/AccessDenied/Credential | ||
| 77 | )))|((( | ||
| 78 | Доступ запрещён | ||
| 79 | ))) | ||
| 80 | |((( | ||
| 81 | ter:AccessControl/DoorState/Door | ||
| 82 | )))|((( | ||
| 83 | Состояние двери | ||
| 84 | ))) | ||
| 85 | |((( | ||
| 86 | ter:AccessControl/... | ||
| 87 | )))|((( | ||
| 88 | Прочие события Profile C | ||
| 89 | ))) | ||
| 90 | |||
| 91 | |||
| 92 | |||
| 93 | {{info}} | ||
| 94 | Топик события можно уточнить по XML событий в Журнале событий или через Редактор тем извещений ~[[[Система получает неизвестные события. Как их интерпретировать?>>doc:neyross.ops.faq-neyross.faq-unknown-events.WebHome]]]. | ||
| 95 | {{/info}} | ||
| 96 | |||
| 97 | |||
| 98 | Пример фильтра по топикам: | ||
| 99 | |||
| 100 | {{code}} | ||
| 101 | <wsn:Filter> | ||
| 102 | <wsn:TopicExpression Dialect="http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet"> | ||
| 103 | ter:AccessControl/AccessGranted/Credential|ter:AccessControl/AccessTaken/Credential | ||
| 104 | </wsn:TopicExpression> | ||
| 105 | </wsn:Filter> | ||
| 106 | |||
| 107 | {{/code}} | ||
| 108 | |||
| 109 | |||
| 110 | **Фильтр по содержимому ** | ||
| 111 | |||
| 112 | Фильтр задаётся через xPath выражение, которое может включать как условия по И, так и по ИЛИ. | ||
| 113 | |||
| 114 | Пример фильтра по точкам доступа: | ||
| 115 | |||
| 116 | {{code}} | ||
| 117 | <wsn:Filter> | ||
| 118 | <wsn:MessageContent Dialect="http://www.w3.org/TR/1999/REC-xpath-19991116"> | ||
| 119 | //o:Message/o:Source/o:SimpleItem[@Name='AccessPointToken' and | ||
| 120 | (@Value='123e4567-e89b-12d3-a456-426614174000' or | ||
| 121 | @Value='abcd1234-5678-90ab-cdef-1234567890ab')] | ||
| 122 | </wsn:MessageContent> | ||
| 123 | </wsn:Filter> | ||
| 124 | {{/code}} | ||
| 125 | |||
| 126 | В примере выше производится поиск в сообщении блока Source, внутри которого элемент SimpleItem, у которого Name=AccessPointToken и Value равен одному из указанных UUID точек доступа. | ||
| 127 | |||
| 128 | UUID точки доступа (token) вы можете уточнить в разделе Элементы или найти в Журнале событий событие от данной точки доступа, XML ONVIF-извещения найти блок Source / SimpleItem с @Name='AccessPointToken' и скопировать @Value ~[[[Журнал событий>>doc:ui.event-log.WebHome]]]. | ||
| 129 | |||
| 130 | |||
| 131 | **Фильтр по топику и содержимому** | ||
| 132 | |||
| 133 | Если заданы фильтры по топикам и по содержимому, то эти фильтры работают по правилу И, то есть событие должно удовлетворять обоим условиям. | ||
| 134 | |||
| 135 | Пример фильтра: | ||
| 136 | |||
| 137 | {{code}} | ||
| 138 | <wsn:Filter> | ||
| 139 | <wsn:TopicExpression Dialect="http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet"> | ||
| 140 | ter:AccessControl/AccessGranted/Credential|ter:AccessControl/AccessTaken/Credential | ||
| 141 | </wsn:TopicExpression> | ||
| 142 | <wsn:MessageContent Dialect="http://www.w3.org/TR/1999/REC-xpath-19991116"> | ||
| 143 | //o:Message/o:Source/o:SimpleItem[@Name='AccessPointToken' and | ||
| 144 | (@Value='123e4567-e89b-12d3-a456-426614174000' or | ||
| 145 | @Value='abcd1234-5678-90ab-cdef-1234567890ab' or | ||
| 146 | @Value='d3bea616-7d17-4edd-b45f-70d7cae13542')] | ||
| 147 | </wsn:MessageContent> | ||
| 148 | </wsn:Filter> | ||
| 149 | {{/code}} |