Zum Hauptinhalt springen

KI-gesteuerte Überwachungskameras mit Home Assistant, Frigate und Google Coral

·6 min
Smarthome Home-Assistant Smart-Home
Autor
Markus

Wir haben ums Haus herum 4 Kameras im Einsatz. Ich habe im Lauf der Zeit unterschiedliche Systeme ausprobiert, darunter Motion Eye, iSpy, Zoneminder und Shinobi. Keine der Lösungen überzeugte mich so richtig, zumal alle mit den gleichen “dummen” Überwachungsfunktionen arbeiteten und damit jede Menge unwichtiger Bewegungen erkannten. Zudem waren sie ziemlich CPU-Hungrig. Das ist bei meinem System zwar kein Problem, da meine ganzen NAS- und Smarthome-Funktionen auf einem HP Microserver mit Intel XEON E3 1230 CPU laufen und der hat genügend Leistungsreserven, aber für die gebotene Funktionalität war es einfach zu viel. Die Bewegungserkennung kam auch kaum über die meiner HIKVision Kameras hinaus.

Frigate Überwachungssoftware mit KI-Funktion
#

Mit Frigate gibt es seit einiger Zeit eine Überwachungssoftware für Kameras, die tief in Home Assistant integriert ist und per KI (über Tensor Flow) den Bildinhalt analysiert. Dabei kann Frigate z. B. zwischen Personen, Katzen, Autos, LKWs und vielen anderen Objekten unterscheiden. Gleichzeitig können die Ereignisse als Sensoren in Home Assistant genutzt werden und damit entsprechend Funktionen wie z. B. Außenlicht etc. steuern. Frigate kann ganz einfach über den Supervisor installiert werden und wird damit nahtlos in Home Assistant integriert.

Die Einrichtung erfolgt per YAML-Konfigurationsdatei, in der die Kameras und deren Funktionen konfiguriert werden. Idealerweise passen dabei die zu erkennenden Objekte in ein Quadrat von 300x300 Pixeln Größe. Eine sehr hohe Kamera-Auflösung ist daher nicht unbedingt besser. Für die exakte Bilderkennung genügt auch eine Bildwiederholrate von 5 fps.

Eine beispielhafte Konfiguration sieht z. B. so aus:

  einfahrt:
    ffmpeg:
      inputs:
        - path: rtsp://user:passwort@MEINEKAMERAIP/Streaming/Channels/101
          roles:
            - detect
            - clips
            - rtmp

    width: 1280
    height: 720
    fps: 5
    objects:
      track:
        - person
        - cat
        - dog
      filters:
        person:
          min_score: 0.6
          threshold: 0.5
        cat:
          min_score: 0.4
          threshold: 0.5
    motion:
      mask:
        - 0,679,167,543,467,205,751,158,1280,308,1280,0,0,0
      contour_area: 80

    clips:
      enabled: true
      pre_capture: 5

Im “Input” Bereich legt man die Adresse der Überwachungskamera und die gewünschten Funktionen fest. In diesem Fall sollen Objekte detektiert und bei Ereignissen Video-Clips davon aufgezeichnet werden. Gleichzeitig soll das Kamera-Bild als RTMP-Stream weitergereicht werden. Damit ist der Kamera-Stream über die standardisierte Adresse rtmp://HA-IP/live/kameraname erreich- und einbindbar.

Bei “Objects” legt man fest, welche Objekte erkannt werden sollen und mit “Filters” wird die Erkennungsschwelle eingestellt. Mit der “Mask” können Bereiche aus der Erkennung ausgeschlossen werden und mit “pre_capture” wird festgelegt, wie viele Sekunden vor dem Ereignis in der Aufzeichnung enthalten sein sollen. Für jede Kamera und für jeden Objekt-Typen lassen sich Aufbewahrungszeiten festlegen, nach denen die Clips und Bilder automatisch gelöscht werden. So kann man z. B. Clips von Personen 10 Tage aufheben, von Fahrzeugen aber nur 3 Tage.

Auf die Ereignisse und Einstellungen von Frigate kann per MQTT zugegriffen werden. Es gibt jedoch auch eine Erweiterung frigate-hass-integration , die man einfach über HACS installieren kann und die komfortable Sensor-Entities, Switches und Binary-Sensoren (“Bewegung erkannt”) bereitstellt. Über die Switch-Entities kann man z. B. die Objekterkennung deaktivieren, wenn die Terrassentür geöffnet ist (einen entsprechenden Türsensor vorausgesetzt), damit man nicht ständig selbst erkannt und unnötig aufgezeichnet wird. Oder man pappt sich ein NFC-Tag an die Hauswand, welches man mit dem Smartphone scannt und das dann die Erkennung für diesen Bereich über eine entsprechende Automation für z. B. 1 Stunde deaktiviert.

Apropos Bereiche: In der Frigate Konfiguration kann man auch “Zones” definieren. Hat man z. B. einen Kamerabereich, in dem sich die Garageneinfahrt, der Hauseingang und der Briefkasten befinden, kann man für jeden dieser Bereiche Zonen definieren. Diese melden dann selektiv, wenn in dieser Zone eine Bewegung erkannt wurde.

Man kann auch Kameras einbinden, die statt einem RSTP-Stream einen MPEG-Stream liefern, was bei meiner WANTEC Monolith C IP/VoIP Türsprechanlage der Fall ist. Dazu muss der MPEG-Stream per FFMPG umgewandelt werden. Das sieht in meiner frigate.yml so aus:

  eingang:

    ffmpeg:

      inputs:

        - path: http://user:password@IP-WANTEC-KAMERA:8080/?action=stream
            roles:
            - detect
            - clips

      input_args:
              - -avoid_negative_ts
              - make_zero
              - -fflags
              - nobuffer
              - -flags
              - low_delay
              - -strict
              - experimental
              - -fflags
              - +genpts+discardcorrupt
              - -r
              - "5" # <---- adjust depending on your desired frame rate from the mjpeg image
              - -use_wallclock_as_timestamps
              - "1"

      output_args:
        detect: -f rawvideo -pix_fmt yuv420p
        clips: -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v libx264 -an

    width: 1280
    height: 720
    fps: 15
    clips:
      enabled: true

    objects:
      track:
        - person
        - cat
        - dog
      filters:
        person:
          min_score: 0.6
          threshold: 0.6

    motion:
      mask:
        - 0,406,0,380,0,306,0,0,545,0,544,277
      contour_area: 80

Damit wurde auch die Kamera der Türsprechanlage zur vollwertigen Überwachungskamera samt Objekterkennung und das ganz ohne irgendwelchen Cloud-Dienste.

Weniger CPU-Last und bessere Erkennung mit Google Coral
#

Das Besondere an Frigate ist auch, dass man neben GPUs (bei unterstützten Grafikkarten/Chips) auch den Google Coral USB-Accelerator einbinden kann. Das ist ein TPU (Tensor Processing Unit) in Form eines kleinen USB3 Dongles. Damit wird die CPU enorm entlastet und der kleine Google Coral analysiert über 100 Frames pro Sekunde, was gerade bei mehreren Kameras oder bei der Nutzung eines Raspberry Pi sehr hilfreich ist.

Den Google Coral gibt es z. B. beim Elektronik-Versender Pollin für 69,99 € zzgl. Versand. Wenn ihr euch für den Pollin-Newsletter anmeldet, bekommt ihr einen 5 Euro Gutschein und spart damit die Versandkosten!

Eingebunden wird der Google Coral in der frigate.yml mit diesen Parametern:

detectors:
  coral:
    type: edgetpu
    device: usb

In der Praxis
#

Für die Einrichtung von Frigate muss man ein wenig die Dokumentation studieren, die in manchen Bereich auch noch einige Lücken hat. Weiter hilft hier wie immer das HA-Forum und das HA-Sub-Reddit . Meine 4 Kameras waren dann aber schnell eingebunden und funktionierten tadellos. Überhaupt ist die echte Objekterkennung (und Unterscheidung) ein Segen! Bewegte Äste oder Vögel führen so nicht mehr zu unerwünschten Aufzeichnungen und Benachrichtigungen. Die Erkennungsleistung ist sehr gut, auch wenn manche Katze als Hund erkannt wird :-)

Die Latenz bei der Objekterkennung liegt bei mir unter 1 Sekunde (was allerdings vermutlich auch am Google Coral liegt) und damit eignet sich Frigate und der entsprechende Switch auch dazu, einen dummen Bewegungsmelder zu ersetzen und nicht bei jeder Katze die Außenbeleuchtung anzuschalten. Die Erkennung funktioniert bei meinen HikVision Kameras mit deren IR-Beleuchtung und guten Bildqualität auch nachts, wenn es regnet.

Fazit
#

Frigate ist meiner Ansicht nach die derzeit beste kostenlose Software für Überwachungskameras. Noch wird fleißig entwickelt und manches muss man sich recht mühsam erarbeiten, aber das Ergebnis überzeugt schon jetzt vollends. Ich würde auf jeden Fall den Google Coral empfehlen, da man damit auch auf dem Raspi Frigate problemlos laufen lassen kann.

Zwar werden viele Objekte von Haus aus von Frigate unterstützt, darunter Giraffe, Zebra, Bananen und Zahnbürsten, aber richtig interessant wird Frigate dann, wenn es auch Personen unterscheiden kann. Ich sammle gerade Bilder von uns, um eigene Custom Models für Tensor Flow und Gesichtserkennung zu trainieren. Allerdings muss ich mit damit erst noch ausführlich beschäftigen, da das Thema momentan noch nicht auf der Feature-Liste von Frigate steht.

Verwandte Artikel

Mit Home Assistant starten- welche Plattform wählen?
·9 min
Smarthome Home-Assistant Raspberry Smarthome Unraid
Raspberry, Odroid, PC, Docker oder virtuelle Maschine?
Home Assistant Grundlagen mit Kaffeemaschine und Alexa
·9 min
Smarthome Aqara Home-Assistant Smarthome
Mit diesen Home Assistant Grundlagen habe ich meine Kaffeemaschine intelligent gemacht und Alexa sagt mir, wann sie gereinigt werden muss.
CO2 Ampel mit ESPHome und Home Assistant
·9 min
Smarthome Corona Diy Esphome Home-Assistant Sensor Smarthome
Mit einem ESPHome und dem MH-Z19B CO2-Sensor, kann man für weniger als 40 Euro eine CO2-Ampel bauen, die in Home Assistant integriert ist.