Cloudless home CCTV

Posted on Nov. 15, 2020 by Ben Dickson.


I wanted a few cameras setup outside the house mostly to keep an eye on the kangaroos wandering around outside! (this is actually the main motiviation - to spot interesting wildlife visiting - although the home security aspect is a nice bonus)

In the setup I have a few requirements:

  1. PoE powered cameras (power over ethernet), so just one network cable per camera needs run.
  2. Modest number of cameras - I initially bought 4, and I am unlikely to add many more.
  3. Cameras connected on dedicated VLAN so they can be easily firewalled from internet, same with recording machine
  4. Displayable nicely on a monitor (possibly an old iPad or similar), and accessible via a web-browser.
  5. Basic motion detection based capture.

Cameras

Hardware

This ended up being a fairly short search - the Reolink RLC-410-5MP were quite well reviewed, and were available on Amazon for a decent price, and also had a 15% discount, so ended up costing around $50 AUD each.

They appear to be quite solidly constructed, all the exterior parts including the adjustable mounting bracket is made of strudy metal, glass front cover for the IR LED's.

The bracket can be adjusted so the camera is mounted in the correct orientation regardless if it's mounted either from a wall or ceiling, and the cable can either enter in from behind the bracket, or run out the side.

The box contained mounting screws and a hole template, a tiny allen key for adjusting the bracket, and a tiny 1m ethernet cable (not too sure why it is included, but useful for testing before installing I guess)

I'm a little surprised the device has the barrel power connector instead of just requiring PoE (or a PoE injector) - although I suppose it wouldn't have much benefit: the cable could be a tiny bit less bulky, but the largest element is the waterproof ethernet jack (around 20mm diameter), so removing the barrel jack wouldn't reduce the size of the hole required.

While waiting on a POE switch to be delivered, I did use a random power adapter I had lying in the "Box Of Wires". It was only rated to 12v at 500mA, when the suggested power supply requirement is 12v at 1A - but only for testing for a few hours it's proved good enough.

Firmware

Biggest complaint is when accessing the camera via the web-interface uses Adobe Flash to stream the video - the problem being:

All major web browsers plan to officially remove Adobe Flash Player on December 31, 2020 (source: Wikipedia)

Even ignoring it's impending official end of support, Flash support in browsers has for years been best described as "reluctant" - not available on many phones, and on desktop it's possible to install but not really worth the hassle for something only used for setup and debugging the cameras breifly.

Luckily, flash is only used for displaying the video stream - all the other controls like the encoding settings and so on are adjustable without it.

Reolink are also planning to release new firmware which no longer requires flash by the end of 2020

Phone app

I installed the Reolink application for Android just to try it out - it works without any kind of signup, adding the camera on the LAN was extremely easy, and it shows the video feed and lets you adjust the settings same as the web interface. The app does have a "login" button and a Cloud tab, but they are not required and fairly unobtrusive if not using this feature.

The phone app was the easiest way to initially configure the cameras - setting their name etc. The phone auto-discovers the devices, and is easiser than finding their IP addresses via DHCP leases.

One thing which isn't clear is the phone app will, without any setup, make the cameras available outside of your LAN. This is convinient but definitely isn't immediately obvious, nor is there any easily findable explaination of how this works from a technical point of view. I assume it uses some simple NAT traversal to connect to the camera, as it would be impractical to stream every camera feed via Reolink servers - but the pairing process doesn't require any kind of 2-factor "press button to pair" type action, which is somewhat of a concern.

None of this is necessary for me, which is why I plan to put them on their own VLAN and block any internet traffic.

Overall impression

I've yet to install these, so we will see how they hold up over time, how the image quality fairs in various lighting conditions, and also how good the range on the IR light at night - it claims about 30m which should be more than enough for my needs.

First impressions of capture software

There are a lot of "NVR" (Network Video Recorder) software, sometimes called "CCTV software".

My criteria for this is fairly simple:

Some nice-to-have things would be an open source implementation,

Zoneminder

This seems to be the most widely known open source software for this purpose.

I quickly installed it in Docker. Only major confusion was accessing it via, for example, http://192.168.86.123 returned a default apache index page - after a bit of searching the Zoneminder UI is available at http://192.168.86.123/zm/

There wasn't any presets for any Reolink cameras, so a bit of searching around revealed the RTMP address for the camera, plugged it in and it seems to work okay.

However the interface seemed a little "clunky", particularly the video playback controls. It seemed hard to quickly scrub through the recorded videos.

Additionally the CPU usage seemed much higher than I would expect - running in Docker probably didn't help, but it made my (ableit slightly old) laptop struggle with only a single camera feed.

On a more powerful machine (but still running in Docker), CPU usage of 2 cores on a Intel Core i5-9400F CPU @ 2.90GHz was around 60-70% only to capture. The default "mocord" motion record setting maxed out both cores and became unworkably slow.

I'm sure this could be improved by tinkering with some settings, but this seems to be a pretty consistent critisism of Zoneminder.

Shinobi

Shinobi was the second software I tried. It looks a lot more "modern" than Zoneminder, using a lot more Javascript to make things interactive, has a custom video player with an interesting motion detection graph overlay.

Installation on an Ubuntu VM was straight forward. The installation document was well written, as is the rest of the documentation I've seen for Shinobi.

Some of it's "modern design" was a little odd - like using a all-caps style on the username input (since login forms are typically case-sensitive, typing in a username and setting it in caps makes me check caps-lock isn't somehow on)

On first login I was immediately met with a full screen popup advertising their paid "Shinobi Pro" subscription. It has a button to dismiss the popup for 1 weeks. This is a little odd as the paid subscription appears to be aimed at businesses, so popping it up every 7 days for induviduals seems a bit inconvient (the popup also seems to appear every time I log in instead of every 2 weeks) - but not a big issue.

I added the camera without too much issue - the configuration page wasn't much more helpful than Zoneminder, but Shinobi's documentation is very well put together, and includes a page with configuration settings for lots of cameras, including the specific model I had

There was two major issues with Shinobi which put me off using it:

First was a relatively minor but quite annoying bug - in the monitor page lets you freely resize the layout of the cameras, which is nice, but it does not preserve the aspect of the image - if you squish the view to be very narrow, your camera feed gets squished too.

A major thing: it is configured to store 10GB of video by default. I left this recording for a while, but it does not seem to respect this limit. After a day or so it had used 20GB, displayed close to 200% usage, filled up the partition and stopped recording or displaying any of the camera feeds.

There is a bug report about this form a month ago. There's also a similar bug from a year ago still not resolved.

Given this is a fairly integral part of such a system, and it is being sold commerically, it worries me this isn't addressed.

Blue Iris

Although very much not open-source (closed source, and Windows only), I wanted to compare what seems to be the most widely recommended NVR software.

I downloaded and installed the free trial. The installer worked without surprise.

Adding a camera was extremely straight forward in comparison - it automatically detected the camera via the ONIVIF service (which Zoneminder and Shinobi mention but, based on my near zero knowledge of the standard, don't seem to do much with it). I just had to enter the username and password.

Scrubbing through videos in the Windows interface was very quick, although that's a little unfair as it's a locally running application which can directly access the files!

The web interface was a little less impressive by default - in the live stream, there is noticeable strobe of compression blockyness every second in the default stream, however this can be adjusted in the settings. It's presumably setup for viewing over a mobile connection by default (at about a "phone size" screen it looks pretty decent), which is fair enough.

The scrubbing in the Clips section seemed very laggy untill I realised if you clicked pause first, it was noticeable better. Still not perfect, but definitely better than either Zoneminder or Shinobi.

Overall the software seems pretty decent, I didn't notice any major bugs. The only downside is it only runs on Windows, which I am not familiar with using for server type setups, and between the cost of a Windows license and Blue Iris would cost a little over $300 AUD.

Conclusion

This was some very preliminary research. I still have to decide some things like which hardware to run the capture software on, have to get the actual cameras installed, and so on. I'll try and do another post when these steps are done!