Видеонаблюдение на Raspberry Pi4.

Удаление старых файлов с жёсткого диска.

Имя  
Эл. почта  
Сообщение  
  

Описанные файлы можно скачать с Яндекса.

Напишите отзыв.

   Возникла как-то необходимость установки видеокамеры для видеонаблюдения. Штатное программное обеспечение камер как правило пытается писать видео файлы в облачное хранилище, что может быть небезопасным, да и деньгу за ресурс хотят. Поэтому решил подключить камеру к своему домашнему серверу на основе «Raspberry Pi4» с операционной системой «linux Ubuntu Server 20.04».

Произойдёт процесс установки программы Motion на сервер.

Далее идем по адресу:

Программу управления и мониторинга использовал Motion. Motion позволяет работать с потоковым видео RTSP. Камеру для начала я использовал проводную камеру «A4Tech PK-910P» она установлена в непосредственной близости к серверу (снимает помещение где расположен сервер). Планируется установка ещё одной ip камеры внешнего наблюдения. Пока отработка работы системы на «базовой» камере.

Установка и настройка программы «Motion».

   Подключаемся к серверу дистанционно с помощью программы PuTTY или другой терминальной программы. Авторизуемся. Вводим следующую команду:

      sudo apt-get install motion

Вот содержимое правленого файла.

      В ходе работы системы видеонаблюдения неизбежно переполнение жёсткого диска видеофайлами. Поэтому есть необходимость удалять старые видеофайлы. Данную процедуру можно сделать с помощью простого скрипта. Ну а сам скрипт запускать по расписанию с помощью планировщика Cron.

 

Создадим в домашнем каталоге файл dellete_files.sh.

Вот, пожалуй и всё.

В папке motion находиться файл motion.conf вот его то и будем править.

      cd /etc/motion

      sudo vi motion.conf

# Start in daemon (background) mode and release terminal.

daemon on

# Start in Setup-Mode, daemon disabled.

setup_mode off

# File to store the process ID.

; pid_file value

# File to write logs messages into.  If not defined stderr and syslog is used.

log_file /var/log/motion/motion.log

# Level of log messages [1..9] (EMG, ALR, CRT, ERR, WRN, NTC, INF, DBG, ALL).

log_level 6

# Target directory for pictures, snapshots and movies

target_dir /mnt/usbdrive/camera_ip

# Video device (e.g. /dev/video0) to be used for capturing.

#videodevice /dev/video0

# Parameters to control video device.  See motion_guide.html

; vid_control_params value

# The full URL of the network camera stream.

;netcam_url

# Name of mmal camera (e.g. vc.ril.camera for pi camera).

; mmalcam_name value

# Camera control parameters (see raspivid/raspistill tool documentation)

; mmalcam_control_params value

############################################################

# Image Processing configuration parameters

############################################################

# Image width in pixels.

width 640

# Image height in pixels.

height 480

# Maximum number of frames to be captured per second.

framerate 15

# Text to be overlayed in the lower left corner of images

text_left CAMERA1

# Text to be overlayed in the lower right corner of images.

text_right %Y-%m-%d\n%T-%q

############################################################

# Motion detection configuration parameters

############################################################

# Always save pictures and movies even if there was no motion.

emulate_motion off

# Threshold for number of changed pixels that triggers motion.

threshold 1500

# Noise threshold for the motion detection.

; noise_level 32

# Despeckle the image using (E/e)rode or (D/d)ilate or (l)abel.

despeckle_filter EedDl

# Number of images that must contain motion to trigger an event.

minimum_motion_frames 1

# Gap in seconds of no motion detected that triggers the end of an event.

event_gap 60

# The number of pre-captured (buffered) pictures from before motion.

pre_capture 3

# Number of frames to capture after motion is no longer detected.

post_capture 0

############################################################

# Script execution configuration parameters

############################################################

# Command to be executed when an event starts.

on_event_start value

# Command to be executed when an event ends.

on_event_end value

# Command to be executed when a movie file is closed.

; on_movie_end value

############################################################

# Picture output configuration parameters

############################################################

# Output pictures when motion is detected

picture_output off

# File name(without extension) for pictures relative to target directory

picture_filename %Y%m%d%H%M%S-%q

############################################################

# Movie output configuration parameters

############################################################

# Create movies of motion events.

movie_output on

# Maximum length of movie in seconds.

movie_max_time 60

# The encoding quality of the movie. (0=use bitrate. 1=worst quality, 100=best)

movie_quality 45

# Container/Codec to used for the movie. See motion_guide.html

movie_codec mkv

# File name(without extension) for movies relative to target directory

movie_filename %t-%v-%Y%m%d%H%M%S

############################################################

# Webcontrol configuration parameters

############################################################

# Port number used for the webcontrol.

webcontrol_port 8080

# Restrict webcontrol connections to the localhost.

# Если on, то управление камерой только с сервера.

webcontrol_localhost off

# Type of configuration options to allow via the webcontrol.

webcontrol_parms 0

############################################################

# Live stream configuration parameters

############################################################

# The port number for the live stream.

stream_port 8081

# Restrict stream connections to the localhost.

# Если on, то поток от камеры не передаётся в сеть, а только на сервер.

stream_localhost off

##############################################################

# Camera config files - One for each camera.

##############################################################

 camera /etc/motion/camera1.conf

 camera /etc/motion/camera2.conf

; camera /etc/motion/camera3.conf

; camera /etc/motion/camera4.conf

##############################################################

# Directory to read '.conf' files for cameras.

##############################################################

; camera_dir /etc/motion/conf.d

Желтым выделено на что надо обратить внимание.

 

Сохраняем правленый файл :wq

 

В этом файле прописаны пути до конфигурационных файлов каждой камеры.

Создадим в папке motion конфигурационный файл первой камеры camera1.conf:

sudo vi camera1.conf

И заполним файл следующим содержимым.

videodevice /dev/v4l/by-id/usb-Sonix_Technology_Co.__Ltd._A4tech_HD_720P_PC_Camera_SN0001-video-index0

 width 640

 height 480

 framerate 15

text_left CAMERA 1\nLiving room

 target_dir /mnt/usbdrive/camera_ip/camera_1

# число пикселей, которые должны измениться для срабатывания детектора движения

 threshold 2000

# игнорировать резкие изменения интенсивности света в %

 lightswitch_percent 60

# количество кадров, в которых должно быть замечено движение, чтобы сработал детектор

 minimum_motion_frames 5

# количество секунд, по прошествии которых без движения отключать действие детектора

 event_gap 10

# отрисовка рамки вокруг движущегося объекта

# locate_motion_mode on

# стиль окна. Возможны значения box, redbox, cross, redcross

 locate_motion_style redbox

# текст, отображающий измененные пиксели при движении

# text_changes on

В первой строке указываем место монтирования камеры в пункте videodevice.

Затем указываем размеры окна width и height.

В пункте text_left - указывается надпись в левом нижнем углу - CAMERA 1 и ниже написанное за \n (только на английском).

Пункт target_dir – указывается путь до смонтированного хранилища (жёсткого диска), вернее папки (camera_1) на этом диске где будут храниться файлы записанные первой камерой.

Остальные пункты отвечают за работу детектора движения.

 

Сохраняем файл :wq

 

Незабываем создать папки на жёстком диске – в корне диска camera_ip, а в ней camera_1.

 

Добавляем motion в автозагрузку.

vi /etc/default/motion

Редактируем файл motion – напишите следующее:

start_motion_daemon=yes

Сохраняем файл :wq

 

Набираем команду разрешения автозапуска демона:

systemctl enable motion

Перезапускаем motion:

sudo systemctl restart motion

Подключение по Web интерфейсу по порту 8080.

 

IP адрес сервера:8080

sudo vi dellete_files.sh

Откроется файл dellete_files.sh в редакторе vi. Напишите в файле следующее:

#!/bin/bash

while true;

do

find /mnt/usbdrive/camera_ip/camera_1 -name "*.mkv" -type f -mtime +20 -exec rm -rf {} \;

find /mnt/usbdrive/camera_ip/camera_2 -name "*.mkv" -type f -mtime +20 -exec rm -rf {} \;

done

где /mnt/usbdrive/camera_ip/camera_1 – путь до каталога где хранятся файлы, -mtime +20 – поиск файлов по дате старше 20 дней, -type f – удалять только файлы, -exec rm -rf {} \ - удаление найденных файлов.

 

Сохраним файл :wq

 

Сделаем файл исполняемым:

sudo chmod +x /home/ubuntu/dellete_files.sh

Далее воспользуемся планировщиком Cron.

crontab -e

При первом включении потребуется выбрать редактор vi или vim. Напишите в файле следующее:

10 18 * * * /home/ubuntu/dellete_files.sh

Сохраним файл :wq

 

Планировщик будет запускать скрипт dellete_files.sh каждый день в 18:10 (чтоб враги не догадались :-)).

 

Перегружаем сервер:

sudo reboot

Источник  ADMIN-DM2003

Источник  Дмитрий Моск

Подключение IP камеры.

    Пришло время для подключения второй камеры к системе видеонаблюдения. При необходимости можно подключить подобным образом и другие камеры. Итак будем подключать внешнюю IP камеру «Besder 6024PW-I131 960P».  Камера потребляет ток 1 А при напряжении питания 12 В постоянного тока. Камера поставляется без блока питания, поэтому пришлось обзавестись адаптером на 12В (1,5А). Кроме того, установлен в буфер (по питанию) аккумулятор – ну это по желанию.

Сигнал передаётся по IP поэтому пришлось почувствовать себя кабельщиком

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

 

Запускаем проигрыватель VLC – Медиа - открыть URL – введите сетевой адрес:

 

         rtsp://192.168.1.10:554/user=admin&password=&channel=1&stream=0.sdp?real_stream

 

Увидели картинку Ура мы рады :-)

 

Дальше два варианта - 1 оставляем адрес по умолчанию (переходим к настройке сервера на Raspberry) или 2 изменяем настройки камеры.

прокладывая витую пару 5 категории от камеры до роутера. К роутеру также подключён Raspberry Pi4.

Настройка камеры с помощью программы CMS.

В инструкции к камере я прочёл, что можно загрузить ПО из камеры, но китаисы меня жестоко накололи. По адресу камеры 192.168.1.10 я обнаружил следующее.

Однако, пройдя по адресу:

           https://drive.google.com/drive/folders/1D1gwWWFGUhQOVl9UeI02U5_229O_krPF

 

Я благополучно скачал программу CMS (для windows), там же можно скачать и VLC.

Программа встретила меня уже с введённым логином (пароль пока не нужен). Зашли (прочитали подсказку), идём в меню Система.

Нажимаем иконку устройства. В открывшемся окне давим иконку добавить область (вводим название), а затем жмём иконку добавить устройство. В открывшемся окне давим кнопку IP поиск или вводим IP адрес – жмём ОК. В графе устройство открываем САМ01.

Тыкаем правой кнопкой мыши по картинке и выбираем конфигурации устройства. Жмем шестерёнку ну а дальше всё интеллектуально понятно.

В меню (система – сеть) можем поменять IP адрес камеры.

 

В меню (инструменты- пользователи) можем изменить пароль доступа (по умолчанию его нет).

 

Ну всё камеру настроили пароль ввели (защитили наш поток чтоб не лазили любопытные).

Начнём настройку ПО для камеры на сервере Raspberry PI 4.

Подключаемся через терминальную программу к серверу. И заходим в файл motion.conf в режиме редактирования:

      cd /etc/motion

      sudo vi motion.conf

В файле изменяем следующие строки:

      webcontrol_localhost off

      stream_localhost off

      camera /etc/motion/camera2.conf

Сохраняем правленый файл :wq

 

 

Создадим в папке motion конфигурационный файл второй камеры camera2.conf:

      sudo vi camera2.conf

Пишем в файл следующее:

 netcam_url rtsp://192.168.1.10:554/user=admin&password=пароль&channel=1&stream=0.sdp?real_stream

 width 640

 height 480

 framerate 15

 text_left CAMERA 2\nLiving room

 target_dir /mnt/usbdrive/camera_ip/camera_2

# число пикселей, которые должны измениться для срабатывания детектора движения

 threshold 2000

# игнорировать резкие изменения интенсивности света в %

 lightswitch_percent 60

# количество кадров, в которых должно быть замечено движение, чтобы сработал детектор

 minimum_motion_frames 5

# количество секунд, по прошествии которых без движения отключать действие детектора

 event_gap 10

# отрисовка рамки вокруг движущегося объекта

# locate_motion_mode on

# стиль окна. Возможны значения box, redbox, cross, redcross

 locate_motion_style redbox

# текст, отображающий измененные пиксели при движении

# text_changes on

Сохраняем правленый файл :wq

 

То что выделено зелёным заменяем своими значениями (теми что установили в программе CMS).

 

Если на сервере включен брандмауэр, то откроем порт 554 для камеры.

sudo ufw allow proto tcp from 192.168.1.10 to any port 554

Необходимо создать в папке camera_ip в корне жёсткого диска, папку camera_2.