Echanges sur Frigate

Je constate que sur le forum nous sommes un certain nombre à utiliser frigate. Si l’outil semble vraiment intéressant, je trouve l’abord pas particulièrement simple. C’est encore un outil très jeune et les changement entre versions nombreux et significatifs. Je viens de me lancer avec la 0.9.0rc1 et j’ai bêtement suivi la doc. Manque de bol, plusieurs choses, notamment les clips ne se configurent plus pareil.
Donc, après avec épluché (parcouru) les 5000 post du forum sur le sujet, le dépôt github avec les 130 issues, je me dis que c’est peut-être l’occasion de partager nos expériences sur le sujet.

J’ai acheté un coral sur port USB (Google USB Coral - Accélérateur Edge IA). J’ai d’abord commencé sur un odroid C2 que j’avais en rab. Premier souci, il faut un port USB3. J’ai mis un hub et c’est parti (à la vitesse USB2, mais au moins le coral est content).

Ensuite, installation va docker via Installation | Frigate et ça démarre une fois que le config.yaml va bien. Sur l’odroid C2, ça ramait vraiment trop, j’ai donc ressorti un vieux (2014) PC zotac que j’avais (CPU intel i5 de l’époque, 4GB de RAM, port USB3) et ça marche beaucoup mieux.

Voici un extrait de mon config.yaml (j’ai d’autres caméra, mais, la config est identique):

detectors:
  coral:
    type: edgetpu
    device: usb

record:
  enabled: false
  retain_days: 7

snapshots:
  retain:
    default: 6

objects:
  track:
    - person
    
mqtt:
  host: 192.168.1.104
  port: 1883
  topic_prefix: frigate

ffmpeg:
  hwaccel_args:
    - -hwaccel
    - vaapi
    - -hwaccel_device
    - /dev/dri/renderD128
    - -hwaccel_output_format
    - yuv420p

cameras:
  jardin:
    ffmpeg:
      inputs:
        - path: rtsp://...
          roles:
            - detect
            - rtmp
            - record
    detect:
      enabled: true
      width: 1280
      height: 720
      fps: 5
    snapshots:
      enabled: true
      timestamp: false
      bounding_box: true
    motion:
      mask:
        - 368,720,367,529,473,419,536,413,600,396,604,242,857,0,474,0,0,0,0,720
    record:
      enabled: true
      retain_days: 0
      events:
        enabled: true
        max_seconds: 300
        pre_capture: 5
        post_capture: 5
        objects:
          - person
        retain:
          default: 10

Avec ça, je détecte bien les person, j’ai un clip/enregistrement à chaque détection, ça envoie bien ce qu’il faut sur mosquitto. Ca marche.

J’ai intégré les cameras sur HA. Avec l’object camera crée par l’intégration frigate (qu’il faut installer sur HA via HACS), j’ai bien la caméra mais avec un rafraichissement toutes les 10 secondes. Je n’ai pas compris si c’était comme ça, si c’était ma conf ou… Je cherche.

Les hwaccel_args font une différence. Pour quelques systèmes Rpi, intel, c’est précisé. Mais pour le reste…

Voilà une brève introduction. Si vous avez des infos complémentaires ou des trucs à donner, faisons le en français et pas au milieu de 5000 posts :slight_smile:

2 « J'aime »

Hello,

Oui pour ceux qui commencent, il vaut mieux s’amuser directement à utiliser la syntaxe 0.9.x la release est de toute façon super proche…
Mon docker-compose (ben oui j’en parle ailleurs) est dispo ici Containers Docker - #7 par Karibou54
Mais le voilà en direct (sur un pi4):

version: "3.9"

networks:
  nvr:
    name: nvr

services:
  frigate:
    image: blakeblackshear/frigate:0.9.0-rc2-aarch64
    container_name: frigate
    hostname: frigate
    privileged: true # this may not be necessary for all setups
    restart: unless-stopped
    shm_size: '1gb'
    devices:
      - /dev/bus/usb:/dev/bus/usb
      # VAAPI Devices
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/dri/card0
      # RPi 4
      - /dev/vchiq:/dev/vchiq
    environment:
      - TIMEZONE=Europe/Paris
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - /dev/shm:/config/data/transcoding-temp/transcodes
      - /opt/vc/lib:/opt/vc/lib   ## OpenMax Libraries
      - ./config/frigate.yml:/config/config.yml:ro
      - ./media/:/media/frigate
      - type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    ports:
      - "5000:5000"
      - "1935:1935" # RTMP feeds
    environment:
      FRIGATE_RTSP_PASSWORD: "password"
    networks: 
      - nvr

Plus d’excuse @golfvert :wink:

Coté hwaccel_args sur PI c’est light de chez light au niveau de la doc… j’ai pas encore trouvé la meilleur combinaison

Pour l’intégration des caméras, je suis partie sur l’intégration onvif qui offre un flux vidéo de bonne fluidité (avec qq secondes de déclage)…
Et j’ai un carte sur laquelle traine les boutons du PTZ, la bascule en grande pop up et les positions preset
image

type: picture-glance
title: Contre-allée
image: https://demo.home-assistant.io/stub_config/kitchen.png
entities:
  - entity: camera.contre_allee_onvif_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.contre_allee_onvif_mainstream
        pan: LEFT
        speed: 0.5
        distance: 0.5
        move_mode: ContinuousMove
    name: Pan Left
    show_state: false
    icon: mdi:arrow-left
    show_icon: true
  - entity: camera.contre_allee_onvif_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.contre_allee_onvif_mainstream
        tilt: UP
        speed: 0.5
        distance: 0.5
        move_mode: ContinuousMove
    name: Pan Up
    show_state: false
    icon: mdi:arrow-up
    show_icon: true
  - entity: camera.contre_allee_onvif_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.contre_allee_onvif_mainstream
        tilt: DOWN
        speed: 0.5
        distance: 0.5
        move_mode: ContinuousMove
    name: Pan Down
    show_state: false
    icon: mdi:arrow-down
    show_icon: true
  - entity: camera.contre_allee_onvif_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.contre_allee_onvif_mainstream
        pan: RIGHT
        speed: 0.5
        distance: 0.5
        move_mode: ContinuousMove
    name: Pan Right
    show_state: false
    icon: mdi:arrow-right
    show_icon: true
  - entity: camera.contre_allee_onvif_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.contre_allee_onvif_mainstream
        zoom: ZOOM_OUT
        speed: 0.5
        distance: 0.5
        move_mode: ContinuousMove
    name: Zoom-
    show_state: false
    icon: mdi:magnify-minus
    show_icon: true
  - entity: camera.contre_allee_onvif_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.contre_allee_onvif_mainstream
        zoom: ZOOM_IN
        speed: 0.5
        distance: 0.5
        move_mode: ContinuousMove
    name: Zoom+
    show_state: false
    icon: mdi:magnify-plus
    show_icon: true
  - entity: camera.contre_allee_onvif_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.contre_allee_onvif_mainstream
        preset: 1
        speed: 0.5
        distance: 0.5
        move_mode: GotoPreset
    name: Preset 1
    show_state: false
    icon: mdi:numeric-1-box
    show_icon: true
  - entity: camera.contre_allee_onvif_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.contre_allee_onvif_mainstream
        preset: 2
        speed: 0.5
        distance: 0.5
        move_mode: GotoPreset
    name: Preset 2
    show_state: false
    icon: mdi:numeric-2-box
    show_icon: true
  - entity: camera.contre_allee_onvif_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.contre_allee_onvif_mainstream
        preset: 3
        speed: 0.5
        distance: 0.5
        move_mode: GotoPreset
    name: Preset 3
    show_state: false
    icon: mdi:numeric-3-box
    show_icon: true
camera_image: camera.contre_allee_onvif_mainstream
camera_view: live

J’aimerai ajouter une iframe avec frigate mais bon https ne rends pas les choses simples donc pour l’instant j’ai rien fait… J’accès aux images via le lecteur multimédia de HA puisque j’ai branché l’intégration HACS

La lecture vidéo par ce biais est bizarre

Gloablement ça consomme pas mal de cpu mais ça fonctionne bien. Quelques faux positifs :

  • une cheminée qui prends pour une personne !
  • des feuilles prises pour des oiseaux… voir un nuage (mouette ?)

J’ai pas encore eu l’occasion de croiser une pizza … du coup j’ai pas laissé tourné cette recherche (les plantes en pôts ça marche bien par contre).
Ne pas hésiter à exploiter la notion de masque… ça fait gagner pas mal en perf… Les voitures dans le ciel, c’est de toute façon assez rare

J’ai testé :slight_smile: A part la config pour le bridge que composerize ne donne pas, le reste RAS.

Ca fait deux flux réseaux vers les caméras… Comme certaines sont accessibles via mon réseau CPE, je préfère une solution « locale », HA et le boitier frigate sont le même switch. J’ai vu ça New Frigate Lovelace card for Home Assistant · Discussion #1590 · blakeblackshear/frigate · GitHub mais je n’ai pas testé.

1 « J'aime »

Oui 2 flux depuis la caméra… En local également puisque ça passe pas par le cloud…
Et chez moi c’est séparé. Ha sur la vm du nuc et frigate sur le pi4

J’ai vu cette carte effectivement… J’ai gardé la mienne à cause du ptz

Très interessant ! J’ai aussi en projet de tester. Est ce que quelqu’un a testé une clé Google Coral Accelerator (en sachant que c’est compliqué de se les procurer en France) ?

Hello
Justement c’est avec une usb additionnelle dans mon cas.
Commandée en Allemagne, livrée en moins d’une semaine (quand elles étaient en stock)

1 « J'aime »

Oui, j’en ai une achetée chez Kubii.

1 « J'aime »

De mes constatations, frigate est vraiment très bien pour la détection, moins pour la visualisation temps réel. Pour éviter d’avoir plusieurs flux vers mes caméras (je m’y connecte en ethernet via CPL), j’ai installé https://github.com/aler9/rtsp-simple-server qui permet de faire un proxy (entre autre) rstp. Donc, le proxy établit LE flux vers les caméras, frigate et les autres outils (qui eux sont sur le même switch réseau ou sur le même NUC que le proxy) utilisent ce relai. Je ne vois pas de retard significatif avec ce proxy au milieu.

1 « J'aime »

Hello,

Oui ça fait partie des trucs prévus chez moi aussi… La version à installer marche bien mais la version docker est pas au top de sa forme (du moins la version actuelle sur dockerhub)
Après niveau flux, quand il y a 2 clients ça fait toujours 2 flux au moins … Soit

  • 2 directs entre la camera et les clients
  • 1 entre la camera et le relais, puis 2 vers clients.
    Le 1er cas fonctionne : caméra et le réseau support le choc, dans le cas n°2 c’est mon PI qui va déjà devoir faire relay alors qu’il est déjà bien chargé avec le décodage frigate … Pas certain que ça fasse tout seul du multicast. Donc à tester en conditions réelles

Avec mes 48h de recul, ça marche. Je suis sur un vieux mini PC avec CPU Intel.

Effectivement, ma ressource critique c’est plus la bande passante sur le CPL que le mini PC qui ne fait que ça.

Ah ?
image

2021/09/01 19:50:57 I [0/0] rtsp-simple-server v0.17.2
2021/09/01 19:50:57 I [0/0] [RTSP] UDP/RTP listener opened on :8000
2021/09/01 19:50:57 I [0/0] [RTSP] UDP/RTCP listener opened on :8001
2021/09/01 19:50:57 I [0/0] [RTSP] TCP listener opened on :8554
2021/09/01 19:50:57 I [0/0] [RTMP] listener opened on :1935
2021/09/01 19:50:57 I [0/0] [HLS] listener opened on :8888

Mais pas d’api !

  rtsp-simple-server:
    image: aler9/rtsp-simple-server:latest
    ports:
      # [RTMP] listener opened on :1935
      # - 1935
      # [RTSP] UDP/RTP listener opened on :8000
      # - 8000:8000
      # [RTSP] UDP/RTCP listener opened on :8001
      # - 8001:8001
      # [RTP] UDP-multicast listeners opnened on :8002
      # - 8002:8002
      # [RTCP] UDP-multicast listeners opnened on :8003
      # - 8003:8003
      # [RTSP] TCP listener opened on :8554
      - 8554:8554
      # [RTSPS] TCP/TLS listener opened on :8555
      # - 8555:8555
      # [HLS] listener opened on :8888
      # - 8888:8888
      # API listener opened on :9997
      - 9997:9997
      # metrics listener opened on :9998
      # - 9998:9998
      # pprof listener: 9999
      # - 9999:9999
    restart: unless-stopped
    environment:
      - TIMEZONE=Europe/Paris
    volumes:
      - ./config/rtsp-simple-server.yml:/usr/local/etc/rtsp-simple-server.yml
    networks:
      - nvr

Il y a une « finesse » que j’ai constaté. Le log qui apparait c’est le résultat de la lecture du fichier de config et pas la réalité de ce que tu as donné à docker comme config.
Dans ton compose, tu es sur de:

Dans la doc il est indiqué que le fichier de conf est sous la racine.

volumes:
      - ./config/rtsp-simple-server.yml:/rtsp-simple-server.yml

Et c’est dans le fichier de config, que tu peux déclarer que l’api va écouter sur telle IP et pas seulement le localhost.

1 « J'aime »

Exact, bien vu !

ça c’est déjà fait
image

Bon j’aurai pas trop le temps de tester :beach_umbrella: pour les 15 prochains jours mais ça mérite d’y jeter un oeil plus en détails : merci

Hello,

J’ai tout de configuré un peu comme vous. Je suis sur unraid du coup et avec mon vieux pc i5, j’avais le m.2 de libre j’ai pris chez rs composant c’est bien moins cher que l’usb (35€ fdp in).
J’avais une question pous vous le choix des cameras vous avez du recul ? Je cherche des poe avec un kon rapport prix/qualité et vison de nuit.
Je mettrais les configs une fois l’installation finies c’est pour dans au moins un mois :sweat_smile:

Personnellement j’ai 2 caméra anpviz : Poe, infra rouge, 5mp, zoom optique, étanches IP66. H. 265 mais rétro compatibles H.264 (primordial pour frigate)…

  • IPC-Z35505ES, zoom 5x et PTZ
  • IPC-B750W-DS-4X, zoom 4x

J’ai vraiment rien à redire sur les performances et la qualité d’image… C’est beau grand et fluide. Mais j’ai pas forcément de recul sur la durée de vie même si la qualité de fabrication semble très correcte

@golfvert Effectivement avec la configuration au bon endroit c’est mieux. Merci pour tes yeux

Quand tu as besoin d’un expert docker-compose, n’hésite pas! :rofl:

2 « J'aime »

3 messages ont été scindés en un nouveau sujet : CCTV et Législation

Pour continuer avec le sujet frigate et la détection d’objets qui marche vraiment très bien, j’ai automatisé l’ouverture du garage quand on rentre le soir du boulot à vélo.
Le scenario est le suivant:
1er évènement: ouverture du portail sur la rue (fait avec un badge sur le portier vidéo grandstream)
2ème et 3ème évènement la caméra qui surveille ma cour détecte une personne et un vélo le tout dans les 15 secondes qui suivent l’'ouverture du portail
Enfin si on est du lundi au vendredi en fin d’après-midi, heure de rentrée du boulot, alors le garage à vélo s’ouvre tout seul :slight_smile:

Etant nodered-iste voilà ce que ça donne:

Ca me donne l’occasion d’un petit défi…
Pour les yaml-istes (je ne vise personne :wink: ) comment vous feriez cette succession de « ET » (en gros trois booléen qui passent à vrai, le 1 d’abord puis 2 et 3 -ou 3 et 2-) et le contrôle sur heure et jour à la fin?

C’est dans ce genre de cas un peu tordu (j’en ai deux trois autres comme ça), je me dis qu’en yaml :scream:

1 « J'aime »

je vous partage une blueprint efficace pour avoir les notifications sur les téléphones :
https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgist.github.com%2Fhunterjm%2F23c1588a9f2b8b9c2a62ffc364e17f8c