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

Mit Frigate ist eine Software für Überwachungskameras in Home Assistant eingezogen, die den Bildinhalt intelligent auswerten kann.

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.

HIKVision IP-Kameras für den Außenbereich (Modell DS-2CD2342WD)

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.

Du möchtest keinen Beitrag verpassen? Dann melde dich zum kostenlosen nachbelichtet-Newsletter an!

Kein Spam - versprochen! Und du kannst dich jederzeit wieder abmelden!
Da hat Frigate mich erwischt …

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 300×300 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
Code-Sprache: YAML (yaml)

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.

Frigate mi meinen Kameras in Home Assistant

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.

Frigate Entities in Home Assistant
Frigate Sensoren und Switch-Entities in Home Assistant

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
Code-Sprache: YAML (yaml)

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.

Google Coral TPU

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
Code-Sprache: YAML (yaml)

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 🙂

Einmal erkennt Frigate die Katze richtig …
und einmal wird sie zum Hund 🙂

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.

Abonnieren
Benachrichtige mich bei
Das Kommentarformular speichert deine Namen, deine E-Mail-Adresse und den Inhalt, damit wir den Überblick über die auf der Website veröffentlichten Kommentare behalten können. Bitte lies und akzeptiere unsere Website-Bedingungen und Datenschutzerklärung, um einen Kommentar zu schreiben.
0 Kommentare
Inline Feedbacks
View all comments

Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Irrtümer und Preisfehler vorbehalten.