Raspberry Pi Camera Setup - Motion detected movie creation (obsolete): Difference between revisions
Line 17: | Line 17: | ||
=== Make the [[Pi]] take pictures === | === Make the [[Pi]] take pictures === | ||
==== Make PiCam Device accessible ==== | |||
Since <tt>/usr/lib/cgi-bin/</tt> is the default CGI-directory... | Since <tt>/usr/lib/cgi-bin/</tt> is the default CGI-directory... | ||
* make sure, everyone can access the camera device<ref>including web users</ref>: | * make sure, everyone can access the camera device<ref>including web users</ref>: | ||
chmod o+rwx /dev/vchiq | chmod o+rwx /dev/vchiq | ||
==== Setup script for taking a picture ==== | |||
<del>* create a folder named <tt>webcam</tt>:</del> | <del>* create a folder named <tt>webcam</tt>:</del> | ||
<del>cd /usr/lib/cgi-gbin | <del>cd /usr/lib/cgi-gbin | ||
Line 89: | Line 91: | ||
mkdir webcam | mkdir webcam | ||
chown pi webcam | chown pi webcam | ||
* * * * * /home/pi/Development/motion_webcam/takePictures.sh > /dev/null 2>& | |||
==== Setup Script for taking a picture ==== | |||
* create this script named <tt>takePictures.sh</tt>: | |||
#!/bin/bash | |||
# | |||
for i in {0..4..1} | |||
do | |||
/home/pi/Development/motion_webcam/takePicture.sh | |||
sleep 15 | |||
done | |||
* Add this to <tt>pi</tt>'s crontab: | * Add this to <tt>pi</tt>'s crontab: | ||
# PiCam | # PiCam | ||
=== Check if it works === | === Check if it works === |
Revision as of 14:55, 16 August 2013
This article describes the setup of the Raspberry Pi Camera with motion to take pictures on [1]motion.
Setup
Get package list
apt-get update
Update all packages
apt-get upgrade
Enable the camera
raspi-config
Then answer the following stupid questions ("really enable?" and "reboot now?"), and you're done.
Configuration
Now we've set up drivers, we need to verknuspel[2] the Raspi Cam with motion. That is a bit tricky, since motion does not support the Raspi Cam. But it supports webcams. So we need to convert our Raspi Cam into a webcam.
Make the Pi take pictures
Make PiCam Device accessible
Since /usr/lib/cgi-bin/ is the default CGI-directory...
- make sure, everyone can access the camera device[3]:
chmod o+rwx /dev/vchiq
Setup script for taking a picture
* create a folder named webcam:
cd /usr/lib/cgi-gbin mkdir webcam chown pi webcam
* create this script named webcam.cgi:
#!/bin/bash echo "Content-type: image/jpeg" echo "" # # timeout should not be 0, since images will be to dark and are noisy #raspistill --nopreview -t 1 -w 1024 -h 768 -o - # # Since my cam is mounted wrong, I prefer to flip it :) raspistill --nopreview -t 1 -w 1024 -h 768 -o - | convert - -flip - # #raspistill -t 0 -w 1024 -h 768 -o - exit 0
* Make it executable
chmod +x webcam.cgi
This won't work very reliably, because this will occur:
stdout: mmal: mmal_vc_component_enable: failed to enable component: ENOSPC mmal: camera component couldn't be enabled mmal: main: Failed to create camera component mmal: Failed to run camera app. Please check for firmware updates
No solution yet, so I decided to don't let motion execute the cgi, but crond:
- create this script named takePicture.sh:
#!/bin/bash # # Globals # GFOLDERTARGET="/var/www/webcam" GFILELOCK="${GFOLDERTARGET}/takePicture.lck" GFILELOCKAGEMAX="60" # # # # Main # # Check locking if [ -f "${GFILELOCK}" ]; then LOCKFILEAGE="`stat --format=\"%Z\" \"${GFILELOCK}\"`" NOW="`date +'%s'`" AGE="`expr ${NOW} - ${LOCKFILEAGE}`" if [ "${AGE}" -gt "${GFILELOCKAGEMAX}" ]; then echo "Lockfile is ${AGE} seconds old, removing it." rm "${GFILELOCK}" else echo "Lockfile is ${AGE} seconds old, exiting." exit 1 fi fi # # # Lock echo $$ > "${GFILELOCK}" # # timeout should not be 0, since images will be to dark and are noisy # Since my cam is mounted wrong, I prefer to flip it :) (and flop it) raspistill --nopreview -w 1024 -h 768 -o - | convert - -flip -flop - > "${GFOLDERTARGET}/lastsnap.jpg" # # Unlock rm "${GFILELOCK}" # # Exit exit 0
- create a folder named webcam:
cd /var/www mkdir webcam chown pi webcam * * * * * /home/pi/Development/motion_webcam/takePictures.sh > /dev/null 2>&
Setup Script for taking a picture
- create this script named takePictures.sh:
#!/bin/bash # for i in {0..4..1} do /home/pi/Development/motion_webcam/takePicture.sh sleep 15 done
- Add this to pi's crontab:
# PiCam
Check if it works
* The snapshot: http://YOUR_PI_S_IPA/cgi-bin/webcam/webcam.cgi
- The snapshot: http://192.168.1.105/webcam/lastsnap.jpg (change to your Pi's IPA!)
- The motion archive: http://192.168.1.105/webcam-archive (change to your Pi's IPA!)
Get motion to check 'em
Install motion
apt-get install motion
Configure motion
Edit /etc/motion/motion.conf:
netcam_url http://127.0.0.1/cgi-bin/webcam/webcam.cginetcam_url http://127.0.0.1/webcam/lastsnap.jpg
and
target_dir /var/www/webcam-archive
- Links
- Footnotes:
- ↑ guess what! :)
- ↑ yes, I just coined the term. I hope it will make it! More about verknuspel!
- ↑ including web users