
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