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

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

Модератор: immortal

Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Модуль ONVIF

Сообщение Chainik » Вт сен 18, 2018 4:03 pm

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

Re: Модуль ONVIF

Сообщение directman66 » Ср сен 19, 2018 4:18 pm

Ситуация на самом деле куда более интересная.
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
СпойлерПоказать
После многого чтения и поиска я реализовал 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, которое нужно отправить камере, чтобы сообщить ей, куда слать уведомления (второй вариант).
СпойлерПоказать
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

Поллинг камеры видимо выглядит так:
СпойлерПоказать
Безымянный.png
Безымянный.png (19.13 КБ) 3957 просмотров
За это сообщение автора directman66 поблагодарил:
mer (Вт ноя 20, 2018 1:27 am)
Рейтинг: 1.16%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль ONVIF

Сообщение directman66 » Ср сен 19, 2018 8:43 pm

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

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

Re: Модуль ONVIF

Сообщение skysilver » Чт сен 20, 2018 10:13 am

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

Re: Модуль ONVIF

Сообщение directman66 » Чт сен 20, 2018 12:29 pm

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

Re: Модуль ONVIF

Сообщение sag3ll0 » Чт сен 20, 2018 6:24 pm

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

Re: Модуль ONVIF

Сообщение directman66 » Пт сен 21, 2018 12:33 pm

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

Re: Модуль ONVIF

Сообщение directman66 » Вс сен 23, 2018 9:22 am

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

1) Сохранение и вывод на экран снапштов с камеры.
2) Распознавание объектов с помошью mail.ru VISION.
3) Распознавание лиц с помошью mail.ru VISION.
За это сообщение автора directman66 поблагодарили (всего 3):
ILGAS (Вс сен 23, 2018 2:38 pm) • Chainik (Вс сен 23, 2018 3:09 pm) • alex.frost (Вс сен 23, 2018 9:29 pm)
Рейтинг: 3.49%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Модуль ONVIF

Сообщение Chainik » Вс сен 23, 2018 3:37 pm

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
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль ONVIF

Сообщение directman66 » Чт сен 27, 2018 12:37 pm

Так и не получил отзывы относительно использования камер в качестве датчиков движения.
По моим камерам:
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
Ответить