DEV Community

Marco Steinke
Marco Steinke

Posted on

πŸ“· survAPI Surveillance Camera Analysis

❓ Need surveillance, but low on server capacity?
πŸ’‘ Train the camera to know when to record.

find my Repository here:

⚑ Introduction:

This implementation demonstrates a Security-Camera Software which was written in javascript and uses cocossd offered by ml5 to detect objects.

The application is secured using express-session and bcrypt. This way only authenticated users can access your surveillance and you are able to allow registrations and create new roles to control this system.

❓ Problem:

A business needs a security camera, but is low on server capacity. Thatswhy the business can not store videos 24/7.

πŸ’‘ Solution:

Using Machine Learning, we can tell the camera when it has objects in view and use a lightweight backend to store the timestamps and also the type of objects which where detected.


After detection, the software later classifies them as certain targets.


If the classified object is one of the targets, it will be persisted in the database by giving information on its type and also adding a timestamp and date. Now we know when to start recording and stop after a predefined amount of time passed.

πŸ’ͺ Improvements over conventional Security Cameras:

  • installation is very easy and very customizable due to Open Source Technology

  • a clean webinterface makes your cameras accessible and configurable

  • detection of persons is a standard problem of Machine Learning and already has a very high precision

  • destroy video material in which nothing happens, you will only store critical/important moments

⭐ advance your security by getting additional information from your camera.

⭐ super simple setup.

⭐ modern dashboard and webpages to access the cameras.

⭐ combine any hardware with this software.

⭐ SurvAPI: The included surveillance API also offers all of the analysis tool to be called from other frameworks.

⭐ lightweight and fast.

⭐ optimized amount of video data.

⭐ Machine Learning used to detect certain targets.

⭐ predefine intervals to control data produced by the camera.

⭐ very simple database structure

⭐high security level by using bcrypt

πŸ›οΈ Architecture:
The project will be separated into the subsystems Camera, Surveillance, Database, Webviews where each subsystem exactly solves one of the given business problems.

To guarantee clean code, this project will profit from Domain Driven Design and from Self Contained System’s.

The subsystem will fulfill the HARDWARE-part in this project. All types of cameras (which you find right below under Compatibility) will be connected via this subsystem. It defines a domain model which projects the real world properties of cameras into code and offers its configured cameras to all of the other subsystems. All of the input will run through this subsystem.

The surveillance will process video material received from any video source, configured in the Camera subsystem. It makes use of ML5 and analyses the material based on the admins preferences. The analysis results will be persisted in the Database subsystem. It usually is not a separate subsystem, but for this project it will do best if the database can completely be substituted behind an interface which connects the Webviews and the Surveillance to it.

Use any type of database you want and store all of the analysis results. You can access the persisted data by using the Webviews or build your own UI to access it.

Basically a frontend which can be accessed from any webbrowser. You can configure the cameras, inspect detections in a nice way and get watch live material from your surveillance cameras.

Top comments (1)

helencardona14 profile image
Helen cardona

Do you know if it can be compatible with the AJAX system to improve a closed circuit already made or would I have to make one from the beginning? I would like to be able to test it, with which devices do you recommend the code or firmware of the files that you left, thanks for the contribution I liked it Very much, I would like to know more about programming, do you know where I can learn about software development?