Videoüberwachungssystem mit Frigate und Home Assistant

Wenn Sie Home Assistant haben und ein verdammtes Videoüberwachungssystem einrichten möchten (für Zuhause oder Geschäft), Nun, es gibt keine andere Möglichkeit, als Fregatte zu reiten, was ist opensource. Wir können in Telegram-Nachrichten empfangen (mit Fotos und Videos), wenn die Kameras Personen erkennen, Hunde, Gatos, Vögel, Pferde…

gut, Die Idee ist einfach, Wir haben oder wollen Überwachungskameras haben, Videoüberwachung, IP-Kameras von guter Qualität, aber billig und verwalten das System selbst. Woher Fregatte Es wird uns helfen, jede Kamera zu zentralisieren und zu konfigurieren, was wir brauchen. Fregatte kümmert sich um die Erkennung der Objekte was haben wir gesagt, wie ist die erkennung von personen, jede Art von Tier, Autos, Einschreibung… wird die Clips und Videos so lange speichern, wie wir es angeben. Und dann können wir die generierten Ereignisse an Home Assistant senden, abhängig von einer Reihe von Faktoren (wir sind weg von zu hause, wir schlafen…) um uns per Telegramm oder was auch immer wir wollen zu benachrichtigen.

Frigate wird in einem Docker-Container ausgeführt, und es hängt von der Anzahl der Kameras ab, die wir haben, es wird viel CPU verbrauchen und es ist sogar ratsam, eine Beschleunigerhardware zu verwenden, die die Erkennungsleistung verbessert. Es hängt alles von vielen Faktoren ab., Wenn sich viele Pixel in den Kameras ändern, können wir immer Zonen erstellen, um eine Analyse zu vermeiden; die Anzahl der Kameras oder die Berechnung, die wir geben, da es auf einem Raspberry Pi laufen kann. zu 4-5 Kameras mit Google Coral USB-Beschleuniger wir machen Fortschritte, ist ein Coprozessor, eine externe TPU, die uns hilft, die Last zu bewegen.

Coral USB-Beschleuniger,

gut, naja damit ist der fisch mehr oder weniger verkauft, vamos empezando si os parece 🙂 Lo primero será tener una máquina con Docker, este post está basado en una Raspberry Pi 4, y lo segundo instalar los drivers del Google Coral USB Accelerator (o el que usemos). dies zu tun, descargamos el repositorio de Google:

Echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key hinzufügen -
sudo apt-get update

Instalamos el runtime y la librería de PyCoral:

sudo apt-get install libedgetpu1-std
#Para máximo rendimiento --> sudo apt-get install libedgetpu1-max

sudo apt-get install python3-pycoral -y

Ya estamos listos para probar si la Raspberry Pi ya reconoce al dispositivo, podremos bajarnos un modelo de ejemplo y validarlo:

mkdir coral && cd coral
git clone https://github.com/google-coral/pycoral.git
CD Pycoral
Bash-Beispiele/install_requirements.sh classify_image.py
python3-Beispiele/classify_image.py \
--Modell test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
--Etiketten test_data/inat_bird_labels.txt \
--Geben Sie test_data/parrot.jpg ein

Und wenn alles gut geht, erhalten wir so etwas:

----SCHLUSSZEIT ----
Hinweis: Die erste Inferenz auf Edge TPU ist langsam, da sie das Laden des Modells in den Edge TPU-Speicher umfasst.
11.8Frau
3,0 ms
2,8 ms
2,9 ms
2,9 ms
-------ERGEBNISSE--------
suche macau (Scharlachroter Ara): 0.75781

Fregatte entfalten,

Wie wir bereits angemerkt haben, lässt sich Frigate nicht installieren, Wir werden es in einem Container bereitstellen, Denken Sie also daran, dass Docker zuvor installiert sein muss. Und bevor wir beginnen, müssen wir die Frigate-Konfigurationsdatei erstellen. En mi caso lo dejaré en ‚/mnt/config.yml‘ und das ist ein Minimalbeispiel, wo ich angebe, wer der MQTT-Server ist, der die Ereignisse sendet, der Pfad der DB, LOGs, (optional) Wir geben an, ob wir einen Coral-Beschleuniger haben, und fügen dann die Kameras hinzu, Ich bestehe auf einem Mindestbeispiel:

getötet:
  Gastgeber: DIRECCIÓN_IP_MQTT
  Hafen: 1883
  Benutzer: USER_MQTT
  Passwort: VEREINBARUNG_MQTT

Datenbank:
  Pfad: /media/fregatte/fregatte.db

Logger:
  Standard: die Info
  Protokolle:
    Fregatte.event: debuggen

Detektoren:
Koralle:
Art: edgetpu
Gerät: USB
Kameras: KAMERA_NAME: ffmpeg: Eingänge: - Pfad: rtsp://USER_RTS:PASSWORT@IP_ADRESSE_KAMERA:554/av_stream / ch0 erkennen: Breite: 1280 Höhe: 720

Fregatte ist derzeit in Version 0.10.1, und das sind die unterschiedlichen Bilder, die sie uns je nach Maschine geben, die wir haben:

  • x86: blakeblackshear/Fregatte:0.10.1-amd64
  • x86 mit nvidia (nur für ffmpeg): blakeblackshear/Fregatte:0.10.1-amd64nvidia
  • Raspberry Pi 3/4 (32Bit): blakeblackshear/Fregatte:0.10.1-armv7
  • Raspberry Pi 4 (64Bit): blakeblackshear/Fregatte:0.10.1-aarch64

Wir müssen den Container erstellen und starten, Wir werden Ihnen das USB-Gerät übergeben, Wir vergrößern die memoria compartida, le pasamos el directorio donde nos guardará todos los datos que Frigate necesite (clips, Aufnahmen…), le pasamos el fichero de configuración, Zeit, contraseña de RTSP y el puerto que usaremos para su gestión (5000tcp), seguido de eso, la imagen que queremos; desde una Raspberry Pi 4 ausführen:

sudo docker run -d --name frigate --restart=unless-stopped --mount type=tmpfs,target=/tmp/cache,tmpfs-size=1000000000 --device /dev/bus/usb:/dev/bus/usb --shm-size=128m -v /media/frigate:/media/frigate -v /mnt/config.yml:/config/config.yml:ro -v /etc/localtime:/etc/localtime:ro -e FRIGATE_RTSP_PASSWORD='CONTRASEÑA' -p 5000:5000 -p 1935:1935 blakeblackshear/Fregatte:0.10.1-aarch64

Y tras unos minutos que se descargue todo y arranque el contenedor ya podremos conectar a Frigate, mediante un navegador accedemos a http://DOCKER_IP_ADDRESS:5000 und wir werden so etwas wie dieses Bild oben haben.

Gestatten Sie mir, Ihnen einige Docker-Befehle zu hinterlassen, die Sie möglicherweise für Forschung und Entwicklung benötigen:

sudo docker ps -a		# Liste der Container
sudo docker stop ID_CONT	# Behälter ausschalten
sudo docker start ID_CONT	# Boot-Container
sudo Docker-Neustart ID_CONT	# Behälter neu starten
sudo docker rm ID_CONT		# Behälter löschen
sudo docker system prune -a 	# Beseitigen Sie Caches und anderen Müll, Vorsicht!!
sudo-Docker-Protokolle ID_CONT -f	# Zeigen Sie vom Container generierte Protokolle an

Und dann muss jeder seine Fregatte nach seinem Geschmack weiterentwickeln, Ich lasse dir die Verknüpfung mit der Konfigurationsdatei und all ihren Möglichkeiten. Wir können alle Kameras von Frigate sehen, oder verwenden Sie das Birdeye, Dies ist ein Bildschirm, der ausgeschaltet ist und sich einschaltet, wenn sich eine Kamera bewegt, oder sehen Sie sich die von Ihnen gesammelten Ereignisse an…

Wir haben viele Möglichkeiten, In jeder Kamera können wir Masken erstellen, um das Scannen von Bereichen zu vermeiden, die nicht interessant sind und sich möglicherweise bewegen, um Fehlalarme zu minimieren, weil es sinnlos ist, eine Person außerhalb zu entdecken, auf der Strasse, oder ein Topf, der sich bewegt und unnötige Berechnungen erzeugt… Zonen erstellen, um verschiedene Kameras zu vereinheitlichen… hat viele Chancen. Ich überlasse es Ihnen, falls die Konfiguration, die ich mit meinen Kameras verwende, als Orientierung dient, und Sie können die Rollen jeder Kamera sehen, welche Art von Objekten verfolgt werden sollen, die Auflösung, FPS, Speicherzeit für Bilder, Die Videos… :

KAMERA03:
  ffmpeg:
    Ausgabe_Argumente:
      Aufzeichnung: -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v kopieren -c:ein ac
    Eingänge:
      - Pfad: rtsp://USER_RTSP:PASSWORT@IP_ADRESSE_KAMERA:554//h264Preview_01_main
        Rollen:
          - erkennen
          - clips
          - rtmp
          - Aufzeichnung
          - Schnappschüsse
  Bewegung:
    Maske:
      - 1136,79,1045,62,683,33,576,55,484,69,213,114,30,161,129,278,221,370,238,673,145,709,187,834,253,960,0,960,0,0,954,0,1040,0,1280,0,1280,122
      - 1280,402,901,274,708,224,491,191,473,50,503,53,511,159,690,186,692,149,777,156,789,87,893,120,1083,156,1280,224
  erkennen:
    Breite: 1280
    Höhe: 960
    fps: 5
  Objekte:
    Spur:
      - Person
      - Katze
      - Hund
      #- Vogel
  Aufzeichnung:
    aktiviert: Wahr
    behalten_tage: 0
    Veranstaltungen:
      zuückbehalten:
        Standard: 10
  Schnappschüsse:
    Begrenzungsrahmen: wahr
    aktiviert: wahr
    Zeitstempel: wahr
    zuückbehalten:
      Standard: 10

Fregattenintegration mit Home Assistant

wie konntest du sehen, Ich habe Frigate nicht direkt in Home Assistant installiert, was man machen könnte, aber ich denke, es hängt von der Umgebung ab und für Leistungsprobleme ist es besser, die Komponenten zu trennen. Also Fregatte auf Ihrer Seite und Home Assistant auf Ihrer Seite, zumal Fregatte viel Berechnung erfordert.

Um die Frigate-Integration mit Home Assistant zu installieren, ist es am bequemsten, HACKS zu verwenden. „HACKS“ > „Integrationen“ > „Fregatte“ >Laden Sie es herunter, installieren Sie es und starten Sie den Home Assistant anschließend neu. Wenn es nicht auf der Liste steht, Wir werden dieses Repo hinzufügen ‚https://github.com/blakeblackshear/frigate-hass-integration‘.

Sobald die Integration installiert ist, konfigurieren wir sie, Kommen wir zu den Integrationen, und klicken Sie auf Neue Integration hinzufügen, schreiben ‚Fregatte'…

und nichts, wir müssen nur die URL von Frigate angeben, klicken Sie auf „senden“. Dadurch werden alle Entitäten mit den Kameras erstellt, die wir in Frigate definiert haben, und es bleibt uns nichts anderes übrig, als uns zu unserem Steuerpult zu machen!

Ich bin sicher, dass Sie in Kürze etwas Besseres tun werden als ich, dies ist ein Beispiel für 4 Kameras, wo wir in Echtzeit sehen können, was passiert, Wenn wir auf die Kamera klicken und sie ein Mikrofon hat, können wir sie auch problemlos anhören. Wir können einige Clips mit den neuesten Erkennungen der einzelnen Kameras hinzufügen, dass, wenn Sie einen von ihnen drücken, wir das Video setzen…

Und hier hinterlasse ich Ihnen ein Beispiel für eine Home Assistant-Automatisierung, das, wenn es nachts eine Katze entdeckt, mach ein foto von ihm, Er hat es uns per Telegram geschickt und einen Link mit dem Video, falls wir es sehen wollen. Die Automatisierung hört auf ein MQTT-Ereignis und mit einer Vorlage definieren wir das Objekt, das wir erwarten, in diesem Fall eine Katze. Und dann die Aktion, die wir wollen, Ich hinterlasse Ihnen ein Beispiel in YAML, das Sie verwenden können, um ein Foto und einen Link zum Video zu erhalten:

Bedienung: Telegram_bot.send_photo
Daten:
  url: >-
    http://FRIGATE_IP_ADDRESS:5000/API/Ereignisse/{{trigger.payload_json["gemäß"]["w -a -v bionic-23 -s miclase.midominio.eso -e per"]}}/Schnappschuss.jpg?bbox=0&Ernte = 1
  Untertitel: >-
    {{trigger.payload_json["gemäß"]["Kamera"]|ersetzen("Fregatte_","") | Oberer, höher }}
    {{trigger.payload_json["gemäß"]["Etikette"] | Oberer, höher }} 
    [VIDEO ANSEHEN](https://DIRECCION_IP_FRIGATE/api/events/{{trigger.payload_json["gemäß"]["w -a -v bionic-23 -s miclase.midominio.eso -e per"]}}/clip.mp4)
  Auszeit: 1000

Wenn alles gut gegangen ist, das Ergebnis wäre in etwa so, weil wir zu einer bestimmten Zeit die Besuche kennen, die wir erhalten, offensichtlich kann dies auf Personen oder andere Arten von Objekten angewendet werden, Tiere…

Wie Sie sehen können, ist alles, was wir tun können, ziemlich formbar., Jeder hängt von seinen Besonderheiten ab oder davon, was Sie komplizieren möchten… Ich hoffe, Sie haben interessante, Es ist wirklich nicht sehr teuer, ein eigenes System einzurichten, ohne dass private Bilder ins Ausland gebracht oder von Dritten manipuliert werden können. Ich bin mir auch sicher, dass wir einen besseren Nutzen erzielen als mit jeder kommerziellen Lösung.

Frigate ist die Birne und Home Assistant, ein allmächtiger Gott, nichts, Ich hoffe, dass, das dir gefallen hat, Versuch es, Sei glücklich und danke wie immer denen, die diese Art von Inhalten durch soziale Netzwerke bewegen. Eine Umarmung an alle!

Hector Herrero
Letzte Artikel von Hector Herrero (Alle anzeigen)