Sistema de vigilância por vídeo com fragata e assistente doméstico

Se você tem um Home Assistant e deseja configurar um sistema de vigilância por vídeo, você pode (para casa ou empresa), Bem, não há escolha a não ser montar a Fragata, O que é Open Source?. Poderemos receber no Telegram mensagens (com fotos e vídeos), Quando as câmeras detectam pessoas, Cães, Gatos, Pássaros, Cavalos…

Poço, A ideia é simples, Temos ou queremos ter câmeras de segurança, Vigilância por vídeo, câmeras IP de boa qualidade, mas baratas e gerenciar o sistema nós mesmos. Onde Fragata Isso nos ajudará a centralizar cada câmera e configurar o que precisamos. A fragata será responsável por detectar o Objetos que dissemos, Como as pessoas são detectadas, qualquer tipo de animal, Carros, Inscrição… Se quisermos, ele armazenará os clipes e vídeos pelo tempo que indicarmos.. E então esses eventos que são gerados, podemos enviá-los para o Home Assistant e dependendo de uma série de fatores (Estamos fora de casa, Estamos dormindo…) que nos alerta via Telegram ou o que quisermos.

A fragata será executada em um contêiner Docker, e dependendo do número de câmeras que temos, será necessário usar muita CPU e é até aconselhável usar hardware acelerador que melhore o desempenho das detecções. Tudo vai depender de muitos fatores, Se houver muitos pixels que mudam nas câmeras, sempre podemos criar zonas para evitar sua análise; o número de câmeras ou a contagem que damos, já que pode ser executado em um Raspberry Pi. Durante 4-5 câmeras com o Acelerador USB do Google Coral Estamos indo bem, É um coprocessador, um TPU externo que nos ajudará a mover a carga.

Acelerador USB Coral,

Poço, porque com isso mais ou menos o peixe é vendido, Vamos começar se você gosta 🙂 . A primeira coisa será ter uma máquina com Docker, Este post é baseado em um Raspberry Pi 4, e o segundo instala os drivers do Google Coral USB Accelerator (ou o que usamos). Para fazer isso,, baixamos o repositório do Google:

ECO "Deb https://packages.cloud.google.com/apt principal coral-edgetpu-estável" | 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 -
Atualização do sudo apt-get

Instalamos o tempo de execução e a biblioteca PyCoral:

SUDO apt-get install libedgetpu1-std #Para desempenho máximo --> 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 exemplos de cd pycoral bash / install_requirements.sh classify_image.py exemplos de python3 / classify_image.py \
--modelo test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
--Etiquetas test_data/inat_bird_labels.txt \
--test_data/parrot.jpg de entrada

Y si va todo bien recibiremos algo como esto:

----TEMPO DE INFERÊNCIA----
Nota: A primeira inferência no Edge TPU é lenta porque inclui o carregamento do modelo na memória do Edge TPU.
11.8ms 3,0ms 2,8ms 2,9ms 2,9ms -------RESULTADOS--------
Ara macau (Arara Escarlate): 0.75781

Fragata Desplegar,

Como hemos comentado anteriormente Frigate no se instala, Vamos implantá-lo em um contêiner, então lembre-se de que precisamos ter o Docker instalado anteriormente. E antes de começarmos, precisamos criar o arquivo de configuração da fragata. No meu caso, vou deixá-lo em '/mnt/config.yml’ E este é um exemplo mínimo, onde eu digo quem é o servidor MQTT para enviar os eventos, O caminho BD, Logs, (Opcionalmente) indicamos se temos um acelerador Coral e depois adicionamos as câmeras, Insisto em um exemplo mínimo:

MQTT:
  anfitrião: DIRECCIÓN_IP_MQTT porto: 1883
  utilizador: USUARIO_MQTT senha: CONTRASEÑA_MQTT banco de dados:
  Caminho: /Logger de mídia/fragata/frigate.db:
  inadimplência: registros de informações:
    fragata.evento: Depurar

Detectores:
coral:
tipo: Borda tpu
dispositivo: USB
Câmeras: NOMBRE_DE_LA_CAMARA: ffmpeg: Entradas: - Caminho: RTSP://USUARIO_RTS:CONTRASEÑA@DIRECCION_IP_CAMARA:554/av_stream/ch0 detectam: Largura: 1280 altura: 720

Atualmente a fragata está no 0.10.1, e essas são as diferentes imagens que eles nos dão dependendo da máquina que temos:

  • x86: blakeblackshear/fragata:0.10.1-amd64
  • x86 com NVIDIA (Apenas para ffmpeg): blakeblackshear/fragata:0.10.1-amd64nvidia
  • Framboesa Pi 3/4 (32bit): blakeblackshear/fragata:0.10.1-Armv7
  • Framboesa Pi 4 (64bit): blakeblackshear/fragata:0.10.1-aarch64

Temos que criar e iniciar o contêiner, nós passar-lhe-emos o dispositivo do USB, aumentamos o tamanho do Memória compartilhada, Passamos a você o diretório onde você salvará todos os dados que a Fragata precisa (Clipes, Gravações…), Passamos o arquivo de configuração para você, hora, Senha RTSP e a porta que usaremos para seu gerenciamento (5000TCP), seguido por isso, A imagem que queremos; de um Raspberry Pi 4 Executar:

sudo docker run -d --name fragata --restart=a menos que parado --mount type=tmpfs,target=/tmp/cache,tmpfs-size=10000000000 --dispositivo /dev/bus/usb:/dev/bus/usb --shm-size=128m -v /media/fragata:/mídia / fragata -v / mnt / config.yml:/config/config.yml:ro -v /etc/localtime:/etc/hora local:ro -e FRIGATE_RTSP_PASSWORD='CONTRASEÑA' -p 5000:5000 -p 1935:1935 blakeblackshear/fragata:0.10.1-aarch64

E depois de alguns minutos que tudo é descarregado e o contêiner inicia, podemos nos conectar ao Fragata, Através de um navegador acessamos HTTP://DIRECCION_IP_DOCKER:5000 E teremos algo parecido com esta imagem acima.

Permita-me deixar alguns comandos do Docker que você pode precisar para 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 	# Exclua caches e outros lixos, tenha cuidado!
Sudo Docker Logs ID_CONT -f	# Exibir logs gerados pelo contêiner

E então todos terão que desenvolver sua fragata ao seu gosto, Deixo-vos o link com o arquivo de configuração e todas as suas possibilidades. Poderemos ver todas as câmeras da Fragata, ou use o Birdeye, que é uma tela desligada e liga quando há movimento em uma câmera, ou ver os eventos que você coletou…

Temos tantas possibilidades, Em cada câmera podemos criar máscaras para evitar que ela escaneie áreas desinteressantes que possam ter algum movimento, para minimizar falsos positivos, porque é inútil detectar uma pessoa de fora, Na rua, ou um pote móvel que gera computação desnecessária… Ou crie zonas para unificar câmeras diferentes… tem algumas possibilidades. Deixo-vos caso a configuração que estou usando com minhas câmeras sirva de guia, e você pode ver as funções de cada câmera, Que tipo de objetos rastrear, A resolução, FPS, Tempo de armazenamento para imagens, Os vídeos… :

CAMARA03:
  ffmpeg:
    output_args:
      registro: -Segmento F -segment_time 10 -segment_format mp4 -reset_timestamps 1 -hora da luta 1 -c:v cópia -c:Entradas A aac:
      - Caminho: RTSP://USUARIO_RTSP:CONTRASEÑA@DIRECCION_IP_CAMARA:554//h264Preview_01_main papéis:
          - detectar
          - Clipes
          - Rtmp
          - registro
          - Instantâneos de movimento:
    Máscara:
      - 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
  detectar:
    Largura: 1280
    altura: 960
    Fps: 5
  Objetos:
    pista:
      - pessoa
      - Gato
      - cão
      #- Registro de pássaros:
    Habilitado: Verdadeiro retain_days: 0
    Eventos:
      reter:
        inadimplência: 10
  Instantâneos:
    bounding_box: true habilitado: carimbo de data/hora verdadeiro: Retenção Verdadeira:
      inadimplência: 10

Integração da fragata com o Home Assistant

Como você pôde ver, Não instalei o Frigate no Home Assistant diretamente, O que poderia ser feito, mas acho que depende do ambiente e por questões de desempenho é melhor separar os componentes. Então Fragata de lado e Home Assistant de lado, especialmente porque a Fragata exige muita computação.

Para instalar a integração do Frigate com o Home Assistant, a coisa mais conveniente a fazer é usar o HACKS. “HACKS” > “Integrações” > “Fragata” >Faça o download e instale-o e reinicie o Home Assistant após. Se não estiver listado, Vamos adicionar este repositório 'https://github.com/blakeblackshear/frigate-hass-integration'.

Uma vez instalada a integração, nós a configuramos, Vamos para as integrações, e clique em Adicionar nova integração, nós escrevemos 'Fragata'…

E nada, tudo o que precisamos fazer é indicar a URL da Fragata, Clique em “Enviar”. Isso já criará todas as Entidades com as câmeras que definimos na Fragata, E tudo o que resta é nos tornar nosso painel de controle!

Tenho certeza de que em pouco tempo você fará algo melhor do que eu, Este é um exemplo de 4 Câmeras, onde podemos ver em tempo real o que está acontecendo, Se clicarmos na câmera e ela tiver um microfone, também podemos ouvi-la sem problemas. Podemos adicionar alguns clipes com as últimas detecções feitas por cada câmera, que quando você pressionar um deles ele reproduzirá o vídeo…

E aqui está um exemplo de automação Home Assistant, que se detectar um gato à noite, tire uma foto dele, Enviei-nos no Telegram e um link para o vídeo caso queiramos vê-lo. A automação ouvirá um evento MQTT e com um modelo definimos o objeto que esperamos, neste caso, um gato. E então a ação que queremos, Deixo-vos um exemplo em YAML que podem usar para receber uma foto e um link para o vídeo:

serviço: telegram_bot.send_photo dados:
  URL: >-
    Referências HTTP://DIRECCION_IP_FRIGATE:5000/api/eventos/{{trigger.payload_json["depois"]["Id"]}}/snapshot.jpg?bbox=0&crop=1 legenda: >-
    {{trigger.payload_json["depois"]["câmera"]|Substituir("fragata_","") | Superior }}
    {{trigger.payload_json["depois"]["etiqueta"] | Superior }} 
    [VER O VÍDEO](https (em inglês)://DIRECCION_IP_FRIGATE/api/events/{{trigger.payload_json["depois"]["Id"]}}/clip.mp4)
  Timeout: 1000

Se tudo correu bem, O resultado seria algo assim, porque em um determinado momento para conhecer as visitas que recebemos, Obviamente, isso pode ser aplicado a pessoas ou outros tipos de objetos, Animais…

Como você pode ver, tudo o que podemos fazer é bastante maleável, cada um vai depender de suas particularidades ou do que quer complicar… Espero que você tenha achado interessante, Realmente não é muito caro configurar seu próprio sistema, sem tirar imagens privadas para fora ou um terceiro pode manipulá-las. Também tenho certeza de que obtemos um desempenho melhor do que com qualquer solução comercial.

Fragata é a pêra e Home Assistant um Deus todo-poderoso, nada, Espero que, que você gostou, Tentar, Fique feliz e agradeça como sempre a quem movimenta esse tipo de conteúdo pelas redes sociais. Um abraço para tod@s!

Postagens recomendadas

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Não hesite em contactar-me, Vou tentar ajudá-lo sempre que puder, Compartilhar é viver ;) . Desfrute de documentos!!!