Person Detection with Blue Iris, Google Coral, and Frigate v0.8.0

what hardware are you using for blue iris + frigate? I’ve been putting deep consideration into this for a while now, but I’d want to enable person detection for at least 6 cameras and have concerns about the load. I also have a couple cameras that I cannot configure a substream, so I’ll be dealing with 25fps 1080 streams. I’m thinking it might be worth transcoding live to reduce load on Frigate, but it might be a wash.

I’ve got 5 cameras but they’re all using substreams. BI is running on my Windows desktop which has an AMD 3900X, but it’s way overkill just for that. The Frigate docker container is running on an i7 but uses the NVIDIA build, which runs against a Quadro P620. Each stream is < 2% CPU utilization for the substreams which is pretty damn amazing. It records a full 1920x1080 stream too.

I’m going to rewrite this for the 0.8 release once it’s out. Lots of breaking changes to the configuration, but the betas and RCs have been running flawlessly.

@TaperCrimp can you show how you trigger BI thru MQTT? What is the typical command?
EDIT: found it.
Send for exemple payload: camera=x&trigger=1
to /admin topic.

I am currently using rstp server in docker to gather all the streams from cameras.
then BI & frigate connect to this.
I would like ti disable motion detection in BI and rely only on frigate.
Then listening on MQTT events from frigate (already setup), trigger Blueiris recording.

my last implementation was based on BI and deepstack.ai
but i switched to frigate because of the great integration into home assistant.

Frigate has an excelled add-on and an integration (via) HACS.
the docker container will run in your home assistant platform. no additional (external) docker implementation is needed.

because of that big value i don’t use BlueIris anymore.
My hikvision/annke c800 cameras are having rtsp streams. So you i can stream it directly to frigate and not over BI.

i am using frigate with one camera only and my cpu utilization on my odroid n2+ is still below 5%,.

the only reason for me running frigate outside of my hassio instance is, if i would have to many cameras or high resolution streams which would impact my hassio performance.

the frigate integration will add all sensors and entities which are needed for automations etc.

below are my entities generated by the frigate integration…

I actually use both and prefer Frigate in HA for viewing clips. However, I keep Blue Iris in play since it’s better for reviewing lots of video at once, e.g. scanning through 4 hours of footage across 5 cameras. TL;DR is that I use Frigate for clips and Blue Iris for continuous footage.

anyone successfully mapped the Coral Edge TPU M2 to docker?

1 Like

you are right and thanks for your guide.
after playing around with my config. now my stream is going from the cameras -> BI -> Frigate.
This because the new Annke c800 (hikvision) has only h.265.

Nice! Any way to train Frigate? I am looking for something to train image detection for ups, FedEx…

Do you have an example on how to integrate push notification to your flow like you did with the Amazon ai?

This is what I have presently so how would I remove amazon and get Frigate to push notification:

Your flow has no pushover nodes, so how do you use the pushover?

I did this but not sure if it works:

This is the code sent to my pushover alert:

var camera_name = global.get('camera_name_person') || 0;
msg.topic = "BlueIris/admin"
msg.payload = "camera=" + camera_name + "&trigger=1"
msg.device = "GalaxyS10Plus";
msg.priority = 1;
msg.image = "/config/www/camera_snapshot/snapshot-latest-person.jpg";
msg.qos = "0"
msg.retain = "false"
return msg;

How did you get the ffmpeg to work in docker-compose?

That’s probably a better question for the Frigate thread.

I’d have to dig through since I change it a while ago, but this is the function node that I feed into a Pushover alert:

var camera_name = global.get('camera_name_person') || 0;
msg.payload = "camera: " + camera_name;
msg.topic = "Person Detected";
msg.device = "MyDevice";
msg.priority = 1;
msg.image = "/config/www/camera_snapshot/snapshot-latest-person.jpg"
return msg;

Looks like you’re pretty close though.

1 Like

This worked for me with one small change.

msg.image → msg.attachment

It looks like a lot of you are running Frigate container on a Linux box. Is it possible to install docker desktop on a Windows 10 box and run the frigate container?

Sorry if I’m way off base here. I have Blue Iris running on a windows box already, and it would be really convenient to just use that PC to run Frigate.

1 Like

I have Frigate running with 4 Amcrest cameras and I recently purchased the UBS Coral Accelerator.
2 Questions:

  1. Seems like the Coral is made specifically for Debian-based Linux system. However, I read that Home Assistant OS v6 has GOOGLE CORAL PCIE AI ACCELERATOR SUPPORT. Do you know what that means?

  2. I tried running my Coral UBS and it didn’t work. I like the fake that I can see my clips and snapshots via phone. Are the clips and snapshots still seamlessly visible through the mobile app if you have Frigate running on a second machine?

Why use Blue Iris, if there is a machine with Frigate?

Blue Iris is much further ahead when it comes to reviewing historical footage, e.g. manually scanning the last 24 hours. It looks like Frigate it coming out with a timeline viewer in the next release though.

1 Like

HAven’t checked that, but frigate is pretty cool, in EVENTS it shows you screenshot of each event

Thanks for this!

I use zones in Frigate and with this flow the zone trigger is what’s picked up, not from the camera. This means the camera name set in the global var is for the name of the zone, not the camera, which doesn’t exist in BI.

I can get around this by renaming the short name of the camera in BI to the zone id in Frigate but it’s not a great workaround. Is there a better way to grab the camera name itself that was triggered? I played around with the regex in the rewrite function

$match(topic, /frigate\/(.*?)\/./).groups[0].$string()

but no luck so far.

I might be reviving an old thread but I thought I’d post my solution in case it helps anyone else (this came up in my google search for the problem). I was having the same trouble as @planetix, where my zone trigger was picked up instead of the camera, which made the existing rewrite function not work for my use case.

My workaround was to add some additional rules to the change node, to change the zone name to the short camera name. So I am changing global.camera_name_person from to <camera_short_name> in the Rewrite Payload change script.

In the image below I show two zones for my camera named “front”. The zones are “front_door” and “side_yard”. I’m searching for the zone name and changing it to the camera short name.