![]() How to make a DIY home alarm system with a raspberry pi and a webcamConvert a simple webcam to a fancy digital peephole viewer with motion detection featuresTraditional wireless CCTV cameras are cheap but anyone with a wireless receiver can view your signal. On the other hand, IP cameras are secure but they can be quite expensive and usually the video quality is poor — unless you go for a really expensive model. Lately I wanted to install a home surveillance system so I chose to use a cheap Logitech webcam with Raspberry Pi and motion, an excellent linux program that monitors video signal for changes and triggers events. Here’s what you can achieve with a similar setup:
Ok, so here’s how you do it: Necessary hardware:
Step #1: Make your webcam stealth I wanted to hide the camera in an inconspicuous place outside my door, so I removed the webcam’s casing. The Logitech C270 is a really good choice for this project as (1) it is 100% compatible with pi, (2) it has a really good 720p HD resolution and (3) it is very very small. Here’s how to make the camera ‘stealthy’: ![]() ![]() ![]() ![]() ![]() You can now connect your webcam to the usb hub. You have to use an external usb hub with an independent power supply as the raspberry pi cannot power the webcam by itself. ![]() I ended up hiding the webcam within the door (!), inside the space reserved for an extra key mechanism. The webcam’s lens is taped exactly at the key slot so you cannot see it if you are outside. ![]() (just to clarify: as you can see my door is crap! In the case of a burglary it will fall with the lightest blow. I’m better off replacing the actual lock with a smart security device) Step #2: Setup your raspberry pi Your pi needs to boot a linux operating system in order to run motion. The most popular choice is Raspbian, a debian-based OS that is optimized for pi’s hardware. To prepare your SD card and install Raspbian I recommend following Adafruit’s excellent tutorials here. Since you are not going to have your pi connected to a monitor or have a keyboard and mouse, I also recommend enabling Secure Shell (SSH) in your pi so that you can remote control your Raspberry Pi over your local network. Finally, it is a good thing to force a static IP address so that you can easily find the webcam server even if pi restarts. To do this, first type from the command prompt: ifconfig This reveals your router information. If you have an ethernet connection check out the eth0 bit. If you have a wireless connection check out the wlan0bit. Make a note of the following info: inet addr – 192.168.1.5 (pi’s IP Address) Bcast – 192.168.1.255 (broadcast IP range) Mask – 255.255.255.0 (subnet mask) then run: route -n and note the following: Gateway Address – 192.168.1.1 then run the following command to edit the network configuration: sudo nano /etc/network/interfaces and change the following entry from: iface wlan0 inet dhcp to: iface wlan0 inet static Press CTRL and X together to save and exit nano editor. If you reboot your pi now you should have a static address. Step #3: Setup motion First you need to use rpi-update to add to your raspbian image the initially-missing UVC support: sudo apt-get install rpi-update Next you need to upgrade your packages: sudo apt-get update Then you can install motion: sudo apt-get install motion Now if you run lsusb you should see your camera listed as a usb device, like so: Bus 001 Device 006: ID 046d:0825 Logitech, Inc. Webcam C270 (If not then perhaps your webcam is not compatible with pi) Next we proceed to configure motion: sudo nano /etc/motion/motion.conf This is a configuration file where you get to define parameters such as the port which motion will run on, or actions that will be triggered when movement is detected. Here’s a list of the parameters you most likely would want to configure:
You also need to edit the following file if you want to run motion as a daemon service: sudo nano /etc/default/motion and set start_motion_daemon to YES: start_motion_daemon=yes Then start motion by typing: sudo service motion start Wait for about 30 seconds for motion to start and then open the video stream from VLC or a similar program that can show video streams. If you use VLC player go to File>Open Network and enter the IP address of your pi followed by the stream_port, for example: 192.168.1.5:8083 Step #4: Extra goodies You can setup motion to trigger all sorts of actions when it detects movement. For example, for extra security (in case someone breaks into your house and steals all your equipment): you can upload the images to a remote FTP server. To do that, edit the motion.conf file and add the following external command: On_picture_save wput –B ftp://username:password@yourftpserver %f You can also run a shell script and send a notification to another computer. I use growl to send a quick popup alert to my Mac each time motion is detected. Growl is a fantastic MacOS-only notification system but luckily there is an excellent python library that you can use to easily access the Growl Network Transport Protocol (or GNTP) and send growl notifications to a Mac. Here’s how to do that: First get ‘pip’, a tool which allows you to easily install python packages: apt-get install python-pip then install the GNTP Python Library by running: pip install gntp then enable incoming network connections in Growl preferences and set a password: ![]() and here’s a simple python script that I wrote that sends a notification: # use standard Python logging import gntp.notifier
# Send one message test the script by running it from pi’s SSH command line: python test.py You should see a growl notification in your Mac screen! To use this script with motion, add the following line to motion.conf: On_motion_detected python test.py Now, each time motion is detected the python script will run and you will see a growl notification in your Mac. ![]() You can do all sorts of things with motion. You can even receive an sms or have Twilio call you whenever the alarm is tripped off! Let me know what you did with motion in the comments! |
R&D Publishing > Raspberry Pi >