Страница 16 из 26

Re: Модуль ONVIF

Добавлено: Вт сен 18, 2018 4:03 pm
Chainik
directman66 писал(а):
Вт сен 18, 2018 3:45 pm
Прошло вроде больше года с момента поднятия вопроса о подписке на события ONVIF. За темой не следил, кто в теме, появилась ли сейчас такая возможность (polling)? Работает оно у кого-то?
Увы, не работает. Сергей сам признавался, что не получилось реализовать задуманное в плане получения событий по ONVIF.

Re: Модуль ONVIF

Добавлено: Ср сен 19, 2018 4:18 pm
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
СпойлерПоказать
После многого чтения и поиска я реализовал 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 КБ) 4015 просмотров

Re: Модуль ONVIF

Добавлено: Ср сен 19, 2018 8:43 pm
directman66
Оказывается polling работает. Проблема с передачей привязанного значения!!!

СпойлерПоказать
Безымянный.png
Безымянный.png (24.28 КБ) 4012 просмотров

Re: Модуль ONVIF

Добавлено: Чт сен 20, 2018 10:13 am
skysilver
Перестаньте называть механизм подписки на события (event subscription) и Pull-Point Notification поллингом. Это диаметрально противоположные подходы.

Re: Модуль ONVIF

Добавлено: Чт сен 20, 2018 12:29 pm
directman66
Сергей починил передачу значений свойствам объектов. Можно использовать.

Re: Модуль ONVIF

Добавлено: Чт сен 20, 2018 6:24 pm
sag3ll0
поиск не работает, при попытке добавить камеру вручную выдала вверху такую ошибку Error: GetCapabilities: Communication error

Re: Модуль ONVIF

Добавлено: Пт сен 21, 2018 12:33 pm
directman66
Вроде заработало.

Re: Модуль ONVIF

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

1) Сохранение и вывод на экран снапштов с камеры.
2) Распознавание объектов с помошью mail.ru VISION.
3) Распознавание лиц с помошью mail.ru VISION.

Re: Модуль ONVIF

Добавлено: Вс сен 23, 2018 3:37 pm
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", так и остается, даже если перед камерой происходит реальное движение и в журнале "родной" программы камеры это движение регистрируется.

Re: Модуль ONVIF

Добавлено: Чт сен 27, 2018 12:37 pm
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