fEVR frigate Event Video Recorder v0.6.0 STABLE release

license telegram
Discussions commits since last release Build Status
Image Size Twitter URL twitter-follow

social|100%

This marks the first fully stable release of fEVR which works alongside Frigate to provide an easy to use object detection system!

An updated Home Assistant Add-On will be available by the end of July 2022.

fEVR works along side of frigate to collect video and snapshots of objects detected using your existing camera systems.

![fEVR v0.6 Screenshots](upload://atiJG53f6C3Dtwat58KpSG0Lzee.png)

fEVR v0.6 Screenshots

Own Your Home’s Security

fEVR allows you to own your home’s camera system. Instead of paying multiple cloud providers varying rates to perform object detection and recording, bring them all into fEVR in your very own open source self-hosted solution! Google, Wyze, Ring, and varying Tuya based cameras all use your data AND want to charge you to store it in the cloud.

Feature comparison to leading cloud event detection providers

Feature comparison to leading cloud event detection providers


Requirements:

  • Frigate fully setup and working
  • MQTT Broker (if you have frigate running, you have this) listening to 0.0.0.0
    • This caused me many headaches, hopefully it saves you some hair pulling.
      It allows mqtt clients on different subnets to access the broker.
      If setup within your local lan this does not alone open up external access, only to other subnets which already have access.
    • Example mosquitto.conf listener section if using port 1883
      listener 1883 0.0.0.0
      

Optional but nice:

  • Tailscale Account (for secure remote access)

Support

Please note, I will generally answer questions within 24 hours, and most times even faster unless I’m on vacation or going on adventures with the family.
Any abuse, harassment, bullying, or just being mean about a free project that I do in my spare time will get you blocked and reported. I have no tolerance for this.

2 Likes

Hey this is great, you are obviously putting a lot of work in!

With the addon, will there be ingress, so those of us with a nabu casa account can access fevr without tailscale?

Only the looks of this are already tempting :-).

May I ask… I use frigate as NVR, and that store recordings and detections etc. What am I m8ssing there that does yours add? I cannot easilyfind the advantage myself.

Thank you

The advantage for now is a nice interface.

In the near future I plan to add setup of frigate from within fEVR including scanning your network for RTSP cameras, adding hard to add cameras (like google nest cameras) to frigate, and fine tuning of object areas and scores, and auto setup of notifications through home assistant, web notifications and possibly push notifications through firebase as well.

1 Like

That’s the plan. I may even go the route frigate has and do a passthrough version if you’re running it via docker outside home assistant.

1 Like

Let us know when thats there! :star_struck:

RTSPScanner - Another Piece of the Puzzle

I just released RTSPScanner on PyPi which is one piece of the puzzle. It allows you to scan for RTSP Cameras on your network. It can be used as a command line utility or as a class in python3.

PyPI   PyPI - Python Version   PyPI - License PyPI - Downloads   GitHub last commit

Requirements:

ffmpeg in your $PATH
python3 in your $PATH or virtual environment

Installation

python3 -m pip install RTSPScanner

Run it in a terminal:

Scan the Entire Network:

rtspscanner -m scan -a 192.168.2.0/24

Output:


4 Potential RTSP Sources:
  192.168.2.63:8554
  192.168.2.240:8554
  192.168.2.190:8554
  192.168.2.189:8554

0 Camera Found:

Credentials Used:
  none

Paths Used:
  /Streaming/Channels/101
  /live

Scan a Single Host

rtspscanner -m scan -a 192.168.2.190

Output:

1 Potential RTSP Source:
  192.168.2.190:8554

0 Camera Found:

Credentials Used:
  none

Paths Used:
  /Streaming/Channels/101
  /live

More Options:

rtspscanner -h

Output:

usage: rtspscanner [-h] [-w WHITESPACE] [-a ADDRESS] [-n NAME] [-p PORTS] [-c CREDS] -m MODE [-A APIADDR] [-P APIPORT] [-t APITRANSPORT] [-T TIMEOUT] [-R TIMEOUTRETRIES] [-v]

Scans given ports of an IPv4 Address or an IPv4 Network for RTSP streams and adds them to rtsp-simple-server

options:
  -h, --help            show this help message and exit
  -w WHITESPACE, --whitespace WHITESPACE
                        Whitespace Replacement can be - _ or #
  -a ADDRESS, --address ADDRESS
                        Single ipv4 address or ipv4 network in CIDR notation ex: 192.168.0.100 or 192.168.0/24
  -n NAME, --name NAME  Camera Name | only used if single address given
  -p PORTS, --ports PORTS
                        csv format: 000,000,000
  -c CREDS, --creds CREDS
                        csv formatted user:password pairs: username:password,user:pass
  -m MODE, --mode MODE  add - add cameras found / rem - remove cameras found
  -A APIADDR, --apiaddr APIADDR
                        rtsp-simple-server API IP Address/FQDN
  -P APIPORT, --apiport APIPORT
                        rtsp-simple-server API Port
  -t APITRANSPORT, --apitransport APITRANSPORT
                        rtsp-simple-server API transport (http/https)
  -T TIMEOUT, --timeout TIMEOUT
                        Timeout for ffmpeg command to determine if rtsp stream exists
  -R TIMEOUTRETRIES, --timeoutretries TIMEOUTRETRIES
                        Number of retries on timeout for ffmpeg command to determine if rtsp stream exists
  -v, --verbose         Set verbosity to true

Use it in a python3 project as a class:

from rtspscanner import RTSPScanner
scanner = RTSPScanner()

# Set address to net wth CIDR notation or single host
scanner.address = 192.168.2.0/24

# Set to scan mode (add/rem to/from rtsp-simple-server still under development and considered alpha)
scanner.mode = "scan"

# override default paths in csv (default shown)
# scanner.paths = "live,Streaming/Channels/101"

# override default credentials in csv (default is of type None)
# scanner.creds = "admin:admin,"user:pass"

# override default ports in csv (default shown)
# scanner.ports = "554,8554"

#run the scan
scanner.scan()

# Print the list of cameras found as a dict
print(scanner.scanResults)
1 Like