Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Frigate NVR et intégration dans Home Assistant
#1
Frigate est un logiciel NVR à base d'IA dont l'objectif est de gérer des caméras IP et tout ce qui va avec : snapshot, détection, enregistrement


Voici ses avantages à mon sens : 
  • Excellente détection
  • Pas de licence à payer
  • Intégration parfaite dans Home Assistant

Je l'utilise depuis un an environ, dans un premier temps en parallèle de Surveillance Station, avant de basculer complètement sur Frigate.

L'achat d'un tpu Coral est souvent conseillé pour gérer la détection de manière plus rapide et économiser la ressource CPU du serveur, en ce qui me concerne je n'en vois pas l'utilité sur mon mini PC en Ryzen 5650u.

Il peut être installé en tant qu'addon pour Home Assistant, ou en tant que conteneur Docker. C'est cette deuxième solution que j'ai choisi et que je vais décrire.

Voici la documentation d'installation : https://docs.frigate.video/frigate/installation/

Le plus simple est de créer un stack avec Portainer, voici mon docker compose :

Code :
version: "3.9"
services:
 frigate:
   container_name: frigate
   restart: unless-stopped
   image: ghcr.io/blakeblackshear/frigate:stable
   shm_size: "128mb" # update for your cameras based on calculation above
   volumes:
     - /etc/localtime:/etc/localtime:ro
     - /home/aurelien/frigate/config/:/config/
     - video-surveillance:/media/frigate
     - type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
       target: /tmp/cache
       tmpfs:
         size: 1000000000
   ports:
     - "5000:5000"
     - "8555:8555/tcp" # WebRTC over tcp
     - "8555:8555/udp" # WebRTC over udp
     - "8554:8554"
   environment:
     FRIGATE_RTSP_PASSWORD: "password"
volumes:
video-surveillance:
   driver: local
   driver_opts:
     type: "nfs4"
     o: "addr=192.168.1.10,rw"
     device: ":/volume1/surveillance"

Le volume "video-surveillance" correspond à un partage NFS qui se situe sur mon NAS afin de stocker les enregistrements des caméras.

Tout le reste sera stocké (base de données et configuration) en local sur le mini pc.

Voici mon fichier de configuration config.yml  à positionner dans le répertoire que vous avez défini sur votre docker composer (dans mon cas : /home/aurelien/frigate/config/config.yml) :

Code :
mqtt:
 host: 192.168.1.11
 port: 1883
 user: frigate
 password: 'password'

objects:
 track:
   - person
 filters:
   person:
     min_area: 5000
     max_area: 100000
     min_score: 0.7
     threshold: 0.8

birdseye:
 enabled: false
rtmp:
 enabled: false

detectors:
 cpu1:
   type: cpu
   num_threads: 3
 cpu2:
   type: cpu
   num_threads: 3
 cpu3:
   type: cpu
   num_threads: 3
 cpu4:
   type: cpu
   num_threads: 3
 cpu5:
   type: cpu
   num_threads: 3

go2rtc:
 streams:
   jardin:
     - rtsp://admin:password@192.168.1.19:554/Streaming/Channels/101
   jardin_sub:
     - rtsp://admin:password@192.168.1.19:554/Streaming/Channels/102
   terrasse:
     - rtsp://admin:password@192.168.1.15:554/Streaming/Channels/101
   terrasse_sub:
     - rtsp://admin:password@192.168.1.15:554/Streaming/Channels/102
   garage:
     - rtsp://admin:password@192.168.1.18:554/Streaming/Channels/101
   garage_sub:
     - rtsp://admin:password@192.168.1.18:554/Streaming/Channels/102
   devanture:
     - rtsp://admin:password@192.168.1.16:554/Streaming/Channels/101
   devanture_sub:
     - rtsp://admin:password@192.168.1.16:554/Streaming/Channels/102
   salon:
     - rtsp://admin:password@192.168.1.17:554/Streaming/Channels/101
   salon_sub:
     - rtsp://admin:password@192.168.1.17:554/Streaming/Channels/102
       
   
cameras:
 jardin:
   ffmpeg:
     inputs:
       - path: rtsp://127.0.0.1:8554/jardin
         input_args: preset-rtsp-restream
         roles:
           - record
       - path: rtsp://127.0.0.1:8554/jardin_sub
         input_args: preset-rtsp-restream
         roles:
           - detect
   detect:
     width: 640
     height: 360
     fps: 4
   snapshots:
     enabled: True
   record:
     enabled: True
     retain:
       days: 0
     events:
       retain:
         default: 10
         mode: active_objects
 terrasse:
   ffmpeg:
     inputs:
       - path: rtsp://127.0.0.1:8554/terrasse
         input_args: preset-rtsp-restream
         roles:
           - record
       - path: rtsp://127.0.0.1:8554/terrasse_sub
         input_args: preset-rtsp-restream
         roles:
           - detect
   detect:
     width: 640
     height: 360
     fps: 4
   snapshots:
     enabled: True
   record:
     enabled: True
     retain:
       days: 0
     events:
       retain:
         default: 10
         mode: active_objects
 devanture:
   ffmpeg:
     inputs:
       - path: rtsp://127.0.0.1:8554/devanture
         input_args: preset-rtsp-restream
         roles:
           - record
       - path: rtsp://127.0.0.1:8554/devanture_sub
         input_args: preset-rtsp-restream
         roles:
           - detect
   detect:
     width: 640
     height: 360
     fps: 4
   snapshots:
     enabled: True
   record:
     enabled: True
     retain:
       days: 0
     events:
       retain:
         default: 10
         mode: active_objects
 salon:
   ffmpeg:
     inputs:
       - path: rtsp://127.0.0.1:8554/salon
         input_args: preset-rtsp-restream
         roles:
           - record
       - path: rtsp://127.0.0.1:8554/salon_sub
         input_args: preset-rtsp-restream
         roles:
           - detect
   detect:
     width: 640
     height: 480
     fps: 4
   snapshots:
     enabled: True
   record:
     enabled: True
     retain:
       days: 0
     events:
       retain:
         default: 10
         mode: active_objects
 garage:
   ffmpeg:
     inputs:
       - path: rtsp://127.0.0.1:8554/garage
         input_args: preset-rtsp-restream
         roles:
           - record
       - path: rtsp://127.0.0.1:8554/garage_sub
         input_args: preset-rtsp-restream
         roles:
           - detect
   detect:
     width: 640
     height: 480
     fps: 4
   snapshots:
     enabled: True
   record:
     enabled: True
     retain:
       days: 0
     events:
       retain:
         default: 10
         mode: active_objects

La partie MQTT correpond à votre broker mqtt (en ce qui me concerne,  ce broker tourne sur home assistant, c'est donc l'ip Home Assistant qu'il faudra saisir si vous faites comme moi.

La partie Go2RTC permet de déclarer vos flux de caméras, j'en utilise 2 par caméra, un en basse résolution pour la détection et un en haute résolution pour l'enregistrement. 

Une fois votre configuration réalisée, vous pouvez redémarrer votre stack Docker depuis Portainer (par exemple) et accèder à l'interface Web pour vérifier que tout est ok : http://ipdocker:5000/ 

L'étape suivante consiste à ajouter l'intégration Frigate pour Home Assistant afin de pouvoir visualiser vos caméras et vos enregistrements depuis l'application Home Assistant (il n'existe pas d'application Frigate à ma connaissance) : https://github.com/blakeblackshear/friga...ntegration

Vous pourrez enfin ajouter des cartes frigate dans vos dashboards pour visualiser vos caméras, mais également les switchs créés automatiquement pour activer / désactiver la détection :

Code :
type: entities
entities:
 - entity: switch.frigate_detect
 - entity: switch.devanture_detect
 - entity: switch.terrasse_detect
 - entity: switch.jardin_detect
 - entity: switch.garage_detect
 - entity: switch.salon_detect
title: Détection
show_header_toggle: false


J'essaierai de compléter un peu ce tuto et d'ajouter des images quand j'aurai un peu plus de temps, d'ici la si il vous manque des infos n'hésitez pas à me le signaler !
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)