Как сделать из обычного квартирного домофона IP камеру видеонаблюдения

от автора

В моей квартире установлен аналоговый домофон Визит, вызывная панель которого оснащена камерой. Этот домофон не современный, а координатный — аналоговой и ему больше 10 лет.

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

Физическое подключение к камере домофона

Очень подробно про физическое подключение писал в первой части статьи. Для этого понадобится:

1. Самая дешевая USB карта видеозахвата EasyCAP (HD).

USB карта видеозахвата, подключенная к  Orange Pi Zero 512Mb

USB карта видеозахвата, подключенная к Orange Pi Zero 512Mb

2. Разъем питания DC для камер видеонаблюдения.

Разъем питания DC

Разъем питания DC

3. Вывод витой пары подключенной параллельно входу камеры в блок домофона.

Две камеры - два выхода

Две камеры — два выхода

Программное подключение к камере домофона

Я выбрал использовать проект Go2RTC от AlexxIT, установив его на старый Orange Pi Zero 512Mb.

Шаг 1. Установил и подготовил систему

Используя BalenaEtcher записал на карту памяти Armbian — это дистрибутив Linux, разработанный специально для одноплатных компьютеров на базе процессоров ARM.

Далее по инструкции вошёл в систему как root.

Welcome to Armbian_community!  Documentation: https://docs.armbian.com | Community support: https://community.a                                                                                        rmbian.com/  IP address: 192.168.165.117  Create root password: ******************** Repeat root password: ********************  WARNING!  You are using an automated build meant only for developers to provide constructive feedback to improve build system, OS settings or UX.  If this does not apply to you, STOP NOW!  Especially don't use this image for production since things might not work as expected or at all. They may  break anytime with next update.  Shell: BASH  root@orangepizero:~# 

Потом обновил систему:

root@orangepizero:~# sudo apt update && sudo apt upgrade -y

Установил необходимые зависимости: поскольку используется USB-устройство захвата видео, необходимо установить некоторые инструменты, связанные с мультимедиа и видео, такие как ffmpeg, которые Go2RTC может использовать для обработки видеопотоков.

root@orangepizero:~# sudo apt install ffmpeg v4l-utils -y
  • ffmpeg: необходим для кодирования/декодирования видео.

  • v4l-utils: содержит инструменты для взаимодействия с устройством видеозахвата.

Проверил USB-устройство захвата подключил USB-карту видеозахвата EasyCAP и убедился, что она распознается системой:

root@orangepizero:~# ls /dev/video* /dev/video0  /dev/video1

В ответе было что-то вроде /dev/video0. Это означает, что устройство обнаружено.

Дополнительно посмотрел доступные форматы:

root@orangepizero:~# ffmpeg -list_formats all -i /dev/video0 ffmpeg version 5.1.6-0+deb12u1 Copyright (c) 2000-2024 the FFmpeg developers   built with gcc 12 (Debian 12.2.0-14)   configuration: --prefix=/usr --extra-version=0+deb12u1 --toolchain=hardened --libdir=/usr/lib/arm-linux-gnueabihf --incdir=/usr/include/arm-linux-gnueabihf --arch=arml --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libble-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libjack --ename --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librist --enable-librubberband --enableenable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libtwolame --enable-libvidstab --enab --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enablnable-opencl --enable-opengl --enable-sdl2 --disable-sndio --enable-libjxl --enable-pocketsphinx --enable-librsvg --enable-libdc1394 --enable-libdrm --enable-libiec6188hromaprint --enable-frei0r --enable-libx264 --enable-libplacebo --enable-librav1e --enable-shared   libavutil      57. 28.100 / 57. 28.100   libavcodec     59. 37.100 / 59. 37.100   libavformat    59. 27.100 / 59. 27.100   libavdevice    59.  7.100 / 59.  7.100   libavfilter     8. 44.100 /  8. 44.100   libswscale      6.  7.100 /  6.  7.100   libswresample   4.  7.100 /  4.  7.100   libpostproc    56.  6.100 / 56.  6.100 [video4linux2,v4l2 @ 0xe16470] Compressed:       mjpeg :          Motion-JPEG : 480x320 640x480 720x480 [video4linux2,v4l2 @ 0xe16470] Raw       :     yuyv422 :           YUYV 4:2:2 : 480x320 /dev/video0: Immediate exit requested

Шаг 2. Установил Go2RTC

Загрузил готовый двоичный файл для моей архитектуры ARMv6:

root@orangepizero:~# wget https://github.com/AlexxIT/go2rtc/releases/download/v1.9.4/go2rtc_linux_armv6 root@orangepizero:~# chmod +x go2rtc_linux_armv6

Переместил двоичный файл в нужное место в моём PATH, /usr/local/bin:

root@orangepizero:~# sudo mv go2rtc_linux_armv6 /usr/local/bin/go2rtc

Шаг 3. Настроил Go2RTC

Создал каталог конфигурации, переключившись на самого себя — пользователя, которого я создал:

root@orangepizero:~# su -l mike mike@orangepizero:~$ mkdir -p ~/.config/go2rtc

Создал файл конфигурации go2rtc.yaml, указав USB-устройство видеозахвата в качестве источника входного сигнала:

mike@orangepizero:~# nano ~/.config/go2rtc/go2rtc.yaml

Простая конфигурация для захвата видео с USB-устройства и его потоковой передачи:

streams:   usb_camera: ffmpeg:device?video=0&video_size=1280x720#video=h264 

А это памятка для самого себя — чтобы сохранить и выйти из редактора nano в Linux, выполните следующие шаги:

  1. Нажмите сочетание клавиш Ctrl + X. Это приведет к выводу сообщения «Save modified buffer (y/n/a/q/K)?».

  2. Нажмите Y для сохранения изменений.

  3. Нажмите Enter для подтверждения выбора.

  4. Введите имя файла, если вы хотите сохранить его под другим именем, или просто нажмите Enter, чтобы сохранить файл под текущим именем.

  5. Нажмите Enter еще раз для подтверждения.

  6. Нажмите Enter, чтобы закрыть редактор nano.


Проверил конфигурацию, для этого вручную запустил двоичный файл Go2RTC с указанной конфигурацией, чтобы проверить, всё ли работает правильно:

mike@orangepizero:~# go2rtc -config ~/.config/go2rtc/go2rtc.yaml 18:14:23.751 INF go2rtc platform=linux/arm revision=a4885c2 version=1.9.4 18:14:23.752 INF config path=/root/.config/go2rtc/go2rtc.yaml 18:14:23.755 INF [rtsp] listen addr=:8554 18:14:23.755 INF [api] listen addr=:1984 18:14:23.757 INF [webrtc] listen addr=:8555/tcp
Все настройки можно делать через браузер

Все настройки можно делать через браузер

Шаг 4. Настроил в качестве службы Systemd

Чтобы обеспечить автоматический запуск Go2RTC при загрузке, создал служебный файл systemd:

mike@orangepizero:~$ sudo nano /etc/systemd/system/go2rtc.service [sudo] пароль для mike:

Добавил следующее содержимое для моего имени пользователя — mike:

[Unit] Description=Go2RTC Service After=network.target  [Service] ExecStart=/usr/local/bin/go2rtc -config /home/mike/.config/go2rtc/go2rtc.yaml Restart=always User=mike  [Install] WantedBy=multi-user.target

Запустил и включил службу:

mike@orangepizero:~$ sudo systemctl daemon-reload mike@orangepizero:~$ sudo systemctl enable go2rtc.service Created symlink /etc/systemd/system/multi-user.target.wants/go2rtc.service → /etc/systemd/system/go2rtc.service. mike@orangepizero:~$ sudo systemctl start go2rtc.service 

Шаг 5. Проверил потоковую передачу

login as: mike mike@192.168.165.117's password:   ___  ____  _   _____  / _ \|  _ \(_) |__  /___ _ __ ___ | | | | |_) | |   / // _ \ '__/ _ \ | |_| |  __/| |  / /|  __/ | | (_) |  \___/|_|   |_| /____\___|_|  \___/  Welcome to Armbian_community 24.8.0-trunk.588 Bookworm with Linux 6.6.44-current                                                                                        -sunxi  No end-user support: untested automated build  System load:   2%               Up time:       10:24 Memory usage:  14% of 490M      IP:            192.168.165.117 CPU temp:      77°C             Usage of /:    9% of 15G

Через VLC подключился к потоку rtsp://192.168.165.117:8554/usb_camera с компьютера, телефона и системы видеонаблюдения.

Все подключения отобразились по адресу Go2RTC http://192.168.165.117:1984/network.html

Все подключения отобразились по адресу Go2RTC http://192.168.165.117:1984/network.html
Видео с камеры домофона через Go2RTC в VLC

Видео с камеры домофона через Go2RTC в VLC

Результат получен — камера обычного квартирного домофона стала камерой видеонаблюдения.

Альтернативный вариант сделать из обычного квартирного домофона камеру видеонаблюдения

Уже когда всё настроил программно — наткнулся на алиэкспрессе на конвертер CVBS -> RJ45. Это означает в теории, что можно только используя этот конвертер, который стоит примерно полторы тысячи рублей сделать всё тоже самое — из аналогового видеосигнала сделать ONVIF без установки Go2RTC и покупки платы видеозахвата.
Но я не пробовал.

Адаптеры  для ONVIF AHD2NET, 1080P HD, AHD/TVI/CVI, преобразователь камеры IPC,  делает AHD камеру для IP-камеры, которая работает с системой NVR

Адаптеры для ONVIF AHD2NET, 1080P HD, AHD/TVI/CVI, преобразователь камеры IPC, делает AHD камеру для IP-камеры, которая работает с системой NVR

Настройка камеры квартирного домофона в системе видеонаблюдения

Очень часто я использую Synology Surveillance Station — это программное обеспечение, разработанное компанией Synology Inc., которое позволяет пользователям создавать системы видеонаблюдения. Причём, чтобы использовать оборудование Synology не обязательно его покупать, потому что есть варианты. Хотя у меня есть несколько и фирменных серверов Synology.

Synology Surveillance Station

Synology Surveillance Station

Камера домофона Визит легко добавилась в Synology Surveillance Station через Go2RTC. Единственной проблемой стало то, что при настройках путь rtsp, потому что не задан логин и пароль, постоянно сбрасывается на следующий вид и не даёт сохранить изменения в последующих настройках:

 :########@192.168.165.117:8554/usb_camera

Для того чтобы это исправить пришлось задать имя и пароль в настройках Go2RTC. Просто через веб-интерфейс http://192.168.165.117:1984/editor.html изменил:

streams:   usb_camera: ffmpeg:device?video=0&video_size=1280x720#video=h264 rtsp:   username: "admin"  # optional, default - disabled   password: "pass"   # optional, default - disabled

То есть ссылка приняла вид: rtsp://admin:pass@192.168.165.117:8554/usb_camera

Дополнительно: настройка камеры многоквартирного домофона в системе домашней автоматизации Home Assistant

Раз Go2RTC позволяет получить картинку, то можно использовать её в автоматизации вызова домофона в квартиру. Адрес картинки выглядит примерно так:

http://192.168.165.117:1984/api/frame.jpeg?src=usb_camera

Автоматизация, когда Алиса говорит через колонку, что снизу с 1го этажа кто-то звонит в квартиру, а в телеграмм отсылается текстовое уведомление и фотка с камеры домофона на 1м этаже выглядит примерно так:

alias: Домофон оповещение description: "" trigger:   - platform: state     entity_id:       - binary_sensor.domofon_incoming_call     to: "on" condition: [] action:   - target:       entity_id: media_player.yandex_station     data:       media_content_id: >-         Кто-то звонит в домофон с 1го этажа в {{         now().hour|round|format(morph='час') }} {{         now().minute|round|format(morph='минута') }}.       media_content_type: text       extra:         volume_level: 0.9     action: media_player.play_media   - data:       title: "*? Звонок в домофон* "       message: в {{ now().hour }} часов {{ now().minute }} минут.     action: notify.telegram_me   - data:       message: Фото       data:         photo:           - url: http://192.168.165.117:1984/api/frame.jpeg?src=usb_camera             caption: ? Камера домофона на 1м этаже             disable_notification: true     enabled: true     action: notify.telegram_me   - delay:       hours: 0       minutes: 1       seconds: 0       milliseconds: 0 mode: single
Результат автоматизации

Результат автоматизации

Физический слаботочный щиток квартиры после установки оборудования

Orange Pi Zero 512Mb вместе с USB картой видеозахвата EasyCAP (HD) лежат по нижней части щитка — на фото видны лишь частично:

Физический слаботочный щиток квартиры после установки оборудования

Физический слаботочный щиток квартиры после установки оборудования

Вместо итогов

Сделать из обычного квартирного домофона камеру видеонаблюдения и завести её не только в систему видеонаблюдения, но вписать в собственный умный дом — возможно.

Автор: Михаил Шардин,

26 августа 2024 г.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

IP камера из обычного домофона — нужная вещь?

100% Да12
0% Нет0
0% Не знаю0

Проголосовали 12 пользователей. Воздержался 1 пользователь.

ссылка на оригинал статьи https://habr.com/ru/articles/836718/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *