Videoüberwachungssystem mit Fregatte und Home Assistant
Wenn Sie einen Home Assistant haben und ein Videoüberwachungssystem einrichten möchten, können Sie (Für zu Hause oder im Geschäft), Nun, es gibt keine andere Wahl, als die Fregatte aufzustellen, Was ist Open Source?. Wir werden in der Lage sein, in Telegram Nachrichten zu empfangen (mit Fotos und Videos), Wenn Kameras Personen erkennen, Hunde, Katzen, Vögel, Pferde…
Brunnen, Die Idee ist einfach, Wir haben oder wollen Überwachungskameras haben, Videoüberwachung, gute Qualität, aber günstige IP-Kameras und verwalten Sie das System selbst. Wo Fregatte Es wird uns helfen, jede Kamera zu zentralisieren und zu konfigurieren, was wir brauchen. Die Fregatte wird für das Aufspüren der Objekte dass wir gesagt haben, Wie Personen erkannt werden, jede Art von Tier, Autos, Registrierung… Wenn wir möchten, werden die Clips und Videos für die von uns angegebene Zeit gespeichert.. Und dann können wir die generierten Ereignisse an Home Assistant senden, und zwar abhängig von einer Reihe von Faktoren (Wir sind unterwegs, Wir schlafen…) das uns über Telegram oder was auch immer wir wollen benachrichtigt.
Frigate wird auf einem Docker-Container ausgeführt, und abhängig von der Anzahl der Kameras, die wir haben, muss es viel CPU verbrauchen und es ist sogar ratsam, Beschleunigerhardware zu verwenden, die die Leistung der Erkennungen verbessert. Alles wird von vielen Faktoren abhängen, Wenn es viele Pixel gibt, die sich in den Kameras ändern, können wir immer Zonen erstellen, um ihre Analyse zu vermeiden; die Anzahl der Kameras oder die Anzahl, die wir ihr geben, da es auf einem Raspberry Pi laufen kann. Für 4-5 Kameras mit dem Google Coral USB-Beschleuniger Uns geht es gut, Es ist ein Co-Prozessor, ein externes TPU, das uns hilft, die Last zu bewegen.
Coral USB-Beschleuniger,
Brunnen, denn damit ist mehr oder weniger der Fisch verkauft, Fangen wir an, wenn Sie möchten 🙂. Das erste, was Sie tun müssen, ist, einen Computer mit Docker zu haben, Dieser Beitrag basiert auf einem Raspberry Pi 4, und der zweite installiert die Treiber des Google Coral USB Accelerators (oder die, die wir verwenden). Um dies zu tun,, Wir laden das Google-Repository herunter:
ECHO "Deb https://packages.cloud.google.com/apt korallen-edgetpu-stabile Hauptleitung" | 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
Wir haben die Runtime und die PyCoral-Bibliothek installiert:
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 Koralle && 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 \ --Eingang test_data/parrot.jpg
Y si va todo bien recibiremos algo como esto:
----INFERENZZEIT---- Anmerkung: Der erste Rückschluss auf Edge TPU ist langsam, da er das Laden des Modells in den Edge TPU-Speicher umfasst. 11.8ms 3.0ms 2.8ms 2.9ms 2.9ms -------ERGEBNISSE-------- Ara macao (Hellroter Ara): 0.75781
Desplegar-Fregatte,
Wie bereits erwähnt, lässt sich die Fregatte nicht installieren, Wir werden es in einem Container bereitstellen, Denken Sie also daran, dass wir Docker zuvor installiert haben müssen. Und bevor wir beginnen, müssen wir die Konfigurationsdatei für die Fregatte erstellen. In meinem Fall belasse ich es bei '/mnt/config.yml’ Und das ist ein minimales Beispiel, wo ich Ihnen sage, wer der MQTT-Server ist, um die Ereignisse zu senden, Der BD-Pfad, Baumstämme, (optional) Wir geben an, ob wir einen Coral-Beschleuniger haben, und fügen dann die Kameras hinzu, Ich bestehe auf einem minimalen Beispiel:
MQTT: Gastgeber: DIRECCIÓN_IP_MQTT Anschluss: 1883 Benutzer: USUARIO_MQTT Passwort: CONTRASEÑA_MQTT Datenbank: Pfad: /Medien/Fregatte/frigate.db Logger: Vorgabe: Info-Protokolle: fregatte.event: Debuggen
Detektoren:
Koralle:
Art: Kanten-TPU
Gerät: USB
Fotoapparate: NOMBRE_DE_LA_CAMARA: ffmpeg: Eingänge: - Pfad: RTSP://USUARIO_RTS:CONTRASEÑA@DIRECCION_IP_CAMARA:554/av_stream/CH0-Erkennung: Breite: 1280 Höhe: 720
Derzeit befindet sich die Fregatte in der 0.10.1, Und das sind die unterschiedlichen Bilder, die sie uns liefern, je nachdem, welche Maschine 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 Größe der Gemeinsamer Speicher, Wir übergeben Ihnen das Verzeichnis, in dem Sie alle Daten speichern, die die Fregatte benötigt (Clips, Aufnahmen…), Wir übergeben Ihnen die Konfigurationsdatei, Stunde, RTSP-Passwort und der Port, den wir für die Verwaltung verwenden werden (5000TCP), gefolgt von dem, Das Bild, das wir wollen; von einem Raspberry Pi 4 Ausführen:
sudo docker run -d --name fregatte --restart=unless-stopped --mount type=tmpfs,target=/tmp/cache,tmpfs-size=10000000000 --Gerät /dev/bus/usb:/dev/bus/usb --shm-size=128m -v /medien/fregatte:/Medien/Fregatte -v /mnt/config.yml:/Konfiguration/config.yml:ro -v /etc/Ortszeit:/usw./Ortszeit:ro -e FRIGATE_RTSP_PASSWORD='CONTRASEÑA' -p 5000:5000 -p 1935:1935 BlakeBlackshear/Fregatte:0.10.1-aarch64
Und nach ein paar Minuten, wenn alles entladen ist und der Container startet, können wir uns mit der Fregatte verbinden, Über einen Browser greifen wir auf HTTP zu://DIRECCION_IP_DOCKER:5000 Und wir haben so etwas wie dieses Bild oben.
Erlauben Sie mir, Ihnen einige Docker-Befehle zu hinterlassen, die Sie möglicherweise für F+E benötigen:
Sudo Docker PS -a # Lista contenedores sudo docker stop ID_CONT # Apaga contenedores sudo docker start ID_CONT # Arranca contenedores sudo docker restart ID_CONT # Reinicia contenedores sudo docker rm ID_CONT # Elimina contenedores sudo docker system prune -a # Löschen Sie Caches und anderen Müll, seien Sie vorsichtig! sudo Docker Logs ID_CONT -f # Anzeigen von Protokollen, die vom Container generiert wurden
Und dann wird jeder seine Fregatte nach seinem Geschmack entwickeln müssen, Ich überlasse dir die verbinden mit der Konfigurationsdatei und all ihren Möglichkeiten. Wir werden in der Lage sein, alle Kameras von Frigate zu sehen, oder verwenden Sie das Birdeye, Dabei handelt es sich um einen Bildschirm, der ausgeschaltet und eingeschaltet wird, wenn sich eine Kamera bewegt, oder sieh dir die Ereignisse an, die du gesammelt hast…
Wir haben so viele Möglichkeiten, In jeder Kamera können wir Masken erstellen, um zu verhindern, dass uninteressante Bereiche gescannt werden, die möglicherweise etwas Bewegung aufweisen, zur Minimierung von Fehlalarmen, weil es sinnlos ist, eine Person draußen zu erkennen, Auf der Straße, oder ein beweglicher Topf, der unnötige Berechnungen erzeugt… Oder erstellen Sie Zonen, um verschiedene Kameras zu vereinheitlichen… hat eine ganze Reihe von Möglichkeiten. Ich lasse Sie für den Fall, dass die Konfiguration, die ich mit meinen Kameras verwende, als Leitfaden dient, und Sie können die Rollen der einzelnen Kameras sehen, Welche Art von Objekten soll verfolgt werden?, Die Entschließung, EGO-SHOOTER, Speicherdauer für Bilder, Die Videos… :
CAMARA03: ffmpeg: output_args: Aufzeichnung: -F-Segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v Kopieren -c:A-AAC-Eingänge: - Pfad: RTSP://USUARIO_RTSP:CONTRASEÑA@DIRECCION_IP_CAMARA:554//h264Preview_01_main Rollen: - entdecken - Clips - Rtmp - Aufzeichnung - Bewegte Schnappschüsse: 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 entdecken: Breite: 1280 Höhe: 960 Ego-Shooter: 5 Objekte: Spur: - Person - Katze - Hund #- Rekord der Vögel: ermöglichte: Echte retain_days: 0 Ereignisse: behalten: Vorgabe: 10 Schnappschüsse: bounding_box: true aktiviert: wahrer Zeitstempel: Echtes Retain: Vorgabe: 10
Frigate-Integration mit Home Assistant
Wie Sie sehen konnten, Ich habe Frigate nicht direkt in Home Assistant installiert, Was könnte getan werden, aber ich denke, es hängt von der Umgebung ab und aus Leistungsgründen ist es besser, die Komponenten zu trennen. Also Fregatte auf der Seite und Home Assistant auf ihrer Seite, zumal die Fregatte viel Rechenleistung erfordert.
Um die Fregattenintegration mit Home Assistant zu installieren, ist es am bequemsten, HACKS zu verwenden. “HACKT” > “Integrationen” > “Fregatte” >Laden Sie es herunter, installieren Sie es und starten Sie Home Assistant neu, nachdem. Wenn es nicht aufgeführt ist, Wir fügen dieses Repo 'https hinzu://github.com/blakeblackshear/frigate-hass-integration".
Sobald die Integration installiert ist, konfigurieren wir sie, Gehen wir zu den Integrationen, und klicken Sie auf Neue Integration hinzufügen, wir schrieben 'Fregatte'…
Und nichts, Alles, was wir tun müssen, ist die URL der Fregatte anzugeben, Anklicken “Senden”. Dadurch werden bereits alle Entitäten mit den Kameras erstellt, die wir in Fregatte definiert haben, Und alles, was übrig bleibt, ist, uns zu unserem Bedienfeld zu machen!
Ich bin mir sicher, dass du in kurzer Zeit etwas besser machen wirst als ich, Dies ist ein Beispiel für 4 Fotoapparate, wo wir in Echtzeit sehen können, was passiert, Wenn wir auf die Kamera klicken und sie hat ein Mikrofon, können wir sie auch problemlos anhören. Wir können einige Clips mit den letzten Erkennungen hinzufügen, die von jeder Kamera gemacht wurden, dass, wenn Sie eine davon drücken, das Video abgespielt wird…
Und hier ist ein Beispiel für eine Home Assistant-Automatisierung, dass, wenn es nachts eine Katze entdeckt, Mach ein Foto von ihm, Ich habe es uns auf Telegram geschickt und einen Link zum Video, falls wir es sehen wollen. Die Automatisierung hört auf ein MQTT-Ereignis und mit einem Template 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:
Dienst: telegram_bot.send_photo-Daten: URL (Englisch): >- HTTP (Englisch)://DIRECCION_IP_FRIGATE:5000/api/veranstaltungen/{{trigger.payload_json["nach"]["Id"]}}/snapshot.jpg?bbox=0&crop=1 Bildunterschrift: >- {{trigger.payload_json["nach"]["Kamera"]|Ersetzen("Fregatte_","") | Oberer }} {{trigger.payload_json["nach"]["Etikett"] | Oberer }} [VIDEO ANSEHEN](https://DIRECCION_IP_FRIGATE/api/veranstaltungen/{{trigger.payload_json["nach"]["Id"]}}/clip.mp4) Zeitüberschreitung: 1000
Wenn alles gut gelaufen ist, Das Ergebnis würde in etwa so aussehen, weil zu einem bestimmten Zeitpunkt, um die Besuche zu kennen, die wir erhalten, Natürlich 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 er verkomplizieren möchte… Ich hoffe, Sie fanden es interessant, Es ist wirklich nicht sehr teuer, ein eigenes System einzurichten, ohne private Bilder nach draußen zu nehmen oder von Dritten manipuliert zu werden. Ich bin mir auch sicher, dass wir eine bessere Leistung erzielen als mit jeder kommerziellen Lösung.
Die Fregatte ist die Birne und Home Assistant ein allmächtiger Gott, nichts, Ich hoffe, dass, die Ihnen gefallen haben, Versuchen, Freut euch und dankt wie immer denjenigen von euch, die diese Art von Inhalten durch soziale Netzwerke verbreiten. Eine Umarmung an tod@s!