Wishlist

Решил я сделать в деревне видеонаблюдение.
Сосед порекомендовал некие Beseder c Aliexpress, которые он взял себе и нашим соседям. Взял попробовать, однако моя попытка зайти в настройки была мигом пресечена требованием вроде: пожалуйста, даунгрейдите свой браузер до версии 5-летней давности, с поддержкой ActiveX! 🤦
Да, камеры конечно дешевые, но такого мне не надо!

В общем, немного повыбирав, решил попробовать купить камеру HiWatch DS-I205M.

Стоила она на тот момент как тот комплект Beseder (4 камеры + регистратор). А сегодня стоит ещё в два раза дороже! 😮
Нужно было брать две! 😭

Критерии выбора у меня были такие:
  • купольная (с PTZ, что бы можно было удаленно двигать, приближать и тп.)
  • сетевое подключение по Ethernet
  • т.к. я пока жалею деньги на регистратор, то необходима встроенная SD-карта 😁
  • ONVIF посвежее
Качеством оптики у камеры мне понравилось. Но давайте о недостатках:
  • Обнаружением движения на улице пользоваться невозможно. Какой бы порог не выставлял - срабатывает на каждую мелочь, засыпая оповещениями на телефон. Обнаружение "пересечение линии" тоже не работает.
  • В ней нет режима курсирования. Можно указать пресеты направления PTZ. Но самостоятельно камера между ними перемещаться не может.
  • SD-карту достать сложно. Нужно демонтировать камеру, и отверткой её раскрутить. Но возможно это и плюс, если камеру сложно демонтировать.
  • Нельзя скачать видео. Ни через веб-консоль, ни через смартфон.
    Со смартфона можно перемотать, и посмотреть... Но, во-первых - это совсем не то же самое, что "скачать". Во-вторых, у меня скорость исходящего канала ADSL 0.5 Mbit/s. И даже находясь в деревне, я в него упираюсь, т.к. на смартфон поток идет через Интернет.
    В общем, это довольно печалит, с учетом предыдущего недостатка.
  • Почему-то при подключении с моего смартфона первый раз (вероятно, в день) - камера перезагружается.

Недостатки вроде как не критичные. Первых два, вероятно, должен собой закрыть регистратор. Но пока его у меня нет, с режимом курсирования и скачкой видео я решил разобраться, написав для этого отдельную приблуду.

Взял самую звёздную библиотеку ONVIF для Go. Библиотека оказалась несколько ужасна, и в некоторых местах нерабочая. Я решил, что мне она не нравится, и лучше я сам с протоколом разберусь, и имплементируют себе только необходимое.
Протоколом оказался SOAP. Я его успел возненавидеть ещё в начале 2000-ых, когда еще работал в Гомеле на Ностре, и писал интеграцию с какой-то платежной системой.
Спецификация ONVIF довольно объёмная, но и не сказать, что бы очень понятная. Нужно ресёчить. К тому же, предыдущие версии некоторых документов, которые необходимы для моей камеры, приходилось выискивать при помощи гугла.

Но, потратив несколько дней, курсирование камеры я все-таки реализовал. Приблуду закинул на RaspberryPi, откуда она управляет камерой. Просто, с определенными заданными интервалами переключает пресеты позиций PTZ, и дожидается завершения поворота. Перед переключением на следующий пресет, проверяет отличие текущей позиции, от предыдущей запомненной. Если отличается - значит камерой кто-то управляет еще с другого места, и нужно заснуть на несколько минут.
Ещё есть пару идей на доработку. Но это когда/если руки дойдут. Возможно, попробую реализовать детекцию движения своими силами.

А вот со скачкой видео - косяк! В спецификации нет такого. Можно получить видеопоток реплея (в реальном времени). А просто скачать, скажем, день видеозаписи - нет. 🙁