In this post I am going to describe how to setup a web streaming server and motion detector using a Raspberry PI with the PI Camera Module.
Before to start, I am assuming that you have already your Raspberry PI Camera Module setup and working.
Step 1: Download the software
The software that we are going to install is called Motion; this is both a motion detector and streaming software. You could potentially install Motion using the apt-get command from the terminal. However, if you want to use Motion with the Raspberry PI Camera Module you need a special version of Motion (called Motion – MMAL Camera) – see this post for more info and credits.
Therefore, what you are going to do is the following:
- Install motion using apt-get command so it will install all the required dependencies;
- Remove Motion that we have just installed leaving all the dependencies
- Download Motion – MMAL Camera
Ok then, let’s start..
sudo apt-get install motion
Press Y when it is requested to install all the required dependencies. Now, we can remove Motion because, as I wrote above, we are going to use Motion – MMAL Camera.
sudo apt-get remove motion
At this point, we can download the pre-compiled version of Motion – MMAL Camera:
tar zxvf motion-mmal.tar.gz
Step 2: Config the software
As you can see, the archive contains two files: the executable and a config file. Before running the software you need to make some changes to the config file. Make sure you are in the same directory where the config file is and open it:
sudo nano motion-mmalcam.conf
The config contains a lot of settings that you are free to modify as you like. However the most important ones are the following:
- Image width and height: I suggest to set 640×480;
- Framerate should be between 2 and 5 in order to not overload the Raspberry PI;
- output_pictures: set to on if you want to generate a picture when a motion is detected;
- ffmpeg_output_movies: set to on if you want to generate a movie when a motion is detected;
- target_dir: set the folder where do you want to save the videos or the pictures. Example: /home/pi;
- Under the section Live Stream Server set stream_port 8081 if you want to enable the web streaming video; moreover, set stream_localhost to off if you want to be able to access the streaming from any host other than the localhost. If you do not want the web streaming set stream_port to 0;
- Under the section HTTP Based Control set webcontrol_port 8082 if you want to access the Motion config from the web browsers. This is a very useful capability that allows you to change all the setting of Motion directly from the browsers. Set stream_localhost to off if you want to access the configs from any host;
As you can see, Motion offers a lot of setting that you can play with…
Step 3: Run the software
Once you are happy with your config you can run motion using the following command:
sudo ./motion -n -c motion-mmalcam.conf
Now, if you want see the streaming open a browser (use Firefox or Opera but do not use Chrome because it does not work for me) and go to the following address:
and you should be able to see the streaming! If you want to see the config tool go to:
You can access to the web streaming from different devices such as iPhone, Android, etc..
That’s it. When a motion is detected Motion will generate pictures and/or videos according to what you chose in the config file.