Frigate NVR con Raspberry Pi 5
Introducción
Frigate NVR es un grabador de video en red de código abierto diseñado para detección de objetos en tiempo real con modelos de IA. Emparejado con la Raspberry Pi 5, permite una videovigilancia eficiente en el borde. Esta guía te llevará a través del proceso de instalación y configuración para una configuración óptima.
Frigate Oficial
Preparar Hardware
Componentes Recomendados
reComputer AI R2130 |
---|
![]() |
Alternativamente, también necesitas al menos una cámara para transmisión de video. Puedes consultar Hardware recomendado para ver las cámaras recomendadas.
Instalar el Controlador PCIe de Hailo
Paso 1: Habilitar PCIe Gen 3
Abre una terminal y ejecuta el siguiente comando.
sudo apt update
sudo raspi-config
En el diálogo, selecciona 6 Advanced Options y luego A8 PCIe Speed.
Elige "Yes" para habilitar el modo PCIe Gen 3.
Después, haz clic en "Finish" para salir.
Edita /boot/firmware/config.txt
, añade la siguiente línea al final del archivo.
dtoverlay=pciex1-compat-pi5,no-mip
Paso 2: Instalar el Controlador PCIe de Hailo
Instala el paquete dkms. Este paquete es necesario para instalar el controlador PCIe de Hailo.
sudo apt update
sudo apt install dkms
Obtén el controlador Hailo PCIe desde GitHub.
git clone https://github.com/hailo-ai/hailort-drivers
cd hailort-drivers/linux/pcie
git checkout 24e7ff2fb58fab7029024c1a1d3f2d1914f56d7b
Luego, instala el controlador PCIe de Hailo.
sudo make install_dkms
Después de la instalación, descarga el firmware para Hailo y cópialo al directorio /lib/firmware/hailo
.
cd ../..
./download_firmware.sh
sudo mkdir -p /lib/firmware/hailo
sudo cp hailo8_fw*.bin /lib/firmware/hailo/hailo8_fw.bin
Para evitar el problema de PCIe max_desc_page_size, también necesitamos crear una regla en /etc/modprobe.d/hailo_pci.conf
con el siguiente contenido.
options hailo_pci force_desc_page_size=4096
Reinicia el sistema para que surta efecto.
sudo reboot
Después de reiniciar el sistema, el controlador PCIe de Hailo se instala exitosamente. Se creará el dispositivo /dev/hailo0
. Verifica el dispositivo ejecutando el siguiente comando.
$ ls /dev/hailo*
/dev/hailo0
Instalar Frigate NVR
En esta parte, asumimos que tienes tu cámara configurada y lista para transmitir con protocolo RTSP en resolución 1920x1080.
- URL RTSP de ejemplo:
rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0
Paso 1: Preparar el Entorno
-
Actualiza tu sistema:
sudo apt update
-
Instalar Docker:
curl -fsSL get.docker.com | bash
sudo usermod -aG docker $USER -
Reinicia el sistema:
sudo reboot
Paso 2: Desplegando Frigate
-
Descargar la Imagen de Frigate:
Ve a Package frigate, elige una imagen con el sufijo
-h8l
. En este ejemplo, elegimosghcr.io/blakeblackshear/frigate:0.15.0-rc2-h8l
.docker pull ghcr.io/blakeblackshear/frigate:0.15.0-rc2-h8l
-
Crear Archivo Docker Compose:
Aquí tienes un ejemplo del archivo
frigate.yml
, el dispositivohailo0
es el que creaste en el paso anterior, los archivos de configuración están en el directorio./config
y los archivos de datos están en el directorio./data
.:services:
frigate-hailo:
container_name: frigate-hailo
privileged: true
restart: unless-stopped
image: ghcr.io/blakeblackshear/frigate:0.15.0-rc2-h8l
shm_size: 1024mb
devices:
- /dev/hailo0:/dev/hailo0
volumes:
- /etc/localtime:/etc/localtime:ro
- ./config/:/config
- ./data/db/:/data/db
- ./data/storage:/media/frigate
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1g
ports:
- 5000:5000 -
Editar Configuración de Frigate:
Aquí tienes un ejemplo del archivo
config/config.yml
, que es para la aplicación Frigate:database:
path: /data/db/frigate.db
go2rtc:
streams:
home:
- rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0
cameras:
home:
ffmpeg:
inputs:
- path: rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0
roles:
- record
- detect
mqtt:
enabled: False
objects:
track:
- person
- cat
detectors:
hailo8l:
type: hailo8l
device: PCIe
model:
width: 300
height: 300
model_type: ssd
path: /config/model_cache/h8l_cache/ssd_mobilenet_v1.hef
version: 0.15-1 -
Iniciar Instancia de Docker:
docker compose -f frigate.yml up -d
Después de que Frigate esté funcionando, puedes acceder a la interfaz web de Frigate en
http://<tu-raspberry-pi-ip>:5000
para verificar la transmisión de la cámara.
Seeed Frigate
Modificar configuración PCIe
Abrir config.txt
sudo nano /boot/firmware/config.txt
Añade el siguiente texto a config.txt
dtparam=pciex1_gen=3
dtoverlay=pciex1-compat-pi5,no-mip
Luego usa Ctrl+x
para guardar el archivo y reiniciar la caja de IA
Instalar docker y hailo-all
sudo apt update
sudo apt install hailo-all
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
sudo apt install docker-compose-plugin
Crear archivo yml
Crear frigate.yml para docker compose para ejecutar frigate
cd ~
sudo nano frigate.yml
Aquí tienes un ejemplo de frigate.yml
version: "3.9"
services:
frigate-hailo:
container_name: frigate-hailo
privileged: true
restart: unless-stopped
image: frigate_seeed:latest
shm_size: 1024mb
environment:
- HAILO_MONITOR=1
devices:
- /dev/hailo0:/dev/hailo0
volumes:
- /etc/localtime:/etc/localtime:ro
- ./config/:/config
- ./data/db/:/data/db
- ./data/storage:/media/frigate
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- 5000:5000
- 1984:1984
- 5002:5002
- 5003:5003
Descarga el modelo yolo y crea config.yml.
mkdir config && cd config && mkdir model_cache
cd model_cache && wget https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v2.14.0/hailo8/yolov8n.hef
cd .. && nano config.yml
Aquí hay un ejemplo de config.yml
database:
path: /data/db/frigate.db
go2rtc:
streams:
home:
- rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1
home1:
- rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1
yard:
- rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1
yard1:
- rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1
cameras:
home:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/home
roles:
- detect
motion:
threshold: 45
contour_area: 60
improve_contrast: true
yard:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/yard
roles:
- detect
motion:
threshold: 45
contour_area: 60
improve_contrast: true
home1:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/home1
roles:
- detect
motion:
threshold: 45
contour_area: 60
improve_contrast: true
yard1:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/yard1
roles:
- detect
motion:
threshold: 45
contour_area: 60
improve_contrast: true
mqtt:
enabled: false
objects:
track:
- person
- cat
detectors:
hailo8l:
type: hailo8l
device: PCIe
model:
width: 640
height: 640
path: /config/model_cache/yolov8n.hef
version: 0.16-0
camera_groups:
test:
order: 1
icon: LuAlignEndHorizontal
cameras:
- home
- home1
- yard
- yard1
Descargar imagen de docker y ejecutar frigate
Descargar imagen frigate_seeed
cd ~
docker pull mjqx2023/frigate_seeed
docker compose -f frigate.yml start
Luego abre localhost:5000
en el navegador web de tu AI box:
Soporte Técnico y Discusión de Productos
¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.