[Модуль] ONVIF (onvif)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am

Re: Модуль ONVIF

Сообщение Chainik »

directman66 писал(а): Вт сен 18, 2018 3:45 pm Прошло вроде больше года с момента поднятия вопроса о подписке на события ONVIF. За темой не следил, кто в теме, появилась ли сейчас такая возможность (polling)? Работает оно у кого-то?
Увы, не работает. Сергей сам признавался, что не получилось реализовать задуманное в плане получения событий по ONVIF.
directman66
Сообщения: 2800
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Контактная информация:

Re: Модуль ONVIF

Сообщение directman66 »

Ситуация на самом деле куда более интересная.
After a lot of reading and searching I have implemented Event using Onvif device manager dlls.
There are three ways by which we can subscribe to the events.
1.Real time Pull-Point Notification Interface.(Pull-Point Mechanism)
2.Basic Notification Interface.(Push Mechanism)
3.Notification Streaming Interface. (Metadata streaming)
Real time Pull-Point Notification Interface
SPOILERSPOILER_SHOW
После многого чтения и поиска я реализовал Event, используя DLL-файлы диспетчера устройств Onvif.

Есть три способа, которыми мы можем подписаться на события.

1.Real time Pull-Point Notification Interface (Механизм вытягивания)

2. Базовый интерфейс уведомления (Push Mechanism)

3.Notification Streaming Interface. (Потоковая передача метаданных)

Интерфейс уведомления о точке передачи в реальном времени
Более подробно тут с примерами https://stackoverflow.com/questions/415 ... n-in-onvif

А вот тут чувак приводит пример сообщения https://github.com/beegee-tokyo/CCTVview/issues/2, которое нужно отправить камере, чтобы сообщить ей, куда слать уведомления (второй вариант).
SPOILERSPOILER_SHOW
ONVIF protocol has three type of event subscription (as described in this answer)
So I'm want to implement second one Basic Notification Interface.(Push Mechanism).
In that case I try to use this kind of request (take it by wireshark from onvif desktop app)

Код: Выделить всё

               <s:Envelope
                xmlns:s="http://www.w3.org/2003/05/soap-envelope"
                xmlns:a="http://www.w3.org/2005/08/addressing">
                    <s:Header>
                        <a:Action>
                            http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest
                        </a:Action>
                        <a:To>
                            http://192.168.0.239:8080/onvif/events
                        </a:To>
                    </s:Header>
                    <s:Body
                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
                        <Subscribe
                            xmlns="http://docs.oasis-open.org/wsn/b-2">
                            <ConsumerReference>
                                <a:Address>
                                    http://$ipv4ip:8085/subscription-1
                                </a:Address>
                            </ConsumerReference>
                            <InitialTerminationTime>
                                PT60S
                            </InitialTerminationTime>
                        </Subscribe>
                    </s:Body>
                </s:Envelope>
В используемой Сергеем библиотеке class.ponvif.php есть функция public function events_Subscribe() {

Код: Выделить всё

$post_string='<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Header><Security s:mustUnderstand="1" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><UsernameToken><Username>%%USERNAME%%</Username><Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">%%PASSWORD%%</Password><Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">%%NONCE%%</Nonce><Created xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">%%CREATED%%</Created></UsernameToken></Security></s:Header><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><CreatePullPointSubscription xmlns="http://www.onvif.org/ver10/events/wsdl"><InitialTerminationTime>PT60M</InitialTerminationTime></CreatePullPointSubscription></s:Body></s:Envelope>';
Которая вызывается

Код: Выделить всё

        if ($rec['SUBSCRIBE']) {
            $response = $onvif_object->events_Subscribe();
            if ($response['SubscriptionReference']['Address']) {
                $rec['SUBSCRIPTION_ADDRESS']=$response['SubscriptionReference']['Address'];
                SQLUpdate('onvif_devices',$rec);
Т.е. теоретически все реализуемо, и даже почти готово, но очень сильно зависит от реализации протокола ONVIF на самой камере.
Может подскажет кто-нибудь приложения для отлова этих сообщений например для андройд? Первым делом нужно вообще понять, имеется ли данный функционал в лабораторных камерах, и если какие-то другие приложения работают, можно начинать копать и тут.

кстати вот нашел какое-то приложение, но не тестировал. https://habr.com/company/synesis/blog/120747/

Ссылка на программу https://yadi.sk/d/kXCND7Nmt3tAYQ

Поллинг камеры видимо выглядит так:
SPOILERSPOILER_SHOW
Безымянный.png
Безымянный.png (19.13 КБ) 5130 просмотров
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2800
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Контактная информация:

Re: Модуль ONVIF

Сообщение directman66 »

Оказывается polling работает. Проблема с передачей привязанного значения!!!

SPOILERSPOILER_SHOW
Безымянный.png
Безымянный.png (24.28 КБ) 5127 просмотров
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Контактная информация:

Re: Модуль ONVIF

Сообщение skysilver »

Перестаньте называть механизм подписки на события (event subscription) и Pull-Point Notification поллингом. Это диаметрально противоположные подходы.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
directman66
Сообщения: 2800
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Контактная информация:

Re: Модуль ONVIF

Сообщение directman66 »

Сергей починил передачу значений свойствам объектов. Можно использовать.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
sag3ll0
Сообщения: 52
Зарегистрирован: Вс сен 16, 2018 9:49 pm

Re: Модуль ONVIF

Сообщение sag3ll0 »

поиск не работает, при попытке добавить камеру вручную выдала вверху такую ошибку Error: GetCapabilities: Communication error
directman66
Сообщения: 2800
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Контактная информация:

Re: Модуль ONVIF

Сообщение directman66 »

Вроде заработало.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2800
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Контактная информация:

Re: Модуль ONVIF

Сообщение directman66 »

Наконец модуль onvif начал корректно выдавать статусы движения. Камера постоянно шлёт сообщения, если есть движение шлёт true, если нет, то false. Мои китайские камеры к датчику движения приходится привязывать через свойство, а не через метод, иначе на получение каждого сообщения срабатывает метод. Предлагаю собрать статистику камер, с которыми работает данный функционал. Это нужно для понимания, есть ли интерес для развития этого направления. В частности планируется или отдельным модулем, или встроить в этот:

1) Сохранение и вывод на экран снапштов с камеры.
2) Распознавание объектов с помошью mail.ru VISION.
3) Распознавание лиц с помошью mail.ru VISION.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am

Re: Модуль ONVIF

Сообщение Chainik »

directman66 писал(а): Вс сен 23, 2018 9:22 am Наконец модуль onvif начал корректно выдавать статусы движения. Камера постоянно шлёт сообщения, если есть движение шлёт true, если нет, то false. Мои китайские камеры к датчику движения приходится привязывать через свойство, а не через метод, иначе на получение каждого сообщения срабатывает метод. Предлагаю собрать статистику камер, с которыми работает данный функционал. Это нужно для понимания, есть ли интерес для развития этого направления. В частности планируется или отдельным модулем, или встроить в этот:

1) Сохранение и вывод на экран снапштов с камеры.
2) Распознавание объектов с помошью mail.ru VISION.
3) Распознавание лиц с помошью mail.ru VISION.
Мое мнение - развивать функционал существующего модуля. Чтобы не разбрасываться "мыслью по древу".

Да, если раньше, что ни делай с вкладкой "Данные" в модуле onvif, ничего не происходило. то теперь у меня, примерно, каждые 6 секунд срабатывает метод (неважно, указываешь на вкладке "Данные" только метод, или указываешь только свойство, при изменении которого запускается метод). Картинку с камеры при этом модуль onvif присылает раз в 3-4 секунды. Значение свойства не меняется, как было "0", так и остается, даже если перед камерой происходит реальное движение и в журнале "родной" программы камеры это движение регистрируется.
directman66
Сообщения: 2800
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Контактная информация:

Re: Модуль ONVIF

Сообщение directman66 »

Так и не получил отзывы относительно использования камер в качестве датчиков движения.
По моим камерам:
1) Hi3516c +Sony imx222, в простонародье H.264 IPCAM события отрабатывают стабильно.
https://ru.aliexpress.com/item/Ultral-L ... 33edKTJw5c

2) XM-N2 - камера не обнаруживается модулем, также не обнаруживается приложением onvif
https://ru.aliexpress.com/item/XM-1080P ... 33edM5DSu2
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Ответить