MotionEyeOS 2015
Video surveillance is not nearly as effective and invasive as the all-seeing eye of Sauron, but some software comes quite close, discovers Mayank Sharma.
Turn your Raspberry Pi into a pro-level CCTV system, combining a host of cameras and this software. So just how big a brother does this package make you?
Outside of education, the Raspberry Pi is popularly used to power projects that require an energy-efficient, always-on device. One such use case is motion-detecting video surveillance systems and motionEyeOS is a nifty little distro that’s dedicated to the task. It’s designed specifically for single-board computers and works on both the original Pi and the refreshed edition, as well as Banana Pi, Cubietruck and Odroid C1.
We tested the latest version of MotionEyeOS on the Raspberry Pi 2, and our test surveillance system was made up of three cameras: the official Raspberry Pi camera, a cheap USB camera and a network camera powered by the IPWebcam app on an old Android smartphone. While, you can use dd to transfer the MotionEyeOS image onto a micro/SD card, we’d suggest using the install script created by the distro’s developer. Using this script you can pass the SSID and the password for your wireless network (and optionally a static IP address) before backing up the image onto the memory card. You can insert the prepared memory card on a headless Pi, and the distro will automatically start an SSH server, so you can remotely login if you need command-line access. However, you can virtually manage all aspects of the system from MotionEyeOS’s remote browser-based admin interface that runs on port 80.
The admin interface is divided into multiple sections. The default view displays simple options to control the attached devices. You can enable features, such as the ability to stream video, capture still images and record movies on detecting motion and define their preservation time. You can also define a working schedule for the camera, eg, you can ask it to be active and monitoring motion between the hours of 10.30pm and 6.00am on weekdays and at all hours on weekends.
Besides the controls, the interface displays streams from all the cameras. When a camera detects motion, its border turns red as it begins capturing images and video. The footage and images captured can be browsed, previewed and downloaded using the buttons on the individual camera windows. One standout feature is the ability to string the still images into a timelapse video. The captured content is also visible on the local network and can be accessed via the preconfigured Samba server running on the distro.
Advanced controls
Besides allowing you to change the settings for the distro itself, you can also use the advanced controls to overclock the Raspberry Pi to give it more juice to tackle the increased load of managing multiple cameras. By default the distro uses the motion daemon to capture and stream the video frames. However, motion isn’t designed to take advantage of the Pi’s GPU. You can, instead, use the streamEye back-end, which can offload the processing to the Pi’s GPU and stream video as MJPEG over HTTP. However, this back-end only supports the official Pi camera. Furthermore, since it lacks any motion detection capabilities it’s only suitable for streaming video at a significantly higher framerate and at a higher resolution without stressing the Pi’s CPU.
Another advanced setting of note is the ability to send email notifications, including captured frames as an attachment, on detecting motion. Like all the other settings, you’ll have to individually configure this option for each of the attached cameras. Bear in mind, the project is a one-man show, but it has enough documentation to get you started, even if it lacks any traditional means of support.