Представьте: вы хотите следить за подъездом, двором или даже за своим котом, но не хотите тратиться на дорогие системы видеонаблюдения. Что делать? В этой статье я расскажу, как из обычной веб-камеры и Raspberry Pi сделать умный видеосервер с уведомлениями в Telegram и онлайн-трансляцией. Всё просто, доступно и без лишних заморочек.


Почему видеонаблюдение — это не роскошь, а необходимость

Только представьте: вы уехали в отпуск, а в подъезде кто-то пытается открыть вашу дверь. Или соседский ребёнок решил поиграть с вашим велосипедом. Без видеонаблюдения вы узнаете об этом слишком поздно. Система, которая сама отправит вам видео в Telegram при движении, — это как личный охранник, который не спит и не пьёт кофе.

Но зачем платить за дорогие камеры и сервисы, если можно использовать то, что уже есть дома? Например, старую веб-камеру и недорогую Raspberry Pi.


Что нужно для проекта

  • Raspberry Pi 3B+ (или аналогичная модель)
  • Веб-камера USB (например, Logitech C270)
  • Карточка памяти microSD для Raspberry Pi
  • Интернет-соединение
  • Аккаунт в Telegram

Как это работает

  1. Raspberry Pi подключается к веб-камере.
  2. Программа Motion отслеживает движение в кадре.
  3. При обнаружении движения записывается видео.
  4. Видео автоматически отправляется в Telegram.
  5. Вы можете смотреть видео в реальном времени через браузер.

Настройка Raspberry Pi и Motion

Установка ОС и подготовка

Для начала установите Raspbian GNU/Linux (например, версию Buster). Это стандартная ОС для Raspberry Pi, с которой легко работать.

Проверка камеры

Подключите веб-камеру и убедитесь, что система её видит:

sudo v4l2-ctl --list-formats

Если камера поддерживает форматы YUYV или MJPG, всё отлично.

Установка Motion

Motion — это программа, которая умеет обнаруживать движение и записывать видео.

sudo apt-get install motion

После установки откройте конфигурационный файл:

sudo nano /etc/motion/motion.conf

Внесите следующие изменения:

Параметр Значение Описание
start_motion_daemon yes Запускать Motion при старте системы
width 1280 Ширина видео
height 720 Высота видео
framerate 10 Частота кадров
threshold 1000 Чувствительность к движению
minimum_motion_frames 3 Минимальное количество кадров для движения
event_gap 10 Время без движения для остановки записи
max_movie_time 20 Максимальная длина видеофайла (секунд)
output_pictures off Отключить фото
ffmpeg_output_movies on Включить запись видео в формате mp4
locate_motion_mode on Выделять движущийся объект красным квадратом
target_dir /var/lib/motion Папка для хранения видео
stream_port 90 Порт для онлайн-трансляции
stream_localhost off Разрешить доступ к стриму из сети
stream_authentication login:password Авторизация для доступа к видео
on_movie_end /usr/local/bin/tg_video.sh Username %f Скрипт для отправки видео в Telegram

Сохраните изменения (Ctrl+O) и выйдите (Ctrl+X).


Автоматическое удаление старых видео

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

sudo crontab -e

Добавьте строку:

0 1 * * * find /var/lib/motion -mtime +1 -exec rm {} \;

Настройка Telegram для уведомлений

Установка Telegram CLI

sudo apt update
sudo apt install -y libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev libssl1.0-dev git make
cd ~
git clone --recursive https://github.com/kenorb-contrib/tg.git

Исправление исходного кода

Откройте файл:

nano ~/tg/tgl/mtproto-utils.c

Найдите assert(0); и замените на //assert(0); два раза.

Сохраните и выйдите.

Компиляция

cd ~/tg
./configure
make

Авторизация

Запустите:

bin/telegram-cli -k tg-server.pub -W

Введите номер телефона и подтвердите.


Скрипт для отправки видео в Telegram

Создайте файл:

sudo nano /usr/local/bin/tg_video.sh

Вставьте:

#!/bin/bash
tgpath=/home/pi/tg
cd ${tgpath}
(sleep 3; echo "send_video $1 $2"; echo "safe_quit") | ${tgpath}/bin/telegram-cli -k tg-server.pub -W

Сделайте скрипт исполняемым:

sudo chmod +x /usr/local/bin/tg_video.sh

Запуск и проверка

Включите Motion в автозагрузку:

sudo systemctl enable motion
sudo systemctl start motion
sudo service motion status

При движении в поле зрения камеры в Telegram будут приходить видео.


Онлайн-трансляция видео

В браузере в локальной сети введите:

http://<IP-адрес Raspberry Pi>:90

Если настроена авторизация, введите логин и пароль.

Для доступа из интернета пробросьте порт на роутере или используйте VPN.


Практический пример

Я разместил камеру в глазке двери, закрепил её скотчем и прикрыл пластиковой коробкой. Камера смотрит прямо в подъезд. При движении — видео прилетает в Telegram, а я могу в любой момент зайти на стрим через браузер.


Альтернативы и расширения

  • Используйте IP-камеры с поддержкой ONVIF Profile S для интеграции с Windows 10 без костылей.
  • Для трансляции на сайт можно использовать программы с поддержкой RTSP и HLS, например, RTSP2HLS.
  • Если хотите смотреть камеры на Windows, подключите IP-камеру через «Bluetooth и другие устройства» в настройках.

Советы и рекомендации

  • Не забывайте обновлять прошивку камеры для безопасности.
  • Настройте автоматическое удаление видео, чтобы не забивать карту памяти.
  • Используйте VPN или проброс портов с осторожностью, чтобы не открыть доступ злоумышленникам.
  • Для стабильной работы Raspberry Pi используйте качественный блок питания и карту памяти.

Итог

Видеонаблюдение с Raspberry Pi и веб-камерой — это не только бюджетно, но и увлекательно. Вы получаете систему, которая сама реагирует на движение, отправляет видео в Telegram и позволяет смотреть стрим онлайн. Это отличный способ защитить свой дом и получить опыт работы с Linux и сетевыми технологиями.


Включайте фантазию, экспериментируйте и делайте свой дом умнее!