Motion detection and notification

In order to add to RaSp485berry motion detection inside your flat (when you are outside of your home e.g. you went out to work or on a holiday trip) and ensure the immediade notification about motion detected including pictures of moving object directly to your mobile phone it is enough to buy low cost (but linux compatibile) USB webcam, then install and configure motion software. After that you need only to add a script that will be used to send notofication via e-mail including captured photos. First task to ensure sending e-mail notification is to install application for sending e-mails from command line. If it is done and checked we need to just plug USB webcam to USB port. To ensure webcam is recognized correctly you can create a list of all connected USB devices using:

lsusb

If the device is found also device file should be automatically created. It can be checked by:

ls /dev/vid*

The result will be similar to

/dev/video0

This result (name of existing video device) have to be used to set correct data in motion configuration file. To check if USB webcam is really working correctly it is recomended to install guvcview

sudo apt-get install guvcview

This GUI based application (you need to run graphical environment first)

startx

will help you to check real possiblities of connected USB webcam. You need to collect information about max picture resolution and framerate with the camera is still working well (correct picture is given).

Then you are ready to install motion application:

sudo apt-get install motion

When the application is installed you need to enter the proper information into your motion config file:

nano /etc/motion/motion.conf

The most important variables are (depended of used webcam):

videodevice /dev/video0
width 352
height 288

Other settings checked and recommended for this sollution:

framerate 5 
minimum_motion_frames 3
gap 5
output_normal on
locate on
target_dir /home/pi/motion/
snapshot_filename %Y.%m.%d-%H.%M.%S-snapshot
jpeg_filename %Y.%m.%d-%H.%M.%S-%q
movie_filename %Y.%m.%d-%H.%M.%S
webcam_port 8000
webcam_localhost off
control_port 8001
control_localhost off
control_html_output on

Now you can check if everything work fine using instruction

motion

As a result you need to got something like this:

[0] Processing thread 0 - config file /etc/motion/motion.conf
[0] Motion 3.2.12 Started
[0] ffmpeg LIBAVCODEC_BUILD 3482368 LIBAVFORMAT_BUILD 3478785
[0] Thread 1 is from /etc/motion/motion.conf
[0] motion-httpd/3.2.12 running, accepting connections
[1] Thread 1 started
[0] motion-httpd: waiting for data on port TCP 8001
[1] cap.driver: "uvcvideo"
[1] cap.card: "USB2.0 Camera"
[1] cap.bus_info: "usb-bcm2708_usb-1.3.1.3"
[1] cap.capabilities=0x04000001
[1] - VIDEO_CAPTURE
[1] - STREAMING
[1] Config palette index 8 (YU12) doesn't work.
[1] Supported palettes:
[1] 0: YUYV (YUV 4:2:2 (YUYV))
[1] Selected palette YUYV
[1] Test palette YUYV (352x288)
[1] Using palette YUYV (352x288) bytesperlines 704 sizeimage 202752 colorspace 00000008
[1] found control 0x00980900, "Brightness", range -127,127
[1] "Brightness", default -8193, current 0
[1] found control 0x00980901, "Contrast", range 0,127
[1] "Contrast", default 57343, current 64
[1] found control 0x00980902, "Saturation", range 0,255
[1] "Saturation", default 57343, current 64
[1] found control 0x00980903, "Hue", range -16000,16000
[1] "Hue", default -8193, current 0
[1] found control 0x00980910, "Gamma", range 16,500
[1] "Gamma", default 57343, current 100
[1] mmap information:
[1] frames=4
[1] 0 length=202752
[1] 1 length=202752
[1] 2 length=202752
[1] 3 length=202752
[1] Using V4L2
[1] Resizing pre_capture buffer to 1 items
[1] Started stream webcam server in port 8000
[1] Resizing pre_capture buffer to 3 items

If you got something like this it means everything is working perfectly. Now if you will move and a camera is able to see it you will see on your screen messages like these below:

[1] File of type 1 saved to: /home/pi/motion//2013.04.26-10.33.20-00.jpg
[1] File of type 1 saved to: /home/pi/motion//2013.04.26-10.33.22-00.jpg
[1] File of type 1 saved to: /home/pi/motion//2013.04.26-10.33.28-00.jpg
[1] File of type 1 saved to: /home/pi/motion//2013.04.26-10.33.29-00.jpg
[1] File of type 1 saved to: /home/pi/motion//2013.04.26-10.33.32-00.jpg

To ensure mail notification after a motion was detected it is need to open config file again:

nano /etc/motion/motion.conf

and configure event after a motion is detected:

on_event_end echo "`date +%Y.%m.%d-%T`" >> /home/pi/motion/email.txt && /home/pi/scripts/motion_detected.sh >> /var/log/motion/`date +%Y.%m.%d`.log

Then you need to save updated motion.conf and create the script responsible for this event:

nano /home/pi/scripts/motion_detected.sh

including:

#!/bin/sh
mail_recipient="user@gmail.com"
picture_uploader="user@picasaweb.com"
lang="pl"
testing="on"

if [ ! -e /home/pi/motion/var/lock.lock ]
then
if [ -d /home/pi/motion/var ];
 then
if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - folder /home/pi/motion/var exists..."
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - folder /home/pi/motion/var istnieje..."
 fi
else
 mkdir /home/pi/motion/var
if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - folder /home/pi/motion/var has been created..."
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - utworzono folder /home/pi/motion/var..."
 fi
fi
echo "Locked @ `date +%Y.%m.%d-%T`" >> /home/pi/motion/var/lock.lock
if [ -f /home/pi/motion/email.txt ];
 then
if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - a motion has been detected..."
 espeak "A motion has been detected." 2>/dev/null
 echo "`date +%Y.%m.%d-%T` - attaching files: /home/pi/motion/*.jpg"
 espeak "Attaching pictures to email." 2>/dev/null
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - wykryto ruch..."
 espeak -v pl "Wykryto ruch." 2>/dev/null
 echo "`date +%Y.%m.%d-%T` - zalaczanie plikow: /home/pi/motion/*.jpg"
 if [ $testing = "on" ] ; then espeak -v pl "Załączanie obrazów do wiadomości." 2>/dev/null ; fi
 fi
#--Folder-exists-?-------------------------------------------
if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - presence of folder for logfile checking: /var/log/motion..."
 if [ $testing = "on" ] ; then espeak "Presence of folder for log checking." 2>/dev/null ; fi
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - sprawdzanie obecności folderu dla pliku dziennika: /var/log/motion..."
 if [ $testing = "on" ] ; then espeak -v pl "Sprawdzanie obecności folderu dla pliku dziennika." 2>/dev/null ; fi
 fi
if [ -d /var/log/motion ];
 then
if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - folder /var/log/motion exists..."
 if [ $testing = "on" ] ; then espeak "folder fogfile exists." 2>/dev/null ; fi
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - folder /var/log/motion istnieje..."
 if [ $testing = "on" ] ; then espeak -v pl "folder dla pliku dziennika istnieje." 2>/dev/null ; fi
 fi
else
 mkdir /var/log/motion
if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - folder /var/log/motion created...";
 if [ $testing = "on" ] ; then espeak "folder for logfile has been created." 2>/dev/null ; fi
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - folder dla pliku dziennika został utworzony...";
 if [ $testing = "on" ] ; then espeak -v pl "folder dla pliku dziennika został utworzony." 2>/dev/null ; fi
 fi
 fi
ls /home/pi/motion/*.jpg >> /var/log/motion/`date +%Y.%m.%d`.log
if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - mail sending..."
 if [ $testing = "on" ] ; then espeak "email sending." 2>/dev/null ; fi
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - wysylanie wiadomosci e-mail..."
 if [ $testing = "on" ] ; then espeak -v pl "Trwa wysyłanie wiadomości." 2>/dev/null ; fi
 fi
echo "`date +%Y.%m.%d`" | mutt -s "`date +%Y.%m.%d`" $mail_recipient $picture_uploader -a /home/pi/motion/*.jpg
if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - sending e-mail done..."
 if [ $testing = "on" ] ; then espeak "email sending is done." 2>/dev/null ; fi
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - wiadomosc zostala wyslana..."
 if [ $testing = "on" ] ; then espeak -v pl "Wiadomość została wysłana." 2>/dev/null ; fi
 fi
#--Folder-exists-?-------------------------------------------
if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - checking current folder for photos: $(date +%F)..."
 if [ $testing = "on" ] ; then espeak "checking current folder for photos." 2>/dev/null ; fi
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - sprawdzanie dostepnosci folderu dla zdjec z dnia: $(date +%F)..."
 if [ $testing = "on" ] ; then espeak -v pl "Sprawdzanie dostępności folderu dla zdjęć z dnia: $(date +%F)." 2>/dev/null ; fi
 fi
if [ -d /home/pi/motion/$(date +%F) ];
 then
if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - folder $(date +%F) exists..."
 if [ $testing = "on" ] ; then espeak "folder $(date +%F) exists." 2>/dev/null ; fi
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - folder $(date +%F) istnieje..."
 if [ $testing = "on" ] ; then espeak -v pl "Folder $(date +%F) istnieje." 2>/dev/null ; fi
 fi
else
 mkdir /home/pi/motion/$(date +%F);
if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - folder $(date +%F) created...";
 if [ $testing = "on" ] ; then espeak "folder $(date +%F) has been created." 2>/dev/null ; fi
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - utworzono folder $(date +%F)...";
 if [ $testing = "on" ] ; then espeak -v pl "Utworzono folder $(date +%F)." 2>/dev/null ; fi
 fi
fi
#--Moving-files-----------------------------------------------
if [ -f /home/pi/motion/email.txt ];
 then
 mv /home/pi/motion/*.* /home/pi/motion/$(date +%F)/

 if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - files were moved to folder $(date +%F)..."
 if [ $testing = "on" ] ; then espeak "files were moved to folder $(date +%F)." 2>/dev/null ; fi
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - pliki zostaly przeniesione do folderu $(date +%F)..."
 if [ $testing = "on" ] ; then espeak -v pl "Pliki zostały przeniesione do folderu $(date +%F)." 2>/dev/null ; fi
 fi
else
if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - no files to move..."
 if [ $testing = "on" ] ; then espeak "no files to move.." 2>/dev/null ; fi
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - brak plikow do przeniesienia..."
 if [ $testing = "on" ] ; then espeak -v pl "Brak plików do przeniesienia." 2>/dev/null ; fi
 fi
 fi
else
if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - no files to send...";
 if [ $testing = "on" ] ; then espeak "no files to send." 2>/dev/null ; fi
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - brak plikow do wyslania..."
 if [ $testing = "on" ] ; then espeak -v pl "Brak plików do wysłania." 2>/dev/null ; fi
 fi
fi

 if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - searching outdated files...";
 if [ $testing = "on" ] ; then espeak " searching outdated files." 2>/dev/null ; fi
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - szukanie starych plikow..."
 if [ $testing = "on" ] ; then espeak -v pl "Szukanie starych plików." 2>/dev/null ; fi
 fi
find /home/pi/motion/* -mtime 1 -type d -exec echo {} \;
 find /home/pi/motion/* -mtime 1 -type d -exec rm -rf {} \;
if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - all old files deleted...";
 if [ $testing = "on" ] ; then espeak "all old files deleted." 2>/dev/null ; fi
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - wszystkie stare pliki zostaly usuniete..."
 if [ $testing = "on" ] ; then espeak -v pl "wszystkie stare pliki zostały usunięte." 2>/dev/null ; fi
 fi

 if [ $lang = "en" ]
 then
 echo "`date +%Y.%m.%d-%T` - waiting for an event..."
 if [ $testing = "on" ] ; then espeak "waiting for an event." 2>/dev/null ; fi
 fi
 if [ $lang = "pl" ]
 then
 echo "`date +%Y.%m.%d-%T` - oczekiwanie na zdarzenie..."
 if [ $testing = "on" ] ; then espeak -v pl "Oczekiwanie na zdarzenie." 2>/dev/null ; fi
 fi
sleep 15
 mv /home/pi/motion/var/*.* /home/pi/motion/$(date +%F)/
fi

Then it is need to add run priviliges for it:

chmod 775 /home/pi/scripts/motion_detected.sh

At first the pictures grabbed during event are stored directly to /home/pi/motion. Then they are attached to the e-mail. When e-mail sending is done the files are moved into subfolder named according to current date.

To make sure the script is working properly just run it:

/home/pi/scripts/motion_detected.sh

If everything is OK you should be able to see something like this:

2013.04.26-11:24:56 - no files to send...
2013.04.26-11:24:56 - waiting for event...

It’s perfect time to make some movement in front of your webcam, and wait a few second for incoming mail including pictures of moving object. For example It’s my cat that has been detected and was sent to my by my Raspberry Pi when I was at work.

notification
If all works fine – congratulation! You just created your fully functional video security system. Otherwise you can try to find the problem viewing to log file located in:

/var/log/motion/

for example:

nano /var/log/motion/2013.04.26.log

Good luck!

At the end you need to take care about to run the motion in a deamon mode on startup. To do it you need to check if directory for motion pid exists:

/var/run/motion/

(if not you need to create it):

mkdir /var/run/motion

The /var/run/motion owner and group have to be set to motion. If it is not in this way you need to change it:

chown motion:motion /var/run/motion

The second step is to edit the motion config file again:

nano /etc/motion/motion.conf

and set the deamon option to on:

daemon on

Then it is need to enable the deamon mode:

nano /etc/default/motion

It is need to set the start_motion_daemon parameter to yes:

start_motion_daemon=yes

If the three steps are done you can tray to run the motion now.

motion

as a result you need to get something like this:

[0] Processing thread 0 - config file /etc/motion/motion.conf
[0] Motion 3.2.12 Started
[0] Motion going to daemon mode

Now you are ready to perform in real test. If the morion was automatically started after:

reboot

you can check it using

pgrep motion

If you didn’t get the process ID it means motion havn’t been started (something is wrong and you have check it all again).

But I hope you have got something like these:

root@raspberrypi:/home/pi# pgrep -n motion
18391

It means motion application after startup is working correctly.

Congratulation!

At the end recommended /etc/motion/motion.conf:

daemon on
process_id_file /var/run/motion/motion.pid
setup_mode off
videodevice /dev/video0
v4l2_palette 8
input 8
norm 0
width 640
#width 352
height 480
#height 288
framerate 5
auto_brightness off
brightness 0
contrast 0
saturation 0
hue 0
threshold 1500
threshold_tune off
noise_level 100
noise_tune off
despeckle EedDl
lightswitch 0
minimum_motion_frames 2
pre_capture 0
post_capture 0
gap 5
max_mpeg_time 0
output_all off
output_normal on
output_motion off
quality 75
ppm off

ffmpeg_cap_new on
ffmpeg_cap_motion off
ffmpeg_timelapse 0
ffmpeg_timelapse_mode daily
ffmpeg_bps 500000
ffmpeg_variable_bitrate 0
ffmpeg_video_codec swf
ffmpeg_deinterlace off
snapshot_interval 0
locate on
text_right %Y-%m-%d\n%T-%q
text_event %Y%m%d%H%M%S
text_double on
target_dir /home/pi/motion
snapshot_filename %Y.%m.%d-%H.%M.%S-snapshot
jpeg_filename %Y.%m.%d-%H.%M.%S-%q
movie_filename %Y.%m.%d-%H.%M.%S
timelapse_filename %Y%m%d-timelapse
webcam_port 8000
webcam_quality 50
webcam_motion off
webcam_maxrate 1
webcam_localhost off
webcam_limit 0
control_port 8001
control_localhost off
control_html_output on
; control_authentication username:password
quiet on
on_event_start echo "`date +%Y.%m.%d-%T`" >> /home/pi/motion/email.txt && /home/pi/scripts/motion_detected.sh >> /var/log/motion/`date +%Y.%m.%d`.log
; on_event_end echo "`date +%Y.%m.%d-%T`" >> /home/pi/motion/email.txt && /home/pi/scripts/motion_detected.sh >> /var/log/motion/`date +%Y.%m.%d`.log
; on_picture_save value
; on_motion_detected value
; on_area_detected value
; on_movie_start value
; on_movie_end value
; on_camera_lost value

Example installation log for guvcview:

root@raspberrypi:/home/pi# sudo apt-get install guvcview
Czytanie list pakietów... Gotowe
Budowanie drzewa zależności
Odczyt informacji o stanie... Gotowe
Następujące pakiety zostały zainstalowane automatycznie i nie są już więcej wyma gane:
 libblas3gf liblapack3gf
Aby je usunąć należy użyć "apt-get autoremove".
Zostaną zainstalowane następujące dodatkowe pakiety:
 libavcodec53 libavutil51 libdirac-encoder0 libgsm1 libjack-jackd2-0
 libmp3lame0 libportaudio2 libschroedinger-1.0-0 libspeex1 libtheora0
 libv4l-0 libv4lconvert0 libva1 libvpx1 libwebcam0 libx264-123 libxvidcore4
 uvcdynctrl uvcdynctrl-data
Sugerowane pakiety:
 jackd2 speex
Zostaną zainstalowane następujące NOWE pakiety:
 guvcview libavcodec53 libavutil51 libdirac-encoder0 libgsm1 libjack-jackd2-0
 libmp3lame0 libportaudio2 libschroedinger-1.0-0 libspeex1 libtheora0
 libv4l-0 libv4lconvert0 libva1 libvpx1 libwebcam0 libx264-123 libxvidcore4
 uvcdynctrl uvcdynctrl-data
0 aktualizowanych, 20 nowo instalowanych, 0 usuwanych i 1 nieaktualizowanych.
Konieczne pobranie 5571 kB archiwów.
Po tej operacji zostanie dodatkowo użyte 13,5 MB miejsca na dysku.
Kontynuować [T/n]?
Pobieranie:1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libavutil5 1 armhf 6:0.8.6-1+rpi1 [91,1 kB]
Pobieranie:2 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libdirac-e ncoder0 armhf 1.0.2-6 [350 kB]
Pobieranie:3 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libgsm1 ar mhf 1.0.13-4 [30,9 kB]
Pobieranie:4 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libmp3lame 0 armhf 3.99.5+repack1-3 [384 kB]
Pobieranie:5 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libschroedinger-1.0-0 armhf 1.0.11-2 [299 kB]
Pobieranie:6 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libspeex1 armhf 1.2~rc1-7 [61,7 kB]
Pobieranie:7 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libtheora0 armhf 1.1.1+dfsg.1-3.1 [368 kB]
Pobieranie:8 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libva1 armhf 1.0.15-4 [35,8 kB]
Pobieranie:9 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libvpx1 armhf 1.1.0-1+rpi1 [201 kB]
Pobieranie:10 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libx264-123 armhf 2:0.123.2189+git35cf912-1+rpi 1 [456 kB]
Pobieranie:11 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libxvidcore4 armhf 2:1.3.2-9 [311 kB]
Pobieranie:12 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libavcodec53 armhf 6:0.8.6-1+rpi1 [2288 kB]
Pobieranie:13 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libjack-jackd2-0 armhf 1.9.8~dfsg.4+20120529git007cdc37-5 [190 kB]
Pobieranie:14 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libportaudio2 armhf 19+svn20111121-1 [69,0 kB]
Pobieranie:15 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libv4lconvert0 armhf 0.8.8-3 [92,7 kB]
Pobieranie:16 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libv4l-0 armhf 0.8.8-3 [54,9 kB]
Pobieranie:17 http://mirrordirector.raspbian.org/raspbian/ wheezy/main guvcview armhf 1.5.3-1 [242 kB]
Pobieranie:18 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libwebcam0 armhf 0.2.2-1 [23,6 kB]
Pobieranie:19 http://mirrordirector.raspbian.org/raspbian/ wheezy/main uvcdynctrl-data all 0.2.2-1 [5796 B]
Pobieranie:20 http://mirrordirector.raspbian.org/raspbian/ wheezy/main uvcdynctrl armhf 0.2.2-1 [17,5 kB]
Pobrano 5571 kB w 2min 9s (43,0 kB/s)
Wybieranie wcześniej niewybranego pakietu libavutil51:armhf.
(Odczytywanie bazy danych ... 59708 plików i katalogów obecnie zainstalowanych.)
Rozpakowywanie pakietu libavutil51:armhf (z .../libavutil51_6%3a0.8.6-1+rpi1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libdirac-encoder0:armhf.
Rozpakowywanie pakietu libdirac-encoder0:armhf (z .../libdirac-encoder0_1.0.2-6_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libgsm1:armhf.
Rozpakowywanie pakietu libgsm1:armhf (z .../libgsm1_1.0.13-4_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libmp3lame0:armhf.
Rozpakowywanie pakietu libmp3lame0:armhf (z .../libmp3lame0_3.99.5+repack1-3_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libschroedinger-1.0-0:armhf.
Rozpakowywanie pakietu libschroedinger-1.0-0:armhf (z .../libschroedinger-1.0-0_1.0.11-2_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libspeex1:armhf.
Rozpakowywanie pakietu libspeex1:armhf (z .../libspeex1_1.2~rc1-7_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libtheora0:armhf.
Rozpakowywanie pakietu libtheora0:armhf (z .../libtheora0_1.1.1+dfsg.1-3.1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libva1:armhf.
Rozpakowywanie pakietu libva1:armhf (z .../libva1_1.0.15-4_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libvpx1:armhf.
Rozpakowywanie pakietu libvpx1:armhf (z .../libvpx1_1.1.0-1+rpi1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libx264-123:armhf.
Rozpakowywanie pakietu libx264-123:armhf (z .../libx264-123_2%3a0.123.2189+git35cf912-1+rpi1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libxvidcore4:armhf.
Rozpakowywanie pakietu libxvidcore4:armhf (z .../libxvidcore4_2%3a1.3.2-9_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libavcodec53:armhf.
Rozpakowywanie pakietu libavcodec53:armhf (z .../libavcodec53_6%3a0.8.6-1+rpi1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libjack-jackd2-0:armhf.
Rozpakowywanie pakietu libjack-jackd2-0:armhf (z .../libjack-jackd2-0_1.9.8~dfsg.4+20120529git007cdc37-5_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libportaudio2:armhf.
Rozpakowywanie pakietu libportaudio2:armhf (z .../libportaudio2_19+svn20111121-1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libv4lconvert0:armhf.
Rozpakowywanie pakietu libv4lconvert0:armhf (z .../libv4lconvert0_0.8.8-3_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libv4l-0:armhf.
Rozpakowywanie pakietu libv4l-0:armhf (z .../libv4l-0_0.8.8-3_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu guvcview.
Rozpakowywanie pakietu guvcview (z .../guvcview_1.5.3-1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libwebcam0.
Rozpakowywanie pakietu libwebcam0 (z .../libwebcam0_0.2.2-1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu uvcdynctrl-data.
Rozpakowywanie pakietu uvcdynctrl-data (z .../uvcdynctrl-data_0.2.2-1_all.deb) ...
Wybieranie wcześniej niewybranego pakietu uvcdynctrl.
Rozpakowywanie pakietu uvcdynctrl (z .../uvcdynctrl_0.2.2-1_armhf.deb) ...
Przetwarzanie wyzwalaczy pakietu desktop-file-utils...
Przetwarzanie wyzwalaczy pakietu man-db...
Przetwarzanie wyzwalaczy pakietu menu...
Konfigurowanie pakietu libavutil51:armhf (6:0.8.6-1+rpi1) ...
Konfigurowanie pakietu libdirac-encoder0:armhf (1.0.2-6) ...
Konfigurowanie pakietu libgsm1:armhf (1.0.13-4) ...
Konfigurowanie pakietu libmp3lame0:armhf (3.99.5+repack1-3) ...
Konfigurowanie pakietu libschroedinger-1.0-0:armhf (1.0.11-2) ...
Konfigurowanie pakietu libspeex1:armhf (1.2~rc1-7) ...
Konfigurowanie pakietu libtheora0:armhf (1.1.1+dfsg.1-3.1) ...
Konfigurowanie pakietu libva1:armhf (1.0.15-4) ...
Konfigurowanie pakietu libvpx1:armhf (1.1.0-1+rpi1) ...
Konfigurowanie pakietu libx264-123:armhf (2:0.123.2189+git35cf912-1+rpi1) ...
Konfigurowanie pakietu libxvidcore4:armhf (2:1.3.2-9) ...
Konfigurowanie pakietu libavcodec53:armhf (6:0.8.6-1+rpi1) ...
Konfigurowanie pakietu libjack-jackd2-0:armhf (1.9.8~dfsg.4+20120529git007cdc37-5) ...
Konfigurowanie pakietu libportaudio2:armhf (19+svn20111121-1) ...
Konfigurowanie pakietu libv4lconvert0:armhf (0.8.8-3) ...
Konfigurowanie pakietu libv4l-0:armhf (0.8.8-3) ...
Konfigurowanie pakietu guvcview (1.5.3-1) ...
Konfigurowanie pakietu libwebcam0 (0.2.2-1) ...
Konfigurowanie pakietu uvcdynctrl-data (0.2.2-1) ...
Konfigurowanie pakietu uvcdynctrl (0.2.2-1) ...
Przetwarzanie wyzwalaczy pakietu menu...

Example installation log for motion:

root@raspberrypi:/home/pi# sudo apt-get install motion
Czytanie list pakietów... Gotowe
Budowanie drzewa zależności
Odczyt informacji o stanie... Gotowe
Następujące pakiety zostały zainstalowane automatycznie i nie są już więcej wymagane:
 libblas3gf liblapack3gf
Aby je usunąć należy użyć "apt-get autoremove".
Zostaną zainstalowane następujące dodatkowe pakiety:
 ffmpeg libav-tools libavdevice53 libavfilter2 libavformat53 libdc1394-22 libmysqlclient18 libopencv-core2.3
 libopencv-imgproc2.3 libpostproc52 libpq5 libraw1394-11 libswscale2 mysql-common
Sugerowane pakiety:
 libraw1394-doc mysql-client postgresql-client
Zostaną zainstalowane następujące NOWE pakiety:
 ffmpeg libav-tools libavdevice53 libavfilter2 libavformat53 libdc1394-22 libmysqlclient18 libopencv-core2.3
 libopencv-imgproc2.3 libpostproc52 libpq5 libraw1394-11 libswscale2 motion mysql-common
0 aktualizowanych, 15 nowo instalowanych, 0 usuwanych i 1 nieaktualizowanych.
Konieczne pobranie 4254 kB archiwów.
Po tej operacji zostanie dodatkowo użyte 12,3 MB miejsca na dysku.
Kontynuować [T/n]?
Pobieranie:1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libavformat53 armhf 6:0.8.6-1+rpi1 [402 kB]
Pobieranie:2 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libraw1394-11 armhf 2.0.9-1 [45,0 kB]
Pobieranie:3 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libdc1394-22 armhf 2.2.0-2 [116 kB]
Pobieranie:4 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libavdevice53 armhf 6:0.8.6-1+rpi1 [67,0 kB]
Pobieranie:5 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libopencv-core2.3 armhf 2.3.1-11 [707 kB]
Pobieranie:6 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libopencv-imgproc2.3 armhf 2.3.1-11 [672 kB]
Pobieranie:7 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libswscale2 armhf 6:0.8.6-1+rpi1 [97,3 kB]
Pobieranie:8 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libavfilter2 armhf 6:0.8.6-1+rpi1 [104 kB]
Pobieranie:9 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libpostproc52 armhf 6:0.8.6-1+rpi1 [65,2 kB]
Pobieranie:10 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libav-tools armhf 6:0.8.6-1+rpi1 [357 kB]
Pobieranie:11 http://mirrordirector.raspbian.org/raspbian/ wheezy/main mysql-common all 5.5.31+dfsg-0+wheezy1 [85,3 kB]
Pobieranie:12 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libmysqlclient18 armhf 5.5.31+dfsg-0+wheezy1 [628 kB]
Pobieranie:13 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libpq5 armhf 9.1.9-1 [512 kB]
Pobieranie:14 http://mirrordirector.raspbian.org/raspbian/ wheezy/main motion armhf 3.2.12-3.4 [259 kB]
Pobieranie:15 http://mirrordirector.raspbian.org/raspbian/ wheezy/main ffmpeg armhf 6:0.8.6-1+rpi1 [138 kB]
Pobrano 4254 kB w 60s (70,6 kB/s)
Prekonfiguracja pakietów ...
Wybieranie wcześniej niewybranego pakietu libavformat53:armhf.
(Odczytywanie bazy danych ... 59906 plików i katalogów obecnie zainstalowanych.)
Rozpakowywanie pakietu libavformat53:armhf (z .../libavformat53_6%3a0.8.6-1+rpi1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libraw1394-11:armhf.
Rozpakowywanie pakietu libraw1394-11:armhf (z .../libraw1394-11_2.0.9-1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libdc1394-22:armhf.
Rozpakowywanie pakietu libdc1394-22:armhf (z .../libdc1394-22_2.2.0-2_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libavdevice53:armhf.
Rozpakowywanie pakietu libavdevice53:armhf (z .../libavdevice53_6%3a0.8.6-1+rpi1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libopencv-core2.3.
Rozpakowywanie pakietu libopencv-core2.3 (z .../libopencv-core2.3_2.3.1-11_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libopencv-imgproc2.3.
Rozpakowywanie pakietu libopencv-imgproc2.3 (z .../libopencv-imgproc2.3_2.3.1-11_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libswscale2:armhf.
Rozpakowywanie pakietu libswscale2:armhf (z .../libswscale2_6%3a0.8.6-1+rpi1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libavfilter2:armhf.
Rozpakowywanie pakietu libavfilter2:armhf (z .../libavfilter2_6%3a0.8.6-1+rpi1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libpostproc52:armhf.
Rozpakowywanie pakietu libpostproc52:armhf (z .../libpostproc52_6%3a0.8.6-1+rpi1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libav-tools.
Rozpakowywanie pakietu libav-tools (z .../libav-tools_6%3a0.8.6-1+rpi1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu mysql-common.
Rozpakowywanie pakietu mysql-common (z .../mysql-common_5.5.31+dfsg-0+wheezy1_all.deb) ...
Wybieranie wcześniej niewybranego pakietu libmysqlclient18:armhf.
Rozpakowywanie pakietu libmysqlclient18:armhf (z .../libmysqlclient18_5.5.31+dfsg-0+wheezy1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu libpq5.
Rozpakowywanie pakietu libpq5 (z .../libpq5_9.1.9-1_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu motion.
Rozpakowywanie pakietu motion (z .../motion_3.2.12-3.4_armhf.deb) ...
Wybieranie wcześniej niewybranego pakietu ffmpeg.
Rozpakowywanie pakietu ffmpeg (z .../ffmpeg_6%3a0.8.6-1+rpi1_armhf.deb) ...
Przetwarzanie wyzwalaczy pakietu man-db...
Konfigurowanie pakietu libavformat53:armhf (6:0.8.6-1+rpi1) ...
Konfigurowanie pakietu libraw1394-11:armhf (2.0.9-1) ...
Creating device node /dev/raw1394... /run/udev or .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
done.
Konfigurowanie pakietu libdc1394-22:armhf (2.2.0-2) ...
Konfigurowanie pakietu libavdevice53:armhf (6:0.8.6-1+rpi1) ...
Konfigurowanie pakietu libopencv-core2.3 (2.3.1-11) ...
Konfigurowanie pakietu libopencv-imgproc2.3 (2.3.1-11) ...
Konfigurowanie pakietu libswscale2:armhf (6:0.8.6-1+rpi1) ...
Konfigurowanie pakietu libavfilter2:armhf (6:0.8.6-1+rpi1) ...
Konfigurowanie pakietu libpostproc52:armhf (6:0.8.6-1+rpi1) ...
Konfigurowanie pakietu libav-tools (6:0.8.6-1+rpi1) ...
Konfigurowanie pakietu mysql-common (5.5.31+dfsg-0+wheezy1) ...
Konfigurowanie pakietu libmysqlclient18:armhf (5.5.31+dfsg-0+wheezy1) ...
Konfigurowanie pakietu libpq5 (9.1.9-1) ...
Konfigurowanie pakietu motion (3.2.12-3.4) ...
Dodawanie grupy "motion" (GID 111)...
Gotowe.
Dodawanie użytkownika systemowego "motion" (UID 109)...
Dodawanie nowego użytkownika "motion" (UID 109) w grupie "motion"...
Nie utworzono katalogu domowego "/home/motion".
Dodawanie użytkownika "motion" do grupy "video"...
Dodaję nowego użytkownika motion do grupy video
Gotowe.
[warn] Not starting motion daemon, disabled via /etc/default/motion ... (warning).
Konfigurowanie pakietu ffmpeg (6:0.8.6-1+rpi1) ...
root@raspberrypi:/home/pi#
Advertisements

4 Responses to Motion detection and notification

  1. Under the #–Moving-files– section do you mean to have
    construct? or am I missing something.

    • > Under the #–Moving-files– section do you mean to have
      > construct? or am I missing something.

      When motion is detected, images are stored directly under /home/pi/motion. Once notification has been done (e-mail was sent) all files (pictures mostly) are moving from this common /home/pi/motion into current date folder (for example: /home/pi/motion/2014-06-30.

      Why do you ask? Something unclear still?

  2. emoticon says:

    I’ve got your .conf file and i did everything like in this article, but photos are saved in ./ . What is wrong?

    • The targed dir for pictures taking during motion has been detected is defined inside config file for motion, in this example inside file /etc/motion/motion.conf should existing line: target_dir /home/pi/motion. It means pictures will be stored under /home/pi/motion.

      Please doublecheck.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: