
This video surveillance system is based on this requirements:
- hardware
- a raspberry pi
- a network camera with MJPEG streaming
- software
- raspbian OS
- motion
- mutt
- msmtp
I will show you in this tutorial how to create your own video surveillance with these features :
- motion detection
- send alerts and images by email
- save locally pictures
- create a daily timelapse video
OS/Packages installation
First install the raspbian OS on your raspberry pi : procedure (download image)
Remove unnecessary X11 libs : apt-get remove –auto-remove –purge libx11-.*
Install required packages : apt-get install motion msmtp ca-certificates mutt
Configure msmtp/mutt to send email using Gmail with TLS
Create/edit the configuration file /etc/msmtprc
defaults tls on tls_starttls on tls_trust_file /etc/ssl/certs/ca-certificates.crt account default host smtp.gmail.com port 587 auth login user youremail@gmail.com password yourpassword from youremail@gmail.com logfile /var/log/msmtp.log
Create/edit the configuration file /etc/Muttrc (important : the file is Muttrc and not muttrc) :
set sendmail="/usr/bin/msmtp" set use_from=yes set realname="Camera" set from=youremail@gmail.com set envelope_from=yes
Test/try to send an email :
echo “Body message” | mutt -a /etc/hosts -s “Test email” — recipient@gmail.com
Create and set rights on the folder where the images/videos will be saved :
mkdir /home/pi/capture chmod 777 /home/pi/capture
Create the script that will send emails /home/pi/scripts/send_mail.sh :
#!/bin/sh
temp=`/opt/vc/bin/vcgencmd measure_temp`
echo “Internal $temp – Uptime : $( uptime )” | mutt -a “$2” -s “Motion detected : $1” — youremail@gmail.com
Create the script for the image/video retention /home/pi/scripts/motion_ret.sh :
#!/bin/sh
find /home/pi/capture -type f -mtime 7 -exec rm {} \;
Configure motion
Edit the file /etc/default/motion
# set to 'yes' to enable the motion daemon start_motion_daemon=yes
Edit the file /etc/motion/motion.conf (backup the original first):
daemon on
setup_mode off
norm 0
frequency 0
rotate 0
width 1280
height 720
framerate 25
netcam_url http://10.1.2.3/
auto_brightness off
brightness 0
contrast 0
saturation 0
hue 0
roundrobin_frames 1
roundrobin_skip 1
switchfilter off
threshold 4500
threshold_tune off
noise_level 32
noise_tune on
despeckle EedDl
smart_mask_speed 5
lightswitch 8
minimum_motion_frames 2
pre_capture 1
post_capture 1
gap 60
max_mpeg_time 60
output_all off
output_normal best
output_motion off
quality 100
ppm off
ffmpeg_cap_new on
ffmpeg_cap_motion off
ffmpeg_timelapse 1
ffmpeg_timelapse_mode daily
ffmpeg_bps 1000000
ffmpeg_variable_bitrate 0
ffmpeg_video_codec mpeg4
ffmpeg_deinterlace off
snapshot_interval 0
locate preview
text_right %Y-%m-%d\n%T-%q
text_changes off
text_event %Y%m%d%H%M%S
text_double off
target_dir /home/pi/capture
snapshot_filename %v-%Y%m%d%H%M%S-snapshot
jpeg_filename %v-%Y%m%d%H%M%S-%q
movie_filename %v-%Y%m%d%H%M%S
timelapse_filename %Y%m%d-timelapse
webcam_port 0
webcam_quality 50
webcam_motion off
webcam_maxrate 1
webcam_localhost on
webcam_limit 0
control_port 0
control_localhost off
control_html_output on
track_type 0
track_auto off
track_motorx -1
track_motory -1
track_maxx 0
track_maxy 0
track_iomojo_id 0
track_step_angle_x 10
track_step_angle_y 10
track_move_wait 10
track_speed 255
track_stepsize 40
quiet on
on_picture_save /home/pi/scripts/send_mail.sh "%Y-%m-%d %T" "%f"
sql_log_image off
sql_log_snapshot off
sql_log_mpeg off
sql_log_timelapse off
sql_query insert into security(camera, filename, frame, file_type, time_stamp, event_time_stamp) values('%t', '%f', '%q', '%n', '%Y-%m-%d %T', '%C')
Configure cron
Create the script that will monitor/start/stop the motion process /home/pi/scripts/motion_mon.sh :
#!/bin/sh
ProcessInstances=`sudo ps aux | grep /usr/bin/'[m]'otion | wc -l`
if [ $ProcessInstances -eq 0 ];
then
echo Process not running! Starting process
sudo /etc/init.d/motion start
else
echo Process already running! Nothing to do.
fi
Configure the cron jobs :
> crontab -e */5 * * * * /home/pi/scripts/motion_mon.sh 2>&1 0 12 * * * /home/pi/scripts/motion_ret.sh 2>&1
Just wait the process launch and that’s all… If some steps are missing do not hesitate to leave a comment and I will update the proc.
References
My Powershell script categories
- Active Directory
- Cluster
- Database
- Exchange
- Files and folders
- Hardware
- Network
- Operating System
- PKI
- SCCM
- Service and process
- Tips
- VMWare
