Show HN: CheapSecurity – Lightweight, Self-Hosted CCTV for Linux SBCs

135 points by zeldone a day ago on hackernews | 33 comments

ibejoeb | a day ago

Anyone have camera suggestions? I've got 2 spare raspi 5s that would probably be a good base.

ranger_danger | a day ago

In my experience, budget USB cameras are not reliable as a long-term solution because they randomly stop working in different ways after days of use and must be power-cycled.

Instead I would suggest either a direct CSI connection or an external GigE camera.

fy20 | a day ago

I'd just bite the bullet and get proper security cameras. I got a few 4K something or other from Ankke (rebranded HikVision) 5 years ago and they still work fine. They were about €100 each.

ranger_danger | 23 hours ago

For those that don't know, Hikvision is banned in several countries now due to both cybersecurity reasons and human rights violations: https://ipvm.com/reports/hikua-bans

I have also tried many other IP camera brands over the years, but it seems none of them have figured out how to output fully compliant RTP/RTMP/etc. streams so I end up always having strange and random problems receiving fluid streams from them into a central server.

Coupled with the fact that many brands are just using the same recycled white-label Chinese firmware, I'm not surprised.

Would love better recommendations though if any exist.

Namidairo | 17 hours ago

> I have also tried many other IP camera brands over the years, but it seems none of them have figured out how to output fully compliant RTP/RTMP/etc. streams so I end up always having strange and random problems receiving fluid streams from them into a central server.

Another issue is semi-compliant ONVIF implementations for PTZ cameras and/or not having relative movement implemented. Or you know, just lacking RTSP and ONVIF entirely.

> Coupled with the fact that many brands are just using the same recycled white-label Chinese firmware, I'm not surprised.

SDKs for many of the SoCs not being available is really annoying as well. Some of the Ingenic, Sigmastar, Goke etc. are available, but I think many were just leaks from customers rather than intentional releases.

Fabricio20 | 17 hours ago

I've had some great success with Reolink. Decent video quality and the software is made with RTSP/RTMP support in mind, including a proper web portal on the camera so you don't even need the phone app for setup.

Not too sure if you are looking for non Chinese manufactured though, down here anything else is just way too expensive and lower quality anyway!

[OP] zeldone | 3 hours ago

I was able to keep everything running without a reboot for more than 3 weeks.

dvno42 | a day ago

Old Axis cams show up on eBay. Those are pretty standards oriented and easy to work with. Most hanwah and some Samsung are fine too.

kotaKat | a day ago

Arecont Vision cameras are fun too. Casino mode, anyone?

"This feature ensures continuous full-motion recording at 30 frames per second (fps) to comply with gaming industry regulations. Casino Mode guarantees that the frame rate will not dip below 30 fps by forcing automatic bit rate and exposure control to maintain specific predetermined settings."

[1] https://www.retailitinsights.com/doc/arecont-vision-adds-cas...

npodbielski | a day ago

I always wonder why author of such software will not add some screenshot or gif showing UI and how it does work? In features there is mention of web interface.

mattlondon | a day ago

How does this handle motion detection? Anyone tried it?

I have a bunch of Nest cameras and some cheaper Tapo cameras.

The "motion detection" is night and day different. The Tapo does some basic frame-diffing and it's awful. Shadows? DING DING DiNG MOTION DETECTED! gust of wind made some blades of grass move? Motion! Spider? Motion motion motion! Turn down the sensitivity a notch or two and it won't notice a human walk across the frame 2 meters away. The Tapo ones claim to be smart but twigs and leaves still trigger pet/person/motion alerts. It makes them essentially useless.

The Nest cameras are so much better and their "human" detected is usually zero-false-negatives at the cost of one or two false-positives perhaps once every 3 or 4 months, and their app is superior (tapo one frequently needs to be false-killed to load clips). Yes I am aware that the nest ones are streaming back to google 24/7.

Tldr: naive frame-diffing sucks for this sort of thing if used outside. An open source implementation that has accurate and reliable "human detection" would be amazing. Doesn't need to be "AI" - I would hope that there is some sort of computationally reasonable OpenCV way of doing person detection. Perhaps wait for frame-diffing to flag motion then feed it to a more expensive algorithm?

genericacct | a day ago

Try the motion Linux package, it can connect to tapos over SDP and then you can run Yolo or any other solution on the output

atmosx | a day ago

Seriously… how hard is it to setup an RPi with a camera and offload the detection to some open source software? Last time I checked there projects performing animal, face and even license plates reckon, extraction and db recording of “who”, “when”, “what” using cheap cameras and an RPi.

Fabricio20 | a day ago

It's actually pretty darn easy nowadays and i'm so glad its the case! Frigate is amazing and the detection package is of your choosing (hardware dependant) and everything is customizable too.

wolvoleo | a day ago

Frigate is pretty cool if you need motion detection. If you don't it's a bit wasteful because it still keeps the whole decoding pipeline active. I've switched to LightNVR that doesn't do that. I have enough alarm sensors (motion and door entry) so I don't need motion on the cams as well. I just record 24/7 for evidence keeping.

wolvoleo | a day ago

The tapo cameras do this on cam. They can even report it to the NVR system, completely local with ONVIF.

Nest does it in the cloud. Obviously it's more capable but it also means Google grabs all your video: https://support.google.com/googlehome/answer/16594324?hl=en#...

drnick1 | a day ago

What is the difference between this and Frigate? Before clicking the link, I thought this would be a hardware solution (build you own camera from open components).

acidburnNSA | 22 hours ago

Frigate is so amazing. The lightweight object detectors plus home assistant automations and notifications are way too fun and powerful. I keep setting up new systems for family members after they see mine.

dns_snek | 14 hours ago

Which cameras do you use with it? Frigate + Thingino has been a constant source of stability issues for me, I've given up on it. Finding the right combination of parameters that had <2s latency, working audio, and didn't cause the stream to crash constantly seemed impossible.

serf | a day ago

`motion` is in the big hall of fame for 'software other things are based on' next to imagemagick and curl.
For those (like me) who don't know what "motion" refers to here, it's Motion Project, an open-source program to monitor multiple cameras and trigger real-time hooks based on motion detection, etc.:

https://motion-project.github.io/index.html

kube-system | a day ago

My question about this project and the numerous similar projects: where do I get a usb camera suitable for this? Webcams typically have unsuitable enclosures, focus behavior, and low light performance.

drnick1 | 22 hours ago

I am not familiar with this particular project, but generally speaking, you don't want a USB camera for CCTV. You want an IP camera with POE and RTSP support.

wildzzz | 21 hours ago

With the price of SBCs nowadays, you'll probably save some money just buying an ip camera.

In 2018, I had a project where I needed to capture live video of some test equipment that was in an area off limits to humans. I could get measurements remotely but just not fast enough to stop the test if something went wrong. We also had no idea what to expect if something went wrong so there was no way to setup a trigger for a screengrab. We had zero funds for buying anything, PM told me to beg, borrow, or steal what I needed. I got a couple of old laptops and webcams from IT and built my own version of this using a slick ffmpeg one-liner to record locally and stream to another laptop outside the off limits area. I did have to buy a USB 3.0 ExpressCard, which I kept, because turns out you can't run multiple webcams through the single USB hub every port branched off from (even the docking station ports). It worked great.

dspillett | 21 hours ago

> With the price of SBCs nowadays, you'll probably save some money just buying an ip camera.

The post you replied to very specifically mentioned using an IP camera. Unless you are paying “proper” money per camera, these days most of them are limited out-of-the-box in ways that are intended to drive you to paying a subscription service to have the recordings stored and processed (and presumably used for AI training whether you agree or not) on someone else's server.

The point of this, and other similar projects, is to host that target server yourself to maintain control and privacy. Where it says “such as […] a USB webcam” I assume it is using the same components and libraries that other options do and so will support common IP camera outputs easily too (assuming your camera doesn't protect its feed, or protects it badly, or you can flash it with alternate firmware that doesn't try to lock you in that way), and where it says “such as a spare Linux board …” spare here implies the target audience is people who are likely to have a spare board/box (or resource spare on their home-lab to host an extra container/VM) available so don't need to buy one at current prices.

3abiton | 14 hours ago

Check out Thingino. It's an open source firmware you can flash on certain off-the-shelf chinese camera (including wyze), to turn them from cloud spyware to actual fully local ip devices.

[OP] zeldone | 3 hours ago

thanks!

lormayna | a day ago

What are the difference with systems like Motion (https://motion-project.github.io/4.0/motion_guide.html) ?

[OP] zeldone | 4 hours ago

Motion is a great software and it overlaps with CheapSecurity. However this software pretend to be: 1. a single-camera-per-instance CCTV with a web dashboard and Telegram bot (motion is a full-featured NVR/motion daemon: multi-camera, masks, timelapse, SQL logging, external triggers, etc...) 2. One independent process per camera; multi-camera is done by running multiple instances. (motion is multi-camera support in one process) 3. Small Flask dashboard with live stream, settings toggles, and bulk actions on recordings. (motion is functional stream/status pages) 4. Specifically optimized for low-power ARM boards like the Odroid XU4 5. Last but not least small Python/Flask/OpenCV codebase, easy to hack on...

That's it

synergy20 | 20 hours ago

    V4L2 (MJPG) -> cap.read() -> CLAHE(night) -> imencode -> _current_frame (web MJPEG)
                              -> resize .25 -> gray -> blur -> absdiff -> contours -> motion?
                              -> motion? VideoWriter.write() : pre_buffer.append(jpeg)
                              -> on stop: ffmpeg remux fps fix -> Telegram/email
a mjpeg system basically, all in python but does need opencv

madduci | 10 hours ago

Porting it to C++ should bring also a lot of improvements in terms of.performance

[OP] zeldone | 4 hours ago

Correct! But I have to be honest... I do not like the night vision since with a consumer webcam is not working very well... I will test with a cheap camera that support by default night vision... I will keep you posted!

[OP] zeldone | 4 hours ago

Correct! But I have to be honest... I do not like the night vision since with a consumer webcam is not working very well... I will test with a cheap camera that support by default night vision... I will keep you posted!