MotionEyeOS is a (fairly) new and revolutionary software built by “ccrisan” and is hosted on GitHub
I decided, since I was moving into my first house, that I needed some kind of security system that included cameras with remote-viewing capabilities. I had a few priorities:
- Must allow me to view the cameras remotely
- Must be high resolution (at least not grainy like usual CCTV)
- Must have recording/remote storage capabilities
- Must have motion detection
- Must be affordable
Quite a hefty list. I was already in possession of a Raspberry Pi Model 2B at the time and was wondering about creating my own CCTV system from scratch, utilising the Raspberry Pi’s Camera. Surely this must have been done before?
A simple search of the term “Raspberry Pi CCTV” brought back many articles; all mentioning this MotionEyeOS… Probably worth a look.
Written mainly in C and Python (with sprinklings of C++, Shell scripts and a tiny bit of Perl), MotionEyeOS is a software (more of a firmwire really) that allows you to turn a small, single board computer (such as a Raspberry Pi) into a CCTV camera system!
Now, you can run MotionEyeOS from just one Raspberry Pi but I recommend investing in a Raspberry Pi 3 as the main board and a Raspberry Pi Zero W as the actual camera. This setup means that you can have as many cameras as you want all linked to one central location, furthermore to see the video feed from the camera(s) you only have to navigate to 1 IP address.
If you are planning on running more than about 4 cameras in high-resolution/high-framerate, I would recommend downloading and installing MotionEye which is essentially the same as MotionEyeOS but runs as a service on your computer or server. This is because even the Raspberry Pi 3 has a limit to how much data it can process simultaneously. You can find more recommended setups on the Wiki page for MotionEyeOS here.
I set it up in the way I recommended above and it worked incredibly, the only problem I faced was that I couldn’t find any CCTV camera housing that I could be 100% sure would fit a Raspberry Pi Zero W in it. I also don’t own a hot glue gun, soldering iron or any other equipment that may be needed to put together such a contraption. This led to me abandoning the project in favour of a set or Arlo security cameras. That being said, if you have the time, equipment and willpower to pull it off - it’s a fantastic little project that has actual benefits to your daily life.
The interface for MotionEyeOS is fantastically simple. There are controls (depending on the device used) for almost all video and network related things you could think of in a CCTV camera… Resolution, framerate, exposure, horizontal/vertical flip, quality, streaming settings, motion detection… The list goes on. You also have the option to upload your video footage to a cloud storage service, which helps if the intruder was to find and destroy your cameras. Motion detection is also possible, which includes a feature to trigger events upon detection of movement. I wrote a script (which for the life of me I can’t find) that posted an update to slack each time motion was detected for more than 3 seconds.
You can do as much or as little configuration as you want and a lot of getting it right is trial and error. You learn as you play with the settings.
Hopefully this has been a brief but useful introduction to MotionEyeOS, I may do a follow-up post that goes deeper into the configuration settings and getting it set up. Until then thanks for reading.