Configuration minimale pour Frigate

Bonjour,

J’ai installé frigate sur une machine et frigate proxy sur mon Home Assistant.
Ça marchait bien, j’avais un flux rapide RTC jusqu’à ce que je touche à la configuration car j’ai ajouté une caméra pour mon portier et là c’est la catastrophe !
Plus rien ne fonctionne, j’ai remis l’ancienne configuration mais ça ne fonctionne pas bien: frigate semble fonctionner mais plus la caméra dans ma vue caméra (hors frigate).
Je tiens à signaler que l’installation de Frigate a eu lieu avant l’intégration de go2rtc à HA et ça m’a posé bien des problèmes !
Ce que j’aimerais c’est juste une « config minimale » qui fonctionne.
Franchement, une caméra, un frigate et un frigate proxy ça ne devrait pas poser autant de problème !

NB : j’ai mis entre crochet les login / mdp que j’ai supprimé pour ne pas les afficher ici.

Voici ma configuration :
NAS Synology, Home Assistant sur une VM : IP = 192.168.0.52
Frigate proxy sur le Home assistant.
Mini PC : frigate sur un docker : IP = 192.168.0.60
Caméra HIKVision : IP = 192.168.0.56

J’ai un fichier go2rtc.yaml dans HA, je ne sais pas à quoi il sert, ni s’il est correct :
Et j’ai un compte https://dashboard.ngrok.com/ est-il nécessaire ?

webrtc:
  listen: ":8555" # external TCP/UDP port
  candidates:
    - stun:8555

ngrok:
  command: ngrok tcp 8555 --authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Pour frigate j’ai la configuration suivante :

version: 0.16-0

# Pour reset mot de passe activer les deux lignes en dessous
# Relancer le docker puis lancer la commande
# docker logs frigate
# Vous verrez le mot de passe nouvellement généré
#auth:
#  reset_admin_password: true

mqtt:
  enabled: true
  host: 192.168.0.52
  user: [usermqtt]
  password: [passmqtt]
  port: 1883

cameras:
  # Flux vidéo de la caméra jardin arrière
  camera_jardin:
    ffmpeg:
      inputs:
        - path: rtsp://[loginfrigatecamera]:[passfrigatecamera]@192.168.0.56:554/Streaming/Channels/101
          input_args: preset-rtsp-restream
          roles:
            - record
        - path: rtsp://[loginfrigatecamera]:[passfrigatecamera]@192.168.0.56:554/Streaming/Channels/102
          input_args: preset-rtsp-restream
          roles:
            - detect
    detect:
      enabled: true
      width: 704  # largeur de l'image du flux secondaire (en pixels)
      height: 576 # hauteur de l'image du flux secondaire (en pixels)

detectors:
  coral:
    type: edgetpu
    device: usb

record:
  enabled: true
  retain:
    days: 7
    mode: all
  alerts:
    retain:
      days: 7
    pre_capture: 10
    post_capture: 10
  detections:
    retain:
      days: 7
    pre_capture: 10
    post_capture: 10
snapshots:
  enabled: true

objects:
  track:
    - person
    - cat
    - dog

# Désactiver le certificat pour le reverse proxy
tls:
  enabled: false

detect:
  enabled: true

Avant j’avais ça en plus dans la configuration frigate, je pense que ce n’est plus nécessaire.

go2rtc:
 webrtc:
   listen: :8555   # external TCP/UDP port
   candidates:
     - stun:8555

 ngrok:
   command: ngrok tcp 8555 --authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxx

Je vois ma caméra (flux basse résolution) sur Frigate.
Aussi bien sur Frigate en direct que sur le Frigate Proxy sur le Home Assistant.

Par contre, cela ne fonctionne plus sur la vue caméra :

title: Caméras
icon: mdi:webcam
path: cameras
type: custom:layout-card
layout_type: grid
layout:
  max_cols: 2
  cols: 2
  grid-template-columns: 100%
  place-content: center
cards:
  - type: custom:layout-card
    layout_type: grid
    min_size: 200
    layout:
      max_cols: 2
      grid-template-columns: 75% 25%
      grid-template-rows: auto
      grid-template-areas: |
        "left right"
    cards:
      - type: custom:webrtc-camera
        view_layout:
          grid:area: left
        url: >-
          rtsp://[loginhomeassistant]:[passwordhomeassistant]@192.168.0.56:554/Streaming/Channels/101
        poster: https://home-assistant.io/images/cast/splash.png
        server: http://localhost:11984/
        title: null
        muted: true
        background: true
        mode: webrtc,mse,mp4,mjpeg
        camera_view: live
        ui: true
        style: >-
          .pictureinpicture {display: none} .screenshot {display: none}       
          ptz: service: onvif.ptz data_left:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            pan: LEFT
            speed: 1
            distance: 0.3
            move_mode: ContinuousMove
          data_right:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            pan: RIGHT
            speed: 1
            distance: 0.3
            move_mode: ContinuousMove
          data_up:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            tilt: UP
            speed: 1
            distance: 0.3
            move_mode: ContinuousMove
          data_down:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            tilt: DOWN
            speed: 1
            distance: 0.3
            move_mode: ContinuousMove
          data_zoom_in:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            zoom: ZOOM_IN
            move_mode: ContinuousMove
          data_zoom_out:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            zoom: ZOOM_OUT
            move_mode: ContinuousMove
      - type: entities
        title: Caméra Jardin
        min_width: 200
        view_layout:
          grid:area: right
        entities:
          - entity: switch.camera_jardin_detect
            name: Détection
          - entity: camera.hikvision_ds_2de2a404iw_de3_mainstream
            type: button
            name: Terrasse
            show_state: false
            icon: mdi:home
            show_icon: true
            tap_action:
              action: call-service
              service: onvif.ptz
              service_data:
                entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
                preset: 1
                speed: 0.1
                distance: 0.5
                move_mode: GotoPreset
          - entity: camera.hikvision_ds_2de2a404iw_de3_mainstream
            type: button
            name: Barbecue
            show_state: false
            icon: mdi:fireplace
            show_icon: true
            tap_action:
              action: call-service
              service: onvif.ptz
              service_data:
                entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
                preset: 2
                speed: 0.1
                distance: 0.5
                move_mode: GotoPreset
          - entity: camera.hikvision_ds_2de2a404iw_de3_mainstream
            type: button
            name: Allée
            show_state: false
            icon: mdi:road
            show_icon: true
            tap_action:
              action: call-service
              service: onvif.ptz
              service_data:
                entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
                preset: 3
                speed: 0.1
                distance: 0.5
                move_mode: GotoPreset
visible:
  - user: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  - user: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  - user: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  - user: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  - user: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  - user: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  - user: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Les deux flux (en direct) fonctionnent :
rtsp://[loginfrigatecamera]:[passfrigatecamera]@192.168.0.56:554/Streaming/Channels/101
rtsp://[loginfrigatecamera]:[passfrigatecamera]@192.168.0.56:554/Streaming/Channels/102

Je pense que le problème se situe au niveau de WebRTCCamera, on voit que le serveur est : http://localhost:11984/
Où est ce serveur ?
Comment se configure WebRTCCamera ?

Avant dans go2rtc j’avais ça en plus mais je crois que c’est obsolète (actuellement toute cette partie est commentée) !

# Pour faire fonctionner la carte "custom:webrtc-camera" il faut ajouter l'intégration "WebRTC Camera" en plus de RTSCToWebRTC sinon la carte ne fonctionne pas.
# Rien de ce qu'il y a ensuite semble être important.
#

# Voir : https://forum.hacf.fr/t/flux-camera-go2rtc-inutilisable/31200
# Flux RTSP qui fonctionne : rtsp://[user]:[mdp]4@192.168.0.56:554#backchannel=0

streams:
  camera_jardin:
    - camera.hikvision_ds_2de2a404iw_de3 #the name of the device not camera entity in ha
    - ffmpeg:camera_jardin#video=h264#hardware
streams:
  camera_jardin: rtsp://homeassistant:mu7mds1gnki4zz4@192.168.0.56:554/streaming/channels/101

rtsp:
  listen: ":8554"                  # rtsp server tcp port, default - 8554
  username: "loginhomeassistant"   # change the username
  password: "mdphomeassistant"     # change the password
  default_query: "video"           # optional, default codecs filters  (ie video&audio)

Voilà l’image que ça me donne :

Ce qui semble poser problème c’est le http://localhost:11984/

EDIT : J’ai trouvé ça dans configuration.yaml

# Pour la configuration de WebRTC
webrtc:
  ice_servers:
    # Add an entry for each STUN or TURN server
    - url:
        - stun.l.google.com:19302

# Pour afficher go2rtc config
# http://192.168.0.52:11984
go2rtc:
  debug_ui: true
  username: [username]
  password: [password]

Et lorsque je me rend sur la page de go2RTC : http://192.168.0.52:11984
C’est la page de go2RTC. Qui modifie ce fichier ?

# This file is managed by Home Assistant
# Do not edit it manually

app:
  modules: ["api","exec","ffmpeg","http","mjpeg","onvif","rtmp","rtsp","srtp","webrtc","ws","debug"]

api:
  listen: ":11984"
  unix_listen: "/tmp/go2rtc-pfdy8nyd/go2rtc.sock"
  allow_paths: ["/","/api","/api/frame.jpeg","/api/schemes","/api/streams","/api/webrtc","/api/ws","/api/config","/api/log","/api/streams.dot"]
  local_auth: true
  username: monuser
  password: monmdp

# ffmpeg needs the exec module
# Restrict execution to only ffmpeg binary
exec:
  allow_paths:
    - ffmpeg

rtsp:
  listen: "127.0.0.1:8554"

webrtc:
  listen: ":8555/tcp"
  ice_servers: []

Merci pour votre aide, je pense que ça doit être tout con…

Salut,

Je vais essayer de t’aider, mais j’ai aussi pas mal galéré avec Frigate, je ne suis pas un pro.

Go2RTC est déjà intégré à Frigate. De mon point de vue, c’est plus simple de l’utiliser directement avec Frigate que de l’utiliser séparément, surtout si la machine qui héberge Frigate est plus puissante que celle qui héberge Home Assistant.
Donc tout ce qui concerne go2rtc, si ce n’est pas dans le fichier de configuration de Frigate, est à supprimer.

Ngrok, je ne connais pas, mais d’après ce que j’ai vu, c’est pour accéder à distance à un service. Je te propose de supprimer tout ce qui concerne ngrok dans un premier temps. Si tu en as vraiment besoin, tu pourras le rajouter une fois que tu auras une configuration fonctionnelle.

Côté Frigate, tu as l’air de dire que ça fonctionne. J’ai une configuration proche de la tienne, sauf que dans Frigate, les flux vidéo que j’utilise sont les flux de sortie de go2rtc :

Caméra IP (flux RTSP) → go2rtc → flux RTSP sortant de go2rtc → Frigate

Ça permet d’éviter d’avoir plusieurs connexions simultanées vers les caméras.

On pourra reprendre ce point dans un second temps si besoin. Tu préfères qu’on commence par là ?

Côté Home Assistant, il te faut le module complémentaire Frigate Proxy ainsi que l’intégration Frigate pour que tout fonctionne.
Si tu les as déjà, tu peux essayer de recharger l’intégration :

Go2RTC est désormais intégré à HA, lorsque j’ai ajouté mes caméras et Frigate ce n’était pas le cas d’où des résidus qui traines ici et là.
nGrok permet l’accès à distance mais je ne sais pas du tout si c’est encore d’actualité ce truc !

Tu dis que tu as Caméra IP (flux RTSP) → go2rtc → flux RTSP sortant de go2rtc → Frigate
Et en effet je pense que c’est ça qu’il faut faire. Il faut donc que je supprime go2rtc de mon HA.
J’accède à mon go2RTC via le port 11984 : http://192.168.0.52:11984/ Que va devenir ce « service » et comment l’arrêter vu qu’il fait parti de HA ?
C’est quoi ta conf (avec une caméra) dans frigate ?
Et dans HA, quels flux tu utilises ?

On va procéder par étapes.
Je ne savais même pas que go2rtc avait été intégré à Home Assistant.

A priori, si tu n’utilises pas default_config: et que tu n’as pas déclaré go2rtc: dans ton configuration.yaml, alors go2rtc ne sera pas actif.

Donc, pour répondre à ta question, le service go2rtc ne sera pas disponible dans ton installation Home Assistant.

Je te prépare une configuration de base pour une caméra et je reviens.

Dans Home Assistant, j’utilise la carte Advanced Camera Card pour afficher le flux de mes caméras.
Ces flux sont disponibles via l’intégration Frigate, à condition que MQTT soit correctement configuré dans le fichier config.yaml de Frigate sur ton autre machine.

Edit :
Change les noms d’utilisateur / mot de passe pour mqtt et les caméras, j’ai mis les bonnes IP normalement. Tout en bas, adapte le numéro de version à la version Frigate que tu utilises, ne me demande pas pourquoi, mais c’est configuré comme ça chez moi, ça fonctionne , donc je ne touche pas :sweat_smile:
Si ça fonctionne sur frigate, retourne sur HA et recharge l’intégration Frigate pour mettre à jour.
avec cette config, go2rtc devrait etre accessible via http://192.168.0.60:1984 si tu en as besoin, mais normalement ça ne te sert à rien sauf à la mise au point peut être.

mqtt:
  # Optional: Enable mqtt server (default: shown below)
  enabled: true
  # Required: host name
  host: 192.168.0.52
  # Optional: port (default: shown below)
  port: 1883
  # Optional: topic prefix (default: shown below)
  # NOTE: must be unique if you are running multiple instances
  topic_prefix: frigate
  # Optional: client id (default: shown below)
  # NOTE: must be unique if you are running multiple instances
  client_id: frigate
  # Optional: user
  # NOTE: MQTT user can be specified with an environment variable or docker secrets that must begin with 'FRIGATE_'.
  #       e.g. user: '{FRIGATE_MQTT_USER}'
  user: mqtt
  # Optional: password
  # NOTE: MQTT password can be specified with an environment variable or docker secrets that must begin with 'FRIGATE_'.
  #       e.g. password: '{FRIGATE_MQTT_PASSWORD}'
  password: mqtt

detectors:
  coral:
    type: edgetpu
    device: usb

birdseye:
  enabled: false

# Optional: Snapshot configuration  
snapshots:
  enabled: true
  # Optional: save a clean PNG copy of the snapshot image (default: shown below)
  clean_copy: true
  # Optional: print a timestamp on the snapshots (default: shown below)
  timestamp: true
  # Optional: draw bounding box on the snapshots (default: shown below)
  bounding_box: true
  # Optional: crop the snapshot (default: shown below)
  crop: false
  # Optional: Camera override for retention settings (default: global values)
  retain:
    # Required: Default retention days (default: shown below)
    default: 15
    # Optional: Per object retention days
    objects:
      person: 15

# Optional: Record configuration
# NOTE: Can be overridden at the camera level
record:
  enabled: true
  # Optional: Number of minutes to wait between cleanup runs (default: shown below)
  # This can be used to reduce the frequency of deleting recording segments from disk if you want to minimize i/o
  expire_interval: 60
  # Optional: Retention settings for recording
  retain:
    # Optional: Number of days to retain recordings regardless of events (default: shown below)
    # NOTE: This should be set to 0 and retention should be defined in events section below
    #       if you only want to retain recordings of events.
    days: 15
    # Optional: Mode for retention. Available options are: all, motion, and active_objects
    #   all - save all recording segments regardless of activity
    #   motion - save all recordings segments with any detected motion
    #   active_objects - save all recording segments with active/moving objects
    # NOTE: this mode only applies when the days setting above is greater than 0
    #mode: active_objects
  # Optional: Event recording settings
  alerts:
    retain:
      days: 15
    pre_capture: 5
    post_capture: 5
  detections:
    retain:
      days: 15
    pre_capture: 5
    post_capture: 5
cameras:
  Garage:
    enabled: true
    ffmpeg:
      # Optional: global hwaccel args (default: auto detect)
      # NOTE: See hardware acceleration docs for your specific device
      hwaccel_args: "auto"
      inputs:
        - path: rtsp://127.0.0.1:8554/frigate1_sub
          input_args: preset-rtsp-restream
          roles:
            - detect
        - path: rtsp://127.0.0.1:8554/frigate1
          input_args: preset-rtsp-restream
          roles:
            - record
    detect:
      enabled: true
    objects:
      track:
        - person
        - cat
        - dog
      filters:
        person:
          # Optional: minimum score for the object to initiate tracking (default: shown below)
          min_score: 0.7
          # Optional: minimum decimal percentage for tracked object's computed score to be considered a true positive (default: shown below)
          threshold: 0.7
go2rtc:
  streams:
    frigate1:
      - rtsp://[loginfrigatecamera]:[passfrigatecamera]@192.168.0.56:554/Streaming/Channels/101
    frigate1_sub:
      - rtsp://[loginfrigatecamera]:[passfrigatecamera]@192.168.0.56:554/Streaming/Channels/102
  ffmpeg:
    path: '5.0'
  webrtc:
    candidates:
      - 192.168.0.60:8555
      - stun:8555

logger:
  default: info
#  logs:
#    frigate: debug

detect:
  enabled: true
version: 0.16-0

J’ai fais comme tu as dit… J’ai supprimé go2rtc de mon config HA : plus d’accès
J’ai remis comme tu as fait dans frigate.
Du coup go2rtc n’est plus accessible en http://192.168.0.52:11984/ mais désormais en http://192.168.0.60:11984/ OK

j’ai récupéré mon stream sur HA dans ma carte, j’ai juste modifié le serveur de
server: http://192.168.0.52:11984/
en
server: http://192.168.0.60:11984/
Mais :
Je suis sur un stream MSE (au lieu de RTC), c’est lent à charger, et RTC est plus fluide.
J’ai perdu (ça doit être moi avec mes styles) les flèches pour bouger la caméra ainsi que le bouton de zoom qui sont en sur impression, avec la carte :

title: Caméras
icon: mdi:webcam
path: cameras
type: custom:layout-card
layout_type: grid
layout:
  max_cols: 2
  cols: 2
  grid-template-columns: 100%
  place-content: center
cards:
  - type: custom:layout-card
    layout_type: grid
    min_size: 200
    layout:
      max_cols: 2
      grid-template-columns: 75% 25%
      grid-template-rows: auto
      grid-template-areas: |
        "left right"
    cards:
      - type: custom:webrtc-camera
        view_layout:
          grid:area: left
        url: >-
          rtsp://login:mdp@192.168.0.56:554/Streaming/Channels/101
        poster: https://home-assistant.io/images/cast/splash.png
        server: http://192.168.0.60:11984/
        title: null
        muted: true
        background: true
        mode: webrtc,mse,mp4,mjpeg
        camera_view: live
        ui: true
        style: >-
          .pictureinpicture {display: none} .screenshot {display: none} ptz:
          service: onvif.ptz data_left:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            pan: LEFT
            speed: 1
            distance: 0.3
            move_mode: ContinuousMove
          data_right:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            pan: RIGHT
            speed: 1
            distance: 0.3
            move_mode: ContinuousMove
          data_up:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            tilt: UP
            speed: 1
            distance: 0.3
            move_mode: ContinuousMove
          data_down:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            tilt: DOWN
            speed: 1
            distance: 0.3
            move_mode: ContinuousMove
          data_zoom_in:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            zoom: ZOOM_IN
            move_mode: ContinuousMove
          data_zoom_out:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            zoom: ZOOM_OUT
            move_mode: ContinuousMove
      - type: entities
        title: Caméra Jardin
        min_width: 200
        view_layout:
          grid:area: right
        entities:
          - entity: switch.camera_jardin_detect
            name: Détection
          - entity: camera.hikvision_ds_2de2a404iw_de3_mainstream
            type: button
            name: Terrasse
            show_state: false
            icon: mdi:home
            show_icon: true
            tap_action:
              action: call-service
              service: onvif.ptz
              service_data:
                entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
                preset: 1
                speed: 0.1
                distance: 0.5
                move_mode: GotoPreset
          - entity: camera.hikvision_ds_2de2a404iw_de3_mainstream
            type: button
            name: Barbecue
            show_state: false
            icon: mdi:fireplace
            show_icon: true
            tap_action:
              action: call-service
              service: onvif.ptz
              service_data:
                entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
                preset: 2
                speed: 0.1
                distance: 0.5
                move_mode: GotoPreset
          - entity: camera.hikvision_ds_2de2a404iw_de3_mainstream
            type: button
            name: Allée
            show_state: false
            icon: mdi:road
            show_icon: true
            tap_action:
              action: call-service
              service: onvif.ptz
              service_data:
                entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
                preset: 3
                speed: 0.1
                distance: 0.5
                move_mode: GotoPreset

J’y suis presque…

alors je n’utilise pas la même carte que toi, j’utilise advanced camera card, et pour récuperer le flux vidéo c’est tout simple car il remonte via l’integration Frigate (frigate1 à adapter en fonction du nom de ton flux dans go2rtc):

type: custom:advanced-camera-card
cameras:
  - camera_entity: camera.yicam
    live_provider: go2rtc
    go2rtc:
      stream: frigate1
      mode:
        - webrtc

Et au niveau de l’integration Frigate, j’ai ça (aucune idée si ça peut t’aider):

Concernant les flèches et le zoom, c’est la partie ONVIF, je n’ai pas de caméra équipé, donc difficile de t’aider sur ce point

Dans ton serveur, tu as un 1 de trop, c’est 1984 au lieu de 11984 maintenant vu que tu est hors HA, mais comme tu peux le voir, je ne m’en sert pas.

Ne pas streamer depuis ta caméra comme tu le fait : //login:mdp@192.168.0.56:554/Streaming/Channels/101
passe par le flux de sortie de go2rtc, ça sert à ça

Bon, plein de trucs qui tombent en marche.

  • Le port 11984 c’est dans les ports du docker, j’ai modifié pour mettre 1984 et ça fonctionne comme quand j’avais mis le port 11984 (j’ai modifié docker + carte)
title: Caméras
icon: mdi:webcam
path: cameras
type: custom:layout-card
layout_type: grid
layout:
  max_cols: 2
  cols: 2
  grid-template-columns: 100%
  place-content: center
cards:
  - type: custom:layout-card
    layout_type: grid
    min_size: 200
    layout:
      max_cols: 2
      grid-template-columns: 75% 25%
      grid-template-rows: auto
      grid-template-areas: |
        "left right"
    cards:
      - type: custom:webrtc-camera
        view_layout:
          grid:area: left
        url: >-
          rtsp://login:mdp@192.168.0.56:554/Streaming/Channels/101
        poster: https://home-assistant.io/images/cast/splash.png
        server: http://192.168.0.60:1984/
        title: null
        muted: true
        background: true
        mode: webrtc,mse,mp4,mjpeg
        camera_view: live
        ui: true
        style: |
          .pictureinpicture {display: none;}
          .screenshot {display: none;}
          ha-card {overflow: hidden;}
        ptz:
          service: onvif.ptz
          data_left:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            pan: LEFT
            speed: 1
            distance: 0.3
            move_mode: ContinuousMove
          data_right:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            pan: RIGHT
            speed: 1
            distance: 0.3
            move_mode: ContinuousMove
          data_up:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            tilt: UP
            speed: 1
            distance: 0.3
            move_mode: ContinuousMove
          data_down:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            tilt: DOWN
            speed: 1
            distance: 0.3
            move_mode: ContinuousMove
          data_zoom_in:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            zoom: ZOOM_IN
            move_mode: ContinuousMove
          data_zoom_out:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            zoom: ZOOM_OUT
            move_mode: ContinuousMove
      - type: entities
        title: Caméra Jardin
        min_width: 200
        view_layout:
          grid:area: right
        entities:
          - entity: switch.camera_jardin_detect
            name: Détection
          - entity: camera.hikvision_ds_2de2a404iw_de3_mainstream
            type: button
            name: Terrasse
            show_state: false
            icon: mdi:home
            show_icon: true
            tap_action:
              action: call-service
              service: onvif.ptz
              service_data:
                entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
                preset: 1
                speed: 0.1
                distance: 0.5
                move_mode: GotoPreset
          - entity: camera.hikvision_ds_2de2a404iw_de3_mainstream
            type: button
            name: Barbecue
            show_state: false
            icon: mdi:fireplace
            show_icon: true
            tap_action:
              action: call-service
              service: onvif.ptz
              service_data:
                entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
                preset: 2
                speed: 0.1
                distance: 0.5
                move_mode: GotoPreset
          - entity: camera.hikvision_ds_2de2a404iw_de3_mainstream
            type: button
            name: Allée
            show_state: false
            icon: mdi:road
            show_icon: true
            tap_action:
              action: call-service
              service: onvif.ptz
              service_data:
                entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
                preset: 3
                speed: 0.1
                distance: 0.5
                move_mode: GotoPreset
  • La carte a été corrigée, j’ai désormais les flèches et le zoom
  • J’ai mis des variables d’environnement dans mon docker (dans le fichier .env, et mis dans le docker)
    Fichier .env :
# Mots de passes utilisés par frigate

# MQTT
FRIGATE_MQTT_USER=login
FRIGATE_MQTT_PASSWORD=mdp

docker_compose :

# version: '3.9'

services:

  frigate:
    container_name: frigate
    privileged: true
    restart: unless-stopped
    image: ghcr.io/blakeblackshear/frigate:stable
    shm_size: "256mb" # update for your cameras based on calculation above
    devices:
      - /dev/bus/usb:/dev/bus/usb
      - /dev/dri/renderD128 # for intel hwaccel, needs to be updated for your hardware
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /home/feneck91/docker/frigate/config:/config
      - /mnt/frigate:/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
      - "8971:8971"
      - "1984:1984" # Pour go2rtc
    environment:
      - FRIGATE_MQTT_USER=${FRIGATE_MQTT_USER}
      - FRIGATE_MQTT_PASSWORD=${FRIGATE_MQTT_PASSWORD}
      - FRIGATE_CAMERA_JARDIN_LOGIN=${CAMERA_JARDIN_LOGIN}
      - FRIGATE_CAMERA_JARDIN_PASSWORD=${CAMERA_JARDIN_PASSWORD}

Je vais progressivement mettre mes mots de passe dans les fichiers secret…
ATTENTION : pour Frigate, toutes les variables d’environnement DOIVENT commencer par FRIGATE sinon ça ne fonctionne pas !
Reste que j’utilise WebRTC Camera et je ne sais pas à quoi il sert vraiment, certainement à avoir un flux RTC ? Visiblement en passant désormais go2RTC par frigate, je ne passe plus par ce service puisque je n’ai plus de flux RTC mais un flux MSE. D’ailleur go2RTC devrait me fournir un flux RTC. C’est ce que faisait ma carte en ayant un flux RTSP.
C’est quand même pas clair la gestion des flux de caméra !

ah oui effectivement les ports si tu le remap sur un autre dans docker c’était logique du coup d’utiliser 11984, donc fais comme tu veux tant que c’est cohérent entre docker et là où tu le utilise.
Je n’utilise pas les variables d’environnement pour la config de Frigate, si ça marche tant mieux, je ne savais pas qu’on pouvait le faire.

Il y a toujours un truc qui me chagrine, c’est que tu pointe ta webrtc-camera card directement sur ta caméra au lieu d’utiliser le flux go2rtc. Ca augmente le nombre de connexion à ta caméra et du coup ça la surcharge pour rien.

Par contre je n’ai pas bien compris, ça fonctionne comme tu veux où tu as encore des problèmes ?

Essais la carte advanced-camera-card, c’est celle qui est sensée aller avec Frigate, tu auras les flux live et les commandes PTZ ( si tu as bien configuré ONVIF dans Frigate)
J’ai un ami qui as des caméra PTZ, je récupère les infos dans la journée et je t’envoi des exemples pour Frigate et pour la carte advanced-camera-card

Ca marchotte mais ce qui te chagrine et ben ça me chagrine aussi !
Pas de flux RTC et j’ai l’impression que je transcode un peu partout ce flux caméra au lieu d’utiliser celui de frigate en effet. Bref ça marche mieux mais il y encore du travail de simplification.

Elle a l’air compliquée cette carte et moins réactive de WebRTC.
Mais elle fait plein de trucs.

Pour le moment, elle se floute et je n’ai plus rien !!
Bon, j’ai corrigé plein de trucs !

version: 0.16-0

# Pour reset mot de passe activer les deux lignes en dessous
# Relancer le docker puis lancer la commande
# docker logs frigate
# Vous verrez le mot de passe nouvellement généré
#auth:
#  reset_admin_password: true

mqtt:
  # Optional: Enable mqtt server (default: shown below)
  enabled: true
  # Required: host name
  host: 192.168.0.52
  # Optional: port (default: shown below)
  port: 1883
  # Optional: topic prefix (default: shown below)
  # NOTE: must be unique if you are running multiple instances
  topic_prefix: frigate
  # Optional: client id (default: shown below)
  # NOTE: must be unique if you are running multiple instances
  client_id: frigate
  # Optional: user
  # NOTE: MQTT user can be specified with an environment variable or docker secrets that must begin with 'FRIGATE_'.
  #       e.g. user: '{FRIGATE_MQTT_USER}'  
  user: '{FRIGATE_MQTT_USER}'
  # Optional: password
  # NOTE: MQTT password can be specified with an environment variable or docker secrets that must begin with 'FRIGATE_'.
  #       e.g. password: '{FRIGATE_MQTT_PASSWORD}'
  password: '{FRIGATE_MQTT_PASSWORD}'

#===============================================================================
#=                            Google Coral USB key                             =
#===============================================================================
detectors:
  coral:
    type: edgetpu  # Utilise le Edge TPU de la clé Coral
    device: usb    # Spécifie que la clé est connectée en USB

#===============================================================================
#=                      Optional: Snapshot configuration                       =
#===============================================================================
snapshots:
  enabled: true
  # Optional: save a clean PNG copy of the snapshot image (default: shown below)
  clean_copy: true
  # Optional: print a timestamp on the snapshots (default: shown below)
  timestamp: true
  # Optional: draw bounding box on the snapshots (default: shown below)
  bounding_box: true
  # Optional: crop the snapshot (default: shown below)
  crop: false
  # Optional: Camera override for retention settings (default: global values)
  retain:
    # Required: Default retention days (default: shown below)
    default: 15
    # Optional: Per object retention days
    objects:
      person: 15

#===============================================================================
#=                                  go2rtc                                     =
#===============================================================================
go2rtc:
  streams:
    camera_jardin:
      - rtsp://{FRIGATE_CAMERA_JARDIN_LOGIN}:{FRIGATE_CAMERA_JARDIN_PASSWORD}@192.168.0.56:554/Streaming/Channels/101
    camera_jardin_sub:
      - rtsp://{FRIGATE_CAMERA_JARDIN_LOGIN}:{FRIGATE_CAMERA_JARDIN_PASSWORD}@192.168.0.56:554/Streaming/Channels/102
  ffmpeg:
    path: '5.0'
  webrtc:
    listen: :8555   # external TCP/UDP port
    candidates:
      - 192.168.0.60:8555
      - stun:8555

#===============================================================================
#=                                  Caméras                                    =
#=                                                                             =
#= 8555 : port go2rtc                                                          =
#= 8554 : Lecture pour go2rtc                                                  =
#===============================================================================
cameras:
  # Flux vidéo de la caméra jardin arrière
  camera_jardin:
    ffmpeg:
      # Optional: global hwaccel args (default: auto detect)
      # NOTE: See hardware acceleration docs for your specific device
      hwaccel_args: auto
      inputs:
        - path: rtsp://127.0.0.1:8554/camera_jardin
          input_args: preset-rtsp-restream
          roles:
            - record
        - path: rtsp://127.0.0.1:8554/camera_jardin_sub
          input_args: preset-rtsp-restream
          roles:
            - detect
    detect:
      enabled: true
      width: 704  # largeur de l'image du flux secondaire (en pixels)
      height: 576 # hauteur de l'image du flux secondaire (en pixels)
      fps: 6
    objects:
      track:
        - person
        - cat
        - dog
    live:
      streams:
        main_stream: camera_jardin
        sub_stream: camera_jardin_sub
    onvif:
      host: 192.168.0.56
      port: 80 # Dans caméra, Configuration / Réglages de base / Port => Port du serveur
      user: '{FRIGATE_CAMERA_JARDIN_LOGIN}'
      password: '{FRIGATE_CAMERA_JARDIN_PASSWORD}'

#===============================================================================
#=                            Détections / Enregistrements                     =
#===============================================================================

# Optional: Record configuration
# NOTE: Can be overridden at the camera level
record:
  enabled: true
  # Optional: Number of minutes to wait between cleanup runs (default: shown below)
  # This can be used to reduce the frequency of deleting recording segments from disk if you want to minimize i/o
  expire_interval: 60
  # Optional: Retention settings for recording
  retain:
    # Optional: Number of days to retain recordings regardless of events (default: shown below)
    # NOTE: This should be set to 0 and retention should be defined in events section below
    #       if you only want to retain recordings of events.
    days: 15
    # Optional: Mode for retention. Available options are: all, motion, and active_objects
    #   all - save all recording segments regardless of activity
    #   motion - save all recordings segments with any detected motion
    #   active_objects - save all recording segments with active/moving objects
    # NOTE: this mode only applies when the days setting above is greater than 0
    #mode: active_objects
  # Optional: Event recording settings
  alerts:
    retain:
      days: 15
    pre_capture: 10
    post_capture: 10
  detections:
    retain:
      days: 15
    pre_capture: 10
    post_capture: 10

#===============================================================================
#=                                  Détections                                 =
#===============================================================================
objects:
  track:
    - person
    - cat
    - dog

# Désactiver le certificat pour le reverse proxy
tls:
  enabled: false

detect:
  enabled: true

Ce qui reste à faire et qui ne fonctionne pas c’est le onvif, je devrais voir les flèches pour bouger la caméra, rien n’apparaît sur la carte.
Pourtant dans cette vidéo ça a l’air de fonctionner « tout seul » !

    onvif:
      host: 192.168.0.56
      port: 80 # Dans caméra, Configuration / Réglages de base / Port => Port du serveur
      user: '{FRIGATE_CAMERA_JARDIN_LOGIN}'
      password: '{FRIGATE_CAMERA_JARDIN_PASSWORD}'

Voici le config.yaml avec l’ajout de l’ONVIF pour le PTZ
Concernant la carte advanced camera card, il n’y a rien de plus à mettre dans la config, normalement tu devrais avoir le PTZ accessible automatiquement.
Dans la caméra, il y a peut etre des choses à configurer, je ne sais pas trop.

Bizarre ce que tu dis avec cette carte, ça fonctionne bien chez moi et chez mon ami

mqtt:
  # Optional: Enable mqtt server (default: shown below)
  enabled: true
  # Required: host name
  host: 192.168.0.52
  # Optional: port (default: shown below)
  port: 1883
  # Optional: topic prefix (default: shown below)
  # NOTE: must be unique if you are running multiple instances
  topic_prefix: frigate
  # Optional: client id (default: shown below)
  # NOTE: must be unique if you are running multiple instances
  client_id: frigate
  # Optional: user
  # NOTE: MQTT user can be specified with an environment variable or docker secrets that must begin with 'FRIGATE_'.
  #       e.g. user: '{FRIGATE_MQTT_USER}'
  user: mqtt
  # Optional: password
  # NOTE: MQTT password can be specified with an environment variable or docker secrets that must begin with 'FRIGATE_'.
  #       e.g. password: '{FRIGATE_MQTT_PASSWORD}'
  password: mqtt

detectors:
  coral:
    type: edgetpu
    device: usb

birdseye:
  enabled: false

# Optional: Snapshot configuration  
snapshots:
  enabled: true
  # Optional: save a clean PNG copy of the snapshot image (default: shown below)
  clean_copy: true
  # Optional: print a timestamp on the snapshots (default: shown below)
  timestamp: true
  # Optional: draw bounding box on the snapshots (default: shown below)
  bounding_box: true
  # Optional: crop the snapshot (default: shown below)
  crop: false
  # Optional: Camera override for retention settings (default: global values)
  retain:
    # Required: Default retention days (default: shown below)
    default: 15
    # Optional: Per object retention days
    objects:
      person: 15

# Optional: Record configuration
# NOTE: Can be overridden at the camera level
record:
  enabled: true
  # Optional: Number of minutes to wait between cleanup runs (default: shown below)
  # This can be used to reduce the frequency of deleting recording segments from disk if you want to minimize i/o
  expire_interval: 60
  # Optional: Retention settings for recording
  retain:
    # Optional: Number of days to retain recordings regardless of events (default: shown below)
    # NOTE: This should be set to 0 and retention should be defined in events section below
    #       if you only want to retain recordings of events.
    days: 15
    # Optional: Mode for retention. Available options are: all, motion, and active_objects
    #   all - save all recording segments regardless of activity
    #   motion - save all recordings segments with any detected motion
    #   active_objects - save all recording segments with active/moving objects
    # NOTE: this mode only applies when the days setting above is greater than 0
    #mode: active_objects
  # Optional: Event recording settings
  alerts:
    retain:
      days: 15
    pre_capture: 5
    post_capture: 5
  detections:
    retain:
      days: 15
    pre_capture: 5
    post_capture: 5
cameras:
  Garage:
    enabled: true
    ffmpeg:
      # Optional: global hwaccel args (default: auto detect)
      # NOTE: See hardware acceleration docs for your specific device
      hwaccel_args: "auto"
      inputs:
        - path: rtsp://127.0.0.1:8554/frigate1_sub
          input_args: preset-rtsp-restream
          roles:
            - detect
        - path: rtsp://127.0.0.1:8554/frigate1
          input_args: preset-rtsp-restream
          roles:
            - record
    detect:
      enabled: true
    objects:
      track:
        - person
        - cat
        - dog
      filters:
        person:
          # Optional: minimum score for the object to initiate tracking (default: shown below)
          min_score: 0.7
          # Optional: minimum decimal percentage for tracked object's computed score to be considered a true positive (default: shown below)
          threshold: 0.7
    onvif:
      host: 192.168.0.56
      port: 80
      user: [loginfrigatecamera]
      password: [passfrigatecamera]
      ignore_time_mismatch: true
#      autotracking:
#        enabled: true
#        calibrate_on_startup: false
#        zooming: disabled
#        zoom_factor: 0.3
#        track:
#          - person
#        required_zones:
#          - Zone_detect
#        return_preset: start
#        timeout: 60
#        movement_weights: 0.0, 1.0, 1.3160419464111328, 2.7267386979954207,
#          0.8487578245901304, 0
go2rtc:
  streams:
    frigate1:
      - rtsp://[loginfrigatecamera]:[passfrigatecamera]@192.168.0.56:554/Streaming/Channels/101
    frigate1_sub:
      - rtsp://[loginfrigatecamera]:[passfrigatecamera]@192.168.0.56:554/Streaming/Channels/102
  ffmpeg:
    path: '5.0'
  webrtc:
    candidates:
      - 192.168.0.60:8555
      - stun:8555

logger:
  default: info
#  logs:
#    frigate: debug

detect:
  enabled: true
version: 0.16-0

J’ai fais des modifs, la carte fonctionne sans le onvif. Pour le moment je tente de faire fonctionner le onvif sous frigate mais il me dit :

Unable to get Onvif media profiles for camera: camera_jardin: The action requested requires authorization and the sender is not authorized

Or j’ai mis le login / password des caméras (en fait j’en ai essayé plein). Et je sais que ça marche parce qu’avec l’intégration OnVIF ça fonctionne. Mais j’aimerais désormais que tout passe par Frigate !
Avec l’ancienne carte j’ai ça :

Actuellement j’ai ça :

D’ailleurs il y a les 3 lignes à droite pour voir les notifications, elle est pas mal cette carte !!
Par contre, j’aimerais 2/3 de la largeur pour la vidéo et 1/3 pour les boutons et ça, ça ne fonctionne qu’avec type: custom:layout-card et après on est obligé de tout faire en yaml !!

Pour ton message d’erreur sur la partie ONVIF, regarde dans ta caméra si tu n’as pas un utilisateur spécifique pour la partie ONVIF avec des identifiant différent de ton rtsp, moi j’ai mis le même dans l’exemple, mais ce n’est peut être pas le cas en réalité.
Contrôle aussi le port, il est peut être différent sur ta caméra

Au niveau de la carte advanced camera card, la roue bleu en haut à droite disparait elle au bout de quelques secondes ? Elle devrait normalement une fois que le flux direct fonctionne

Ca marche (en ce moment même) avec l’intégration ONVIF de HA !
Oui la roue bleue disparaît et la taille de l’image change.

PUT*** ça marche ! J’ai un login / mdp admin, un pour frigate et un pour home assistant.
Ils ont tous les mêmes droits.
En utilisant celui pour home assistant ça marche mais je ne comprend pas pourquoi !

Bon ça ne doit pas être méchant comme problème si ça fonctionne via une autre integration, tu as tenté de recharger l’intégration Frigate depuis l’ajout de l’ONVIF dans le config.yaml ?

Je te la refait :
PUT*** ça marche ! J’ai un login / mdp admin, un pour frigate et un pour home assistant.
Ils ont tous les mêmes droits.
En utilisant celui pour home assistant ça marche mais je ne comprend pas pourquoi !

Et les zoom / pan sont d’une fluidité déconcertante !!!

Du coup, je vais pouvoir supprimer OnVif / WebRTC Camera et tout passer par Frigate.

1 « J'aime »

Ah top ça !!! :partying_face: Content d’avoir pu t’aider en tout cas :wink:.

J’espère que tu vas pouvoir régler tes soucis avec ton portier vidéo dans la foulée aussi

Déjà je vais avoir une base plus stable et pas de PTZ sur le portier !
D’ailleurs, c’est quoi le code de ta vue ? Parce que moi c’est tout petit et j’aimerais ne pas passer par custom:layout-card sinon je dois tout gérer en yaml !

J’ai re-créé un user spécifique et ça ne fonctionne pas !

voici le code de la carte de mon portier vidéo, à noté qu’il faut suivre les explication de felipecrs pour que tous les boutons fonctionnent :

type: custom:advanced-camera-card
cameras:
  - camera_entity: camera.doorbell
    live_provider: go2rtc
    go2rtc:
      stream: doorbell
      mode:
        - webrtc
    image:
      refresh_seconds: 1
    dimensions:
      aspect_ratio: "16:9"
live:
  controls:
    builtin: false
  zoomable: true
  show_image_during_load: true
  draggable: false
  lazy_unload:
    - unselected
    - hidden
  microphone:
    always_connected: false
    disconnect_seconds: 120
    mute_after_microphone_mute_seconds: 120
  auto_unmute:
    - microphone
menu:
  buttons:
    snapshots:
      enabled: false
    fullscreen:
      enabled: false
    cameras:
      enabled: false
    live:
      enabled: false
    clips:
      enabled: false
    microphone:
      type: toggle
      priority: 49
    mute:
      enabled: true
  style: outside
  position: top
  button_size: 85
  alignment: right
status_bar:
  style: none
profiles:
  - low-performance
overrides:
  - conditions:
      - condition: microphone
        connected: true
    merge:
      menu:
        buttons:
          microphone:
            enabled: true
elements:
  - type: custom:advanced-camera-card-conditional
    conditions:
      - condition: state
        state: "on"
        entity: input_boolean.doorbell_calling
    elements:
      - type: custom:advanced-camera-card-menu-icon
        icon: mdi:phone
        alignment: opposing
        priority: 39
        style:
          color: green
        tap_action:
          - action: perform-action
            data:
              entity_id: input_boolean.doorbell_calling
            perform_action: input_boolean.turn_off
          - action: custom:advanced-camera-card-action
            advanced_camera_card_action: microphone_unmute
  - type: custom:advanced-camera-card-conditional
    conditions:
      - condition: state
        state: "off"
        entity: input_boolean.doorbell_calling
      - condition: microphone
        connected: false
    elements:
      - type: custom:advanced-camera-card-menu-icon
        icon: mdi:phone-outgoing
        alignment: opposing
        priority: 39
        style:
          color: green
        tap_action:
          - action: custom:advanced-camera-card-action
            advanced_camera_card_action: microphone_unmute
  - type: custom:advanced-camera-card-conditional
    conditions:
      - condition: state
        state: "on"
        entity: input_boolean.doorbell_calling
    elements:
      - type: custom:advanced-camera-card-menu-icon
        icon: mdi:phone-ring
        alignment: opposing
        priority: 40
        style:
          color: red
        tap_action:
          - action: perform-action
            data:
              entity_id: input_boolean.doorbell_calling
            perform_action: input_boolean.turn_off
  - type: custom:advanced-camera-card-conditional
    conditions:
      - condition: state
        state: "off"
        entity: input_boolean.doorbell_calling
      - condition: microphone
        connected: true
    elements:
      - type: custom:advanced-camera-card-menu-icon
        icon: mdi:phone-hangup
        alignment: opposing
        priority: 40
        style:
          color: red
        tap_action:
          - action: custom:advanced-camera-card-action
            advanced_camera_card_action: microphone_disconnect
          - action: custom:advanced-camera-card-action
            advanced_camera_card_action: mute
  - type: custom:advanced-camera-card-menu-state-icon
    entity: input_boolean.do_not_disturb
    state_color: true
    tap_action:
      action: toggle
    alignment: opposing
    priority: 41

Wahoo y’a du monde !!!

Bon,j’ai réussi à faire ma carte :

Non c’est de la merde, on perds l’édition en mode graphique !
Avec ce code :

title: Caméras
icon: mdi:cctv
path: camerasaaaaa
type: custom:layout-card
layout_type: grid
layout:
  grid-template-columns: 2fr 1fr
  grid-template-areas: |
    "left right"
cards:
  - type: custom:advanced-camera-card
    view_layout:
      grid-area: left
    cameras:
      - camera_entity: camera.camera_jardin
        icon: mdi:cctv
        always_error_if_entity_unavailable: true
        go2rtc:
          modes:
            - webrtc
            - mse
            - mp4
            - mjpeg
          stream: camera_jardin
        frigate: {}
        live_provider: go2rtc
        id: camera_jardin
        title: Caméra jardin arrière
        dimensions:
          layout:
            pan:
              x: 90
              "y": 0
            fit: contain
    menu:
      buttons:
        cameras:
          enabled: true
        ptz_controls:
          enabled: false
    live:
      controls:
        ptz:
          position: top-right
          hide_zoom: false
    dimensions:
      aspect_ratio_mode: dynamic
  - type: entities
    view_layout:
      grid-area: right
    title: Caméra Jardin
    entities:
      - entity: switch.camera_jardin_detect
        name: Détection
      - entity: camera.hikvision_ds_2de2a404iw_de3_mainstream
        type: button
        name: Terrasse
        show_state: false
        icon: mdi:home
        show_icon: true
        tap_action:
          action: call-service
          service: onvif.ptz
          service_data:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            preset: 1
            speed: 0.1
            distance: 0.5
            move_mode: GotoPreset
      - entity: camera.hikvision_ds_2de2a404iw_de3_mainstream
        type: button
        name: Barbecue
        show_state: false
        icon: mdi:fireplace
        show_icon: true
        tap_action:
          action: call-service
          service: onvif.ptz
          service_data:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            preset: 2
            speed: 0.1
            distance: 0.5
            move_mode: GotoPreset
      - entity: camera.hikvision_ds_2de2a404iw_de3_mainstream
        type: button
        name: Allée
        show_state: false
        icon: mdi:road
        show_icon: true
        tap_action:
          action: call-service
          service: onvif.ptz
          service_data:
            entity_id: camera.hikvision_ds_2de2a404iw_de3_mainstream
            preset: 3
            speed: 0.1
            distance: 0.5
            move_mode: GotoPreset
visible:
  - user: 5bb64ed555e3459695a3479aab811da6
  - user: 045613fc38e24808a67f8d0297279883
  - user: 42a610eac34e4d85875083a075b99157
  - user: e9c412c3f5074921a40a183b9d8156e4
  - user: 1c1bbb38d60d4bccb756ec4835d82479
  - user: 8483fb3624b64e35b1e068d234d11c68
  - user: 2c12e11ead17411e82fe4bf7eb1e102d

Reste que la partie droite qui est super pratique … fonctionne sous Frigate (première fois que je vois une intégration récupérer les libellés, regarde :


Tu sais comment on affiche les pré-réglages dans la carte (autre que dans Frigate ?) Parce qu’avec ça j’ai plus besoin des boutons !!

Edit : impossible de re-créer un utilisateur qui fonctionne avec le PTZ. Là, j’utilise celui de Home Assistant !
J’espère que c’est pas HA avec Onvif qui fait en sorte de correctement initialiser la caméra sinon lorsque je retirerais OnVIF ça ne fonctionnera plus à nouveau !!!
En tout cas, si je perd ce user, je perd le PTZ !

Pour le ONVIF, une idée comme ça, peut être que tu peux n’avoir qu’un seul utilisateur, et vu que tu as toujours l’intégration dans HA de connecté tu ne peux pas en avoir un deuxième. A voir quand tu auras supprimé cette intégration.

Aucune idée pour les presets, regarde dans la doc de la carte ou sur le github

Edit : Je te confirme que les presets peuvent être affiché sur la carte, mon ami les a de sur sa carte, donc pas de raison que tu ne puisses pas les avoir.