58

Как превратить обычный квартирный домофон в 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/g...
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) лежат по нижней части щитка - на фото видны лишь частично:

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

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

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

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

Умный дом

237 постов2.5K подписчиков

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества