Direkt zum Hauptinhalt

Installation in Home Assistant

Beschreibung:

Ein Videoüberwachungssystem , Installation in Home Assistant direkt.

Vorraussetzungen:

Ein MQTT Broker
Das Fileeditor Addon

Installation aus dem Addon Store:

Dazu auf
Einstellungen -> Addons -> Addon Store

Dort Repository hinzufügen (3 Punkte oben rechts)

Auswahl_032.png

Auswahl_033.png

Auswahl_034.png


Auswahl_035.png

Auswahl_036.png

Dort folgende Repo hinzufühgen

https://github.com/blakeblackshear/frigate-hass-addons

und auf hinzufügen klciken

Auswahl_037.png

Nun ist die Repo drin und auf schließen klicken, danach den browser mit F5 refresh durchführen

Auswahl_038.png

Nun haben wir in unserem Store die frigate Varianten zur Verfügung

Auswahl_039.png

Wir wäheln die Frigate Standard Variante, Full Access wäre für Kameras mit Hardware Beschleunigung.
Habt Ihr Kameras mit Hardware Beschleunigung nehmt Ihr Full Access

Auswahl_040.png

Nun auf installieren klicken, danach das Addon noch NICHT!! starten

Auswahl_041.png

Nun im File Editor auf Browse / Durchsuchen gehen gehen und eine neue Datei anlegen mit dem namen
frigate.yml

Auswahl_042.png

Auswahl_043.png
Hier mal ein Inhalt den man als Vorlage nehmen und erweitern kann:

mqtt:
  enabled: True
  host: 172.16.0.14
  user: smarthome
  password: smarthome
  topic_prefix: frigate
  # Optional: client id (default: shown below)
  # WARNING: must be unique if you are running multiple instances
  client_id: frigate
  # Optional: interval in seconds for publishing stats (default: shown below)
  stats_interval: 15

#immer die frigatre datenbank da hinlegen wo auch die medien liegen, denn sollte mal das netzlaufwerkabbrechen, 
#haben wir keine inkonsistente Datenbank zu den videos
database:           
  path: /media/frigate/frigate.db

# Optional: Detectors configuration. Defaults to a single CPU detector
detectors:
  # Required: name of the detector
  detector_name:
    # Required: type of the detector
    # Frigate provided types include 'cpu', 'edgetpu', and 'openvino' (default: shown below)
    # Additional detector types can also be plugged in.
    # Detectors may require additional configuration.
    # Refer to the Detectors configuration page for more information.
    type: cpu 
#Hardware Beschleunigung aktivieren, wenn eine GPU vorhanden für hw Beschleunigung dann den Kommentar bei hwaccel_args entfernen
ffmpeg:
  #hwaccel_args: -c:v h264_qsv
  hwaccel_args: preset-intel-vaapi
  #hwaccel_args: preset-intel-qsv-h264

birdseye:
  enabled: True
  restream: True
  mode: objects

objects:
  track:
    - person
    - car
#ich hab den Filter rausgenommen, aber wer möchte das die Objekterkennung nur über einen bestimmten Bereich geht, kann diesen Definieren.
#Allerdings wäre es dafür einfacher Zones für die Kameras in der UI zu erstellen.
  #filters:
   # person:
     # min_area: 5000
     # max_area: 100000


go2rtc:
  streams:
    Treppenhaus: 
      - rtsp://smarthome:Smarthome&More@192.168.101.185:554/h264Preview_01_main
      - "ffmpeg:rtsp_cam#audio=opus"
    Treppenhaus_sub: 
      - rtsp://smarthome:Smarthome&More@192.168.101.185:554/h264Preview_01_main
      - "ffmpeg:rtsp_cam#audio=opus"
  #in dem Streams abschnitt kann man über die RTSP Eigenschaft den Timeout und ein Buffer einstellen.
  #Ich habe diesen nicht benutzt, kann man aber aktivieren.
  #rtsp:
   # mediatimeout: 10s  # Erhöht die Timeout-Zeit für den RTSP-Stream
  #buffer:
   # size: 8388608 # Puffergröße in Bytes, hier etwa 8 MB
  #enable webrtc für flüssigeres bild in der lovlace Karte
  webrtc:
    candidates:
      - 127.0.0.1:8555
      - stun:8555  

cameras:
  Treppenhaus_CAM:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/Treppenhaus?video=copy&audio=aac
          input_args: preset-rtsp-restream
          roles:
            - record
        - path: rtsp://127.0.0.1:8554/Treppenhaus_sub?video=copy
          input_args: preset-rtsp-restream
          roles:
            - detect
    detect:
      width: 1280 
      height: 720 
      fps: 5
    snapshots:
      enabled: True
    record:
      enabled: True
      retain: 
        mode: motion #nimmt nur auf wenn Bewegung erkannt wurde und nicht komplett durchgehend, dies ist Lösung für die Cach Warning wenn zu wenig RAM vorhanden ist
        days: 1 #ich möchte ja nur die clips haben wo auch objekte erkannt werden. Es wird aber in frigate tatsächlich die ganze zeit aufgenommen. 
        #das brauch ich aber nicht, also noch einem Tag wegschmeißen. Denn den Record brauchen wir leider, damit frigate die Clips daraus schneiden kann.
      events:
        retain: 
          default: 14

Die Config Werte:

MQTT:

Wir ändern den Username und kennwort bei MQTT auf unseren MQTT Benutzer und Kennwort ab.
Den Host ändern wir auf die IP Adresse unseren Home Assistanten ab.

Den rest von MQTT lassen wir so.

Detectors:

Hier type: cpu nehmen oder wer ein google corel ai Stick hat stellt folgendes ein:
Birdeye view

Object:

Wir wollen Personen und Autos erkennen.

go2rtc:

hier wird eine Verbindung zur Kamera aufgebaut. Wenn eine Kamera auch einen Substream hat, für hohe und niedrige auflösung wählen.
Main ist immer hochauslösend, sub als Previe.
Kann die Cam nur ein Stream.
Diesen bei beie eintargen.

Cameras:

Dort den Namen der Camere eintragen wie er auch wirklcih erscheinen soll.
Hier erstellen wir ein neuen RTSP Stream auf localhost.
Dieser verlinkt auf den go2rtc. Vorteil eure Kamera die in go2rtc angelegt ist, unterstützt nur einen Stream gleichzeitg zum abruf, nun könnt Ihr den input von cameras auch für externe Anwendungen nutzen. Denn in der externen Anwedung gebt ihr den Camera input an. Und dann greift Home Assistant auf die Cam im go2rtc zu.

anderen Speicherort festlegen:

frigate stoppen

Alle Daten werden im /media/frigate Verzeichnis gespeichert.
Damit die Datenbank aber nicht im MediaConfig Verzeichnis liegt:

An die Konfig anfügen.

database:
  path: /config/frigate.db
  
ändern zu bzw hinzufügen wenn noch kein Database: Eintrag vorhanden

database:
  path: /media/frigate/frigate.db

Nun einen neuen Netzwerkspeicher anlegen mit dem Namen frigate.
Dieser wird dann mit dem Namen frigate in Verzeichnis /media gemountet.
Somit ist der Pfad dann Media frigate
Möchte man seine alte Daten noch halten dann benennen wir vor dem erstellen des Speichers , das Verzeichnis frigate in frigate_tmp um
Nachdem der Netzwerkwerk speicher angehängt wurde verschieben wir den Inhalt aus frigate_tmp in frigate.
Dann starten wir das Addon wieder.

Das umbenennen kann man über das Addon Terminal in der Sidebar gemacht werden oder über ein Filebrowser Addon in der Sidebar
Fertig

Zeitstempel:

In Frigate hat man nur die Möglichkeit Zeitstempel in die Bilder (Snapshots) einzubetten.
Man kan das auch in die Recording püerüber ffmpeg machen.
Das ist aber sehr ResourcenRessourcen hungrig, weil das Video dazu neu encodiert wird.
Nut mit Video Accelrator zu empfehelen.
Mein Vorschlag wäre, ob die Kamera selbst die Möglichkeit hat einen Zeitstempel hinzuzufügen.

Für Unifi Kameras, kann man das Format für den Zeitstempel nur in der configGUI Datei ändern.config.
Siehe hier : link (ist noch nicht erstellt)


Reicht einem die Zeit im Snapshot, dann kann man einen neuen Abschnitt in der Konfig (ich habe diesen unter go2rtc erstellt), dieses hinzufügen:
Hier ändere Ich das Format von US auf 01.12.2024  13:15:45 in der Farbe weiß oben links


...
timestamp_style:
  # Optional: Position of the timestamp (default: shown below)
  #           "tl" (top left), "tr" (top right), "bl" (bottom left), "br" (bottom right)
  position: "tl"
  # Optional: Format specifier conform to the Python package "datetime" (default: shown below)
  #           Additional Examples:
  #             german: "%d.%m.%Y %H:%M:%S"
  format: "%d.%m.%Y %H:%M:%S"
  # Optional: Color of font
  color:
    # All Required when color is specified (default: shown below)
    red: 255
    green: 255
    blue: 255
  # Optional: Line thickness of font (default: shown below)
  thickness: 2
  # Optional: Effect of lettering (default: shown below)
  #           None (No effect),
  #           "solid" (solid background in inverse color of font)
  #           "shadow" (shadow for font)
  effect: "solid"
...

So sähe das dann aus, aber leider nur im Bild (Snapshots) und nicht in den Auffnahmen

Auswahl_090.png

Schlechte Internetverbindung:

Wenn die Internetverbindung einfach zu schlecht ist 128 KB pro Sekunde (1000 Kbit / 1 MBit (DSL 1000 Leitung) Up/download

Sollte die Internetverbindung für ein Flüssiges wiedergeben von Aufnahmen nicht funktionieren. Weil 4K über 1 Mbit gar nicht geht.
Dann kann man die Gleiche Kamera nochmal anlegen nur zum Beispiel mit den Namen Mobil und dort bei record den Substream mit einer niedrigen Auflösung wählen.
Nun werden zwei Aufnahmen erstellt einmal in 4K bzw höchste Auflösung was die Kamera Kann und einmal in der niedrichsten.
Wazu das ganze?
Ist man im Urlaub möchte man trotzdem auf die Aufnahmen zugreifen können, außerdem schont es zusätzlich das Datenvolumen.
Braucht man zum Beispiel wegen eines Einbruchs dann das Video in 4K kann man dieses in 4K herunterladen.
Vorher wäre es aber interessant sich überhaupt bequem das Einbruchvideo anzuschauen ohne es runter zu laden. Dafür ist dann die Aufnahme mit dem substream in niedriger Auflösung völlig ausreichend


Beispiel Konfig:


#Im Go to rtc Teil werden die Streams definiert.
#Die Stremas sind die URLs zu den Jeweiligen Streamd der Kamera(s).
#Wir haben 3 Stück.
#Innenhof = 4K
#Innenhof_Medium = 720p
#Innenhof_sub = DVD qualität
go2rtc:
  streams:
    Innenhof:
      - rtsp://user:pass@192.168.178.68:554/s0
    Innenhof_medium:
      - rtsp://user:pass@192.168.178.68:554/s2
      - "ffmpeg:Innenhof#video=h264#codec=libx264#preset=superfast#tune=zerolatency#bitrate=300k#bufsize=600k#hls_time=4#hls_list_size=4"
    Innenhof_sub:
      - rtsp://user:pass@192.168.178.68:554/s1
#hat jetzt nichts mit den cams zu tun, aber ich hab den webrtc mal mit reingepackt      
  webrtc:
    candidates:
      - 127.0.0.1:8555
      - stun:8555    
  
#Un in dem Camera Teil, die Cams mit detect record und livebild deklariert.
#Einfach doppelt mit anderen namen und dem entsprechendendes Streams.
Der detect Stream bleibt bei allen gleich, denn da braucht man ja kein Internet für


cameras:
  Innenhof_CAM:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/Innenhof
          roles:
            - record
        - path: rtsp://127.0.0.1:8554/Innenhof_medium
          roles:
            - detect
    live:
      stream_name: Innenhof_medium
      quality: 8
    detect:
      width: 1280
      height: 720
      fps: 10
    snapshots:
      enabled: true
    record:
      enabled: true
      retain:
        days: 1
        #mode: motion
      events:
        retain:
          default: 30
          mode: active_objects
  Innenhof_CAM_Mobil:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/Innenhof_medium
          roles:
            - record
        - path: rtsp://127.0.0.1:8554/Innenhof_medium
          roles:
            - detect
    live:
      stream_name: Innenhof_medium
      quality: 8
    detect:
      width: 1280
      height: 720
      fps: 10
    snapshots:
      enabled: true
    record:
      enabled: true
      retain:
        days: 1
        #mode: motion
      events:
        retain:
          default: 30
          mode: active_objects



Full Reference Konfig:

Will man alle möglichen Optionen wissen, dann unter

https://docs.frigate.video/configuration/reference/

nachschauen