Sistema di videosorveglianza con Fregata e Home Assistant

Se hai un Home Assistant e vuoi configurare un sistema di videosorveglianza, puoi (per la casa o l'azienda), Bene, non c'è altra scelta che impostare la fregata, Che cos'è l'Open Source?. Saremo in grado di ricevere messaggi su Telegram (con foto e video), Quando le telecamere rilevano le persone, Cani, Gatti, uccelli, cavalli…

Bene, L'idea è semplice, Abbiamo o vogliamo avere telecamere di sicurezza, videosorveglianza, telecamere IP di buona qualità ma economiche e gestire il sistema da soli. Dove Fregata Ci aiuterà a centralizzare ogni telecamera e configurare ciò di cui abbiamo bisogno. La fregata sarà responsabile dell'individuazione del Oggetti che abbiamo detto, Come vengono rilevate le persone, qualsiasi tipo di animale, Auto, Registrazione… Se vogliamo, memorizzerà le clip e i video per il tempo che indichiamo.. E poi quegli eventi che vengono generati possiamo inviarli a Home Assistant e a seconda di una serie di fattori (Siamo in giro, Stiamo dormendo…) che ci avvisa tramite Telegram o quello che vogliamo.

La fregata funzionerà su un container Docker, e a seconda del numero di telecamere che abbiamo, sarà necessario utilizzare molta CPU ed è anche consigliabile utilizzare un hardware acceleratore che migliori le prestazioni dei rilevamenti. Tutto dipenderà da molti fattori, Se ci sono molti pixel che cambiano nelle telecamere, possiamo sempre creare zone per evitare la loro analisi; il numero di telecamere o il conteggio che gli diamo, poiché può essere eseguito su un Raspberry Pi. Per 4-5 fotocamere con il Acceleratore USB di Google Coral Stiamo andando bene, È un co-processore, un TPU esterno che ci aiuterà a spostare il carico.

Acceleratore USB Coral,

Bene, perché con questo più o meno il pesce si vende, Cominciamo se ti piace 🙂. La prima cosa sarà avere una macchina con Docker, Questo post è basato su un Raspberry Pi 4, e il secondo installa i driver dell'acceleratore USB Google Coral (o quello che usiamo noi). Per fare ciò,, scarichiamo il repository di Google:

ECO "Deb https://packages.cloud.google.com/apt corallo-edgetpu-stabile principale" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | Sudo apt-key add -
Sudo apt-get update

Abbiamo installato il runtime e la libreria PyCoral:

SUDO apt-get install libedgetpu1-std #Para massime prestazioni --> Sudo apt-get install libedgetpu1-max sudo apt-get install python3-pycoral -y

Ora siamo pronti per verificare se il Raspberry Pi riconosce già il dispositivo, Possiamo scaricare un modello di esempio e convalidarlo:

Ward consiglia && cd coral git clone https://github.com/google-coral/pycoral.git cd pycoral bash esempi/install_requirements.sh classify_image.py python3 esempi/classify_image.py \
--Modello test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
--etichette test_data/inat_bird_labels.txt \
--ingresso test_data/parrot.jpg

E se tutto va bene avremo qualcosa del genere:

----TEMPO DI INFERENZA----
Nota: La prima inferenza su Edge TPU è lenta perché include il caricamento del modello nella memoria Edge TPU.
11.8ms 3,0 ms 2,8 ms 2,9 ms 2,9 ms -------RISULTATI--------
Ara macao (Ara scarlatta): 0.75781

Schiera la fregata,

Come accennato in precedenza, Frigate non si installa, Lo distribuiremo in un container, quindi ricorda che dobbiamo avere Docker installato in precedenza. E prima di iniziare dobbiamo creare il file di configurazione della fregata. Nel mio caso lo lascio a '/mnt/config.yml’ E questo è un esempio minimo, dove ti dico chi è il server MQTT per inviare gli eventi, Il percorso BD, Registri, (facoltativamente) indichiamo se abbiamo un acceleratore Coral e poi aggiungiamo le telecamere, Insisto su un esempio minimo:

MQTT:
  ospite: DIRECCIÓN_IP_MQTT porta: 1883
  utente: USUARIO_MQTT password: CONTRASEÑA_MQTT database:
  Sentiero: /Taglialegna per media/fregata/frigate.db:
  default: Registri informativi:
    fregata.evento: Debug

Rivelatori:
Corallo:
digitare: Bordo tpu
dispositivo: USB
Telecamere: NOMBRE_DE_LA_CAMARA: ffmpeg: Ingressi: - Sentiero: RTSP://USUARIO_RTS:CONTRASEÑA@DIRECCION_IP_CAMARA:554/av_stream/ch0 rileva: Larghezza: 1280 altezza: 720

Attualmente la fregata è nel 0.10.1, E queste sono le diverse immagini che ci danno a seconda della macchina che abbiamo:

  • x86: BlakeBlackshear/Fregata:0.10.1-amd64
  • x86 con nvidia (Solo per ffmpeg): BlakeBlackshear/Fregata:0.10.1-amd64nvidia
  • Lampone Pi 3/4 (32pezzo): BlakeBlackshear/Fregata:0.10.1-Armv7
  • Lampone Pi 4 (64pezzo): BlakeBlackshear/Fregata:0.10.1-aarch64

Dobbiamo creare e avviare il contenitore, ti passeremo il dispositivo USB, Aumentiamo le dimensioni del Memoria condivisa, Ti passiamo la directory dove salverai tutti i dati di cui Frigate ha bisogno (Clip, Registrazioni…), Ti passiamo il file di configurazione, Hora, Password RTSP e la porta che utilizzeremo per la sua gestione (5000TCP), seguito da quello, L'immagine che vogliamo; da un Raspberry Pi 4 Eseguire:

Sudo Docker Run -D --Nome Fregata --Restart=A meno che non si fermi --Mount Type=tmpfs,target=/tmp/cache,tmpfs-size=100000000000 --device /dev/bus/usb:/dev/bus/usb --shm-size=128m -v /media/fregata:/media/fregata -v /mnt/config.yml:/config/config.yml:ro -v /etc/localtime:/ecc/ora locale:ro -e FRIGATE_RTSP_PASSWORD='CONTRASEÑA' -p 5000:5000 -p 1935:1935 BlakeBlackshear/Fregata:0.10.1-aarch64

E dopo pochi minuti che tutto è scaricato e il container si avvia, possiamo collegarci alla fregata, Attraverso un browser accediamo a HTTP://DIRECCION_IP_DOCKER:5000 E avremo qualcosa di simile a questa immagine qui sopra.

Permettimi di lasciarti alcuni comandi Docker di cui potresti aver bisogno per R+D:

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 	# Elimina cache e altri rifiuti, fai attenzione!
Sudo Docker Logs ID_CONT -f	# Visualizzare i log generati dal contenitore

E poi ognuno dovrà sviluppare la propria fregata a proprio piacimento, Vi lascio il collegamento con il file di configurazione e tutte le sue possibilità. Saremo in grado di vedere tutte le telecamere da Fregata, o usa il Birdeye, che è uno schermo spento e si accende quando c'è movimento in una fotocamera, o visualizza gli eventi che hai raccolto…

Abbiamo così tante possibilità, In ogni fotocamera possiamo creare maschere per evitare che scansioni aree poco interessanti che potrebbero avere qualche movimento, per ridurre al minimo i falsi positivi, perché è inutile rilevare una persona all'esterno, Per strada, o un vaso mobile che genera calcoli non necessari… Oppure crea zone per unificare diverse telecamere… ha un bel po' di possibilità. Ti lascio nel caso in cui la configurazione che sto utilizzando con le mie fotocamere serva da guida, e puoi vedere i ruoli di ogni telecamera, Che tipo di oggetti tracciare, La risoluzione, Sparatutto in prima persona, Tempo di archiviazione delle immagini, I video… :

CAMARA03:
  ffmpeg:
    output_args:
      Registrazione: -segmento f -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v copia -c:Ingressi aac:
      - Sentiero: RTSP://USUARIO_RTSP:CONTRASEÑA@DIRECCION_IP_CAMARA:554//h264Preview_01_main ruoli:
          - rilevare
          - Clip
          - Rtmp
          - Registrazione
          - Istantanee in movimento:
    Maschera:
      - 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
  rilevare:
    Larghezza: 1280
    altezza: 960
    Fps: 5
  Oggetti:
    pista:
      - persona
      - Gatto
      - cane
      #- Record di uccelli:
    Abilitato: Vero retain_days: 0
    Avvenimenti:
      ritenere:
        default: 10
  Istantanee:
    bounding_box: true abilitato: timestamp reale: Vera conservazione:
      default: 10

Integrazione della fregata con Home Assistant

Come avete potuto vedere, Non ho installato Frigate direttamente su Home Assistant, Cosa si potrebbe fare, ma penso che dipenda dall'ambiente e per motivi di prestazioni è meglio separare i componenti. Quindi la fregata su un fianco e l'assistente domestico sul loro, soprattutto perché la fregata richiede molto calcolo.

Per installare l'integrazione di Frigate con Home Assistant, la cosa più comoda da fare è utilizzare HACKS. “HACK” > “Integrazioni” > “Fregata” >Scaricalo e installalo e riavvia Home Assistant dopo. Se non è elencato, Aggiungeremo questo repo 'https://github.com/blakeblackshear/frigate-hass-integration'.

Una volta installata l'integrazione, la configuriamo, Andiamo alle Integrazioni, e clicca su aggiungi nuova integrazione, abbiamo scritto 'Fregata'…

E niente, tutto quello che dobbiamo fare è indicare l'URL di Fregata, Clicca su “Invia”. Questo creerà già tutte le Entità con le telecamere che abbiamo definito in Fregata, e non resta che fare di noi il nostro pannello di controllo!

Sono sicuro che tra un po' farai qualcosa di meglio di me, Questo è un esempio di 4 Telecamere, dove possiamo vedere in tempo reale cosa sta succedendo, Se clicchiamo sulla fotocamera e ha un microfono possiamo anche ascoltarla senza problemi. Possiamo aggiungere alcune clip con gli ultimi rilevamenti effettuati da ciascuna telecamera, che quando si preme uno di essi riprodurrà il video…

Ed ecco un esempio di automazione Home Assistant, che se rileva un gatto di notte, Scattagli una foto, Ce l'ho inviato su Telegram e un link al video nel caso volessimo vederlo. L'automazione ascolterà un evento MQTT e con un template definiremo l'oggetto che ci aspettiamo, in questo caso un gatto. E poi l'azione che vogliamo, Ti lascio un esempio in YAML che puoi utilizzare per ricevere una foto e un link al video:

servizio: telegram_bot.send_photo dati:
  URL: >-
    Protocollo HTTP://DIRECCION_IP_FRIGATE:5000/api/eventi/{{trigger.payload_json["dopo"]["Id"]}}/snapshot.jpg?bbox=0&crop=1 didascalia: >-
    {{trigger.payload_json["dopo"]["macchina fotografica"]|Sostituire("fregata_","") | Superiore }}
    {{trigger.payload_json["dopo"]["etichetta"] | Superiore }} 
    [GUARDA IL VIDEO](https://DIRECCION_IP_FRIGATE/api/eventi/{{trigger.payload_json["dopo"]["Id"]}}/clip.mp4)
  Timeout: 1000

Se tutto è andato bene, Il risultato sarebbe qualcosa del genere, perché in un momento particolare per conoscere le visite che riceviamo, Ovviamente questo può essere applicato a persone o altri tipi di oggetti, animali…

Come potete vedere, tutto ciò che possiamo fare è abbastanza malleabile, Ognuno dipenderà dalle loro particolarità o da ciò che vogliono complicare… Spero che tu l'abbia trovato interessante, Non è davvero molto costoso configurare il proprio sistema, senza portare le immagini private all'esterno o che una terza parte possa manipolarle. Sono anche sicuro che otteniamo prestazioni migliori rispetto a qualsiasi soluzione commerciale.

La fregata è la pera e l'assistente domestico un dio onnipotente, niente, Spero che, che ti è piaciuto, Provare, Siate felici e ringraziate come sempre chi di voi muove questo tipo di contenuti attraverso i social network. Un abbraccio a tod@s!

Post consigliati

Autore

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Non esitate a contattarmi, Cercherò di aiutarti ogni volta che potrò, Condividere è vivere ;) . Goditi i documenti!!!