
KI-gesteuerte Überwachungskameras mit Home Assistant, Frigate und Google Coral
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 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:[email protected]/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.

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:[email protected]: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.

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!
Der nachbelichtet-Newsletter
Alle Beiträge und exklusive Infos kostenlos per Mail erhalten - wie über 10.000 andere treue Leser!
Kein Spam - versprochen! Und du kannst dich jederzeit wieder abmelden!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 🙂


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.
Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Provision-Links. Wenn du auf so einen Verweislink klickst und über diesen Link einkaufst, bekomme ich von deinem Einkauf eine Provision. Für dich verändert sich der Preis nicht und du unterstützt damit meine Arbeit. Preisänderungen und Irrtümer vorbehalten.
Hier https://docs.frigate.video/ und hier https://github.com/blakeblackshear/frigate dürfte alles beschrieben sein, was du suchst.
WebUI: Ja
Auf NAS speichern: Ja – Snapshot und Video
E-Mail: nein, nur über Schnittstellen
Schnittstellen: MQTT und HTTP API – damit kann man es auch mit ioBroker sprechen lassen, um z. B. Benachrichtigungen zu verschicken.
Wenn du dann schon dabei bist, würde ich stark überlegen, ob ich nicht von ioBroker zu Home Assistant wechseln würde. Das ist eine ganz andere Klasse an Smarthome-Hub. Ich bin damals auch von Symcon zu HA gewechselt und habe es nie bereut.
Wenn du eh schon Proxmox hast, kannst du HA als virtuelle Maschine aufsetzen und mal testen. Docker ist auf Proxmox mit Portainer als Verwaltungstool auch nicht schwer
https://blog.login.gmbh/docker-portainer-unter-proxmox-7-installieren/
Vielen Dank für diesen Artikel über Frigate.
Wir haben bei uns zu Hause, ländlich gelegen, bis zu sieben IP Cameras mit Motioneye, das in einem Proxmox LXC Container läuft, in Betrieb – je nachdem, wie viele Waschbären uns da wieder besuchen.
Die Funktion der Kamerazentrale, bei der alle Kameras auf einem Monitor dargestellt werden, funktioniert mit Motioneye super, bringt den Rechner aber auch an seine Grenzen. Die Motion-Erkennung ist alles andere als toll. Jede Menge Fehlalarme von Spinnen, bei Wind und bei Regen, oder, wenn die Sonne hinter den Wolken hervorkommt.
Als Smart Home Zentrale nutze ich bisher den ioBroker, mit Home Assistant habe ich keine Erfahrung, mit Docker bisher auch noch nicht.
Deshalb möchte ich ein paar Fragen stellen:
Hat Frigate auch ein WebUI, über das man live die Kamerabilder anschauen kann?
Kann Frigate auch ohne Home Assistant bei Bewegungserkennung z.B. eine EMail mit Bildern automatisch verschicken und/oder eine Aufnahme auf einem NAS speichern? Soweit ich weiß, gibt es keine Adapter für den ioBroker.
Ich möchte mich gerne mit Frigate näher beschäftigen und mich dazu auch mit Docker auseinandersetzen. Aber eine zusätzliche Installation von Home Assistant muss nicht unbedingt sein.
Für nähere Infos wäre ich sehr dankbar.
Grüße aus dem Sauerland…