Video surveillance part 2 – installing MotionEye

In my previous post I configured basic video capabilities for web camera connected to OpenWRT router. Today I decided to go further and install more advanced software that would in fact be a surveillance solution. I decided to try with Motion package and MotionEye interface for it.

Installing it first required a bit of work to make more space available on my router, I’ve explained it step by step in this post.

After getting more space I’ve installed on that new partition required packages:

opkg update

opkg install python -d ubi1

opkg install curl -d ubi1

opkg install motion -d ubi1

opkg install ffmpeg -d ubi1

opkg install v4l-utils -d ubi1

opkg install python-pip -d ubi1

opkg install python-dev -d ubi1

opkg install python-curl -d ubi1

opkg install python-pillow -d ubi1

Now I needed to use PIP to install MotionEye itself:

python -m pip install --upgrade setuptools

python -m pip install motioneye

That way they were installed on main, smaller ubi0 partition, but it was just few MBs, most of heavier files were installed by opkg to bigger ubi1 partition so I was ok with that. I created also config file location and copied sample config there:

mkdir -p /etc/motioneye
mkdir -p /mnt/sda1/motioneye/log
mkdir -p /mnt/sda1/motioneye/media
mkdir -p /mnt/sda1/motioneye/run

cp /usr/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motion.conf

Then I edited config file to move needed locations to external HDD:

# path to the configuration directory (must be writable by motionEye)
conf_path /etc/motioneye

# path to the directory where pid files go (must be writable by motionEye)
run_path /mnt/sda1/motioneye/run

# path to the directory where log files go (must be writable by motionEye)
log_path /mnt/sda1/motioneye/log

# default output path for media files (must be writable by motionEye)
media_path /mnt/sda1/motioneye/media

After that everything was ready to play, so I ran:

root@WnekoWrt:~# meyectl startserver -c /etc/motioneye/motion.conf

And was able to access MotionEye by 🙂

Now I need to get to know it and configure it, but for Today I’m happy with current progress!

UPDATE after some testing

Unfortunately, after whole evening of testing in the end this doesn’t seem to be viable option on my router. When playing around with configuration of MotionEye when setting anything over 1000px on long edge camera was just stopping to work. So I started to test with motion itself – and I was able to run it successfully at 800x448px 5fps, anything more and device can run out of memory, or camera stops working. So it just doesn’t feel like enough for XXI century surveillance.

Also it seems motion package available in opkg has ffmpeg support disabled – so no recording of video without compiling my own package. At least saving images, with resolution settings as above, works like a charm – when it detects motion it saves series of images – but again they are quite low resolution.

As you can see – it works. But is it useful? Xiaomi camera for 150pln definitely seems much more useful than that. This probably could be good option but with much better device – when I’ll finally install my server with full Linux on Xeon powered virtual machine with much more ram available I will definitely come back to this, but for now resources – CPU and RAM – needed to keep it working don’t seem for me to be worth it.

To be honest, seeing how much better mjpeg-streamer was performing I was expecting much better results. But I guess motion needs to keep multiple images to be able to detect motion and also perform much more calculations for actual motion detection and here it’s where R6220 is just not powerful enough. But still – mjpeg-streamer is perfectly viable for real-time streaming, so I’ll just stick with it as a way of checking Xiaomi’s blind spot if needed.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.