NVR with realtime local object detection for IP cameras
Go to file
Sean Vig 84a0827aee Use dataclasses for config handling
Use config data classes to eliminate some of the boilerplate associated
with setting up the configuration.  In particular, using dataclasses
removes a lot of the boilerplate around assigning properties to the
object and allows these to be easily immutable by freezing them.  In the
case of simple, non-nested dataclasses, this also provides more
convenient `asdict` helpers.

To set this up, where previously the objects would be parsed from the
config via the `__init__` method, create a `build` classmethod that does
this and calls the dataclass initializer.

Some of the objects are mutated at runtime, in particular some of the
zones are mutated to set the color (this might be able to be refactored
out) and some of the camera functionality can be enabled/disabled.  Some
of the configs with `enabled` properties don't seem to have mqtt hooks
to be able to toggle this, in particular, the clips, snapshots, and
detect can be toggled but rtmp and record configs do not, but all of
these configs are still not frozen in case there is some other
functionality I am missing.

There are a couple other minor fixes here, one that was introduced
by me recently where `max_seconds` was not defined, the other to
properly `get()` the message payload when handling publishing mqtt
messages sent via websocket.
2021-05-23 20:38:57 -05:00
.devcontainer allow logger daemon process to be killed with the main thread, thus allowing us to continue logging during shutdown 2021-05-06 07:01:33 -05:00
.github Add paularmstrong to funding.yml 2021-02-24 20:58:44 -06:00
docker Add support for NGINX VOD Module 2021-05-22 07:48:44 -05:00
docs update HTTP API docs 2021-05-22 07:48:44 -05:00
frigate Use dataclasses for config handling 2021-05-23 20:38:57 -05:00
migrations formatting cleanup 2021-02-25 07:01:57 -06:00
nginx remove comments from nginx.conf 2021-05-22 07:48:44 -05:00
web feat(web): Delete events from Event page and API (#991) 2021-05-12 08:19:02 -07:00
.dockerignore add devcontainer setup 2021-02-25 07:00:59 -06:00
.gitignore Use dataclasses for config handling 2021-05-23 20:38:57 -05:00
.pylintrc use fstr log style 2021-02-25 07:01:59 -06:00
benchmark.py support multiple coral devices (fixes #100) 2020-10-18 13:47:13 -05:00
docker-compose.yml Add support for NGINX VOD Module 2021-05-22 07:48:44 -05:00
labelmap.txt refactor and reduce false positives 2020-09-17 07:37:27 -05:00
LICENSE switch to MIT license 2020-07-26 12:07:47 -05:00
Makefile add --push so the images actually get published for nginx since they are not saved locally 2021-05-22 07:48:44 -05:00
README.md clarifying addon docs 2021-01-28 07:45:09 -06:00
run.sh Add support for NGINX VOD Module 2021-05-22 07:48:44 -05:00

logo

Frigate - NVR With Realtime Object Detection for IP Cameras

A complete and local NVR designed for HomeAssistant with AI object detection. Uses OpenCV and Tensorflow to perform realtime object detection locally for IP cameras.

Use of a Google Coral Accelerator is optional, but highly recommended. The Coral will outperform even the best CPUs and can process 100+ FPS with very little overhead.

  • Tight integration with HomeAssistant via a custom component
  • Designed to minimize resource use and maximize performance by only looking for objects when and where it is necessary
  • Leverages multiprocessing heavily with an emphasis on realtime over processing every frame
  • Uses a very low overhead motion detection to determine where to run object detection
  • Object detection with TensorFlow runs in separate processes for maximum FPS
  • Communicates over MQTT for easy integration into other systems
  • Records video clips of detected objects
  • 24/7 recording
  • Re-streaming via RTMP to reduce the number of connections to your camera

Documentation

View the documentation at https://blakeblackshear.github.io/frigate

Donations

If you would like to make a donation to support development, please use Github Sponsors.

Screenshots

Integration into HomeAssistant

Also comes with a builtin UI:

Events