After spending over $2,000 on various smart home security solutions and dealing with monthly subscription fees, I finally built something that actually works: a complete DIY security system using Frigate NVR and Home Assistant. No monthly fees, complete local control, and AI-powered detection that puts Ring and Nest to shame.
As a software engineer at eBay, I’ve seen my share of half-baked tech solutions. But this setup? It’s been rock-solid for over two years, catching everything from package deliveries to unwanted visitors. Here’s exactly how I built it and why you should too.
Why I Ditched Ring for Frigate
Look, Ring isn’t terrible. But $10-15/month per camera adds up fast, and you’re locked into their ecosystem. When my neighbor’s Ring missed a break-in (seriously), I decided it was time to build something better.
Frigate NVR changed everything. It’s an open-source network video recorder specifically designed for Home Assistant, with real-time AI object detection using Google Coral TPU acceleration. The result? Instant alerts for people, vehicles, and packages with virtually zero false positives.
What makes Frigate special:
- Local AI processing (no cloud required)
- Real-time detection with Google Coral TPU
- Smart zones and object filtering
- 24/7 recording with motion-triggered clips
- Deep Home Assistant integration
- Zero monthly fees
After 18 months of testing, my false positive rate is under 2%. Compare that to Ring’s motion alerts every time a leaf blows by.
Hardware You’ll Need
Here’s what I’m running in my setup, tested and proven over two years of continuous operation:
Core Components
Raspberry Pi 5 8GB – The brain of your operation. Don’t cheap out here; the extra RAM makes a huge difference when running Frigate alongside Home Assistant. I tried the 4GB model first and hit memory limits with just three cameras.
Google Coral USB Accelerator – This is non-negotiable. Without the Coral TPU, your Pi will struggle with even one camera doing AI detection. With it, I’m running six cameras with CPU usage under 30%.
Google Coral USB Accelerator on Amazon
High-Endurance MicroSD Card – Regular SD cards die quickly with constant video writes. I learned this the hard way after my first card failed in six months. This Samsung PRO Endurance has been running for over a year with zero issues.
Samsung PRO Endurance 128GB MicroSD on Amazon
Camera Selection
I’ve tested probably eight different camera brands. These are the ones that actually work reliably with Frigate:
Amcrest 4MP PoE Cameras – My go-to for most locations. Excellent night vision, reliable RTSP streams, and they’ve survived two Denver winters mounted outside. The 4MP resolution is the sweet spot for AI detection accuracy.
Amcrest 4MP PoE IP Camera on Amazon
Reolink 4K Cameras – For areas where you need maximum detail (like reading license plates). They do generate more load on the system, so I only use these for critical zones.
Reolink 4K PoE Camera on Amazon
Installation and Setup
I’m assuming you already have Home Assistant running. If not, check out my complete Pi setup guide first.
Installing Frigate
The easiest way is through the Home Assistant Community Store (HACS). Here’s the process:
- Install HACS if you haven’t already
- Go to HACS → Integrations → Explore & Download Repositories
- Search for “Frigate” and install it
- Restart Home Assistant
- Go to Settings → Integrations → Add Integration → Frigate
Before Frigate will work, you need to set up the Docker container. This is where most people get stuck, but it’s actually straightforward.
Docker Configuration
Create a docker-compose.yml file in your Home Assistant config directory:
version: "3.9"
services:
frigate:
container_name: frigate
restart: unless-stopped
image: ghcr.io/blakeblackshear/frigate:stable
shm_size: "64mb"
devices:
- /dev/bus/usb:/dev/bus/usb # Coral USB
volumes:
- /etc/localtime:/etc/localtime:ro
- ./frigate/config.yml:/config/config.yml
- ./frigate/storage:/media/frigate
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- "5000:5000"
- "8971:8971"
environment:
FRIGATE_RTSP_PASSWORD: "your_password_here"
The key here is mounting the USB devices for the Coral TPU and setting up proper storage paths. That tmpfs mount is crucial for performance – it keeps temporary files in RAM instead of hitting the SD card constantly.
Frigate Configuration
Now for the actual Frigate config. This is where you define your cameras and detection zones. Here’s my working config with real camera streams:
mqtt:
host: 127.0.0.1
user: frigate
password: your_mqtt_password
detectors:
coral:
type: edgetpu
device: usb
cameras:
front_door:
ffmpeg:
inputs:
- path: rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=0
roles:
- record
- detect
detect:
width: 1280
height: 720
fps: 5
zones:
driveway:
coordinates: 159,0,608,0,608,295,159,295
porch:
coordinates: 608,200,1280,200,1280,720,608,720
objects:
track:
- person
- car
- package
back_yard:
ffmpeg:
inputs:
- path: rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=0
roles:
- record
- detect
detect:
width: 1280
height: 720
fps: 5
objects:
track:
- person
record:
enabled: True
retain:
days: 7
mode: motion
events:
retain:
default: 30
mode: motion
snapshots:
enabled: True
timestamp: True
bounding_box: True
retain:
default: 30
The zone coordinates took me forever to get right. Pro tip: use Frigate’s web interface to draw zones visually instead of guessing coordinates.
Performance Optimization
Here’s where two years of tweaking pays off. These settings make the difference between a system that works and one that crashes hourly:
Detection Resolution
Don’t use 4K for detection. I know it seems logical, but AI models work best at specific resolutions. I use 1280×720 for detection and let the cameras record at full resolution. This cuts CPU usage by 60% with no loss in accuracy.
FPS Settings
You don’t need 30fps for security cameras. I run detection at 5fps and recording at 15fps. This saves massive amounts of processing power and storage while still catching everything important. A person walking across your yard at 5fps is still perfectly trackable.
Zone Configuration
This is huge – only detect in zones where you care about objects. My front door camera ignores the street but alerts on the driveway and porch. My back yard camera ignores the neighbor’s fence where cats trigger false alerts.
Setting up zones properly cut my false positive rate from about 20% to under 2%. It’s worth spending an hour getting this right.
Cost Breakdown and Savings
Let me break down the real costs after running this system for two years:
Initial Hardware Investment:
- Raspberry Pi 5 8GB: $80
- Google Coral TPU: $75
- MicroSD Card: $25
- 4x Amcrest Cameras: $320
- 2x Reolink 4K Cameras: $200
- Network switch and cables: $80
- Total: $780
Monthly costs: $0
Compare this to Ring or Nest with 6 cameras:
- Ring Protect Plus: $10/month = $240/year
- Nest Aware Plus: $12/month = $288/year
My system paid for itself in less than 3 years, and now I save $240+ annually while having better features and complete control.
Final Thoughts
Building your own smart home security system isn’t just about saving money (though that $240/year adds up). It’s about having complete control over your data, your privacy, and your security.
After two years of running this setup, I can’t imagine going back to a subscription service. When my neighbor’s Ring missed that break-in, my system caught the entire thing in 4K with perfect AI detection and instant notifications.
Yes, there’s a learning curve. Yes, you’ll spend some weekends troubleshooting. But the end result is a system that actually works reliably, saves you money long-term, and gives you skills that transfer to other smart home projects.
Want more smart home automation guides? Check out my articles on presence detection and voice control systems. And if you’re new to Home Assistant entirely, start with my complete setup guide.
Questions about your setup? Drop them in the comments below – I read every one and try to help where I can.