Frigate eta Home Assistant erabiliz bideozaintza sistema bat
Home Assistant baduzu eta bideozaintza sistema oso ona muntatu nahi baduzu (etxerako edo enpresarako), ez dago beste aukerarik Frigate muntatzea, kode irekikoa da. Telegram mezuak jasoko ditugu (argazki eta bideoekin), kamerak pertsonak detektatzen dituztenean, txakurak, katak, txoriak, zaldiak…
Onena, ideia sinplea da, segurtasun kamerak ditugu edo ditugu nahi izatea, bideozaintzarako, kalitate oneko baina merkeak diren IP kamerak eta geuk geure sistemaren kudeaketa. Non Frigate kamerako bakoitza zentralizatzen lagunduko digu eta behar duguna konfiguratzen. Frigate arduratuko da detektatzen ditugun objektuak esaten duguna, pertsonen detekzioa izan edota, edozein animali motak, autoak, matrikulak… biltegiratuko du gure nahi dugun clip eta bideoak gure adierazitako denboran zehar. eta sortzen diren ekitaldi horiek Home Assistant-era bidal ditzakegu eta hainbat faktorearen arabera (etxetik kanpo gaudela, lotan gaudela…) Telegram bidez edo nahi dugun moduan alerta gaitzala.
Frigate Docker kontainer batean exekutatuko da, eta kamerak zenbat direnaren arabera CPU asko kontsumitu dezake eta detekzioen errendimendua hobetu dezakeen hardware azeleratzailea erabiltzea gomendagarria da. dena faktore askoren araberakoa izango da, kameretan pixel asko aldatzen badira, beti sor ditzakegu zonak analisia saihesteko; kamerak kopuruari edo ematen diogun konputuari, Raspberry Pi batean exekuta daitekeelako. Hori egiteko 4-5 kameraekin batera Google Coral USB Accelerator ondo goaz, ko-prozesadore bat da, kanpoko TPU bat, karga mugitzen lagunduko diguna.
Coral USB Accelerator,
Onena, honekin gutxi gorabehera dena prest dago, hasiko gara, ahal bada 🙂 Lehenik eta behin Docker duen makina bat izatea izango da, posta hau Raspberry Pi batean oinarrituta dago 4, eta bigarrena Google Coral USB Accelerator-en driver-ak instalatzea izango da (edo guk erabiltzen duguna). Para ello, Google-ren biltegia deskargatzen dugu:
echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.listcurl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo apt-get update
Runtime-a eta PyCoral liburutegia instalatzen ditugu:
sudo apt-get install libedgetpu1-std#Maximo errendimendurako --> 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 examples/install_requirements.sh classify_image.py python3 examples/classify_image.py \ --model test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \ --labels test_data/inat_bird_labels.txt \ --input test_data/parrot.jpg
Y si va todo bien recibiremos algo como esto:
----INFERENCE TIME---- Note: Edge TPUren lehen inferentzia motela da, eredua Edge TPU memorian kargatzea barne hartzen duelako. 11.8ms 3.0ms 2.8ms 2.9ms 2.9ms -------RESULTS-------- Ara macao (Scarlet Macaw): 0.75781
Desplegar Frigate,
Como hemos comentado anteriormente Frigate no se instala, lo desplegaremos en un contenedor, así que recordar que necesitamos tener instalado Docker previamente. Y antes de comenzar necesitamos un crear el archivo de configuración de Frigate. En mi caso lo dejaré en '/mnt/config.yml’ y este es un ejemplo mínimo, donde le indico quien es el servidor de MQTT para enviar los eventos, el path de la BD, LOGak, (opcionalmente) indicamos si tenemos un acelerador de Coral y luego añadimos las cámaras, insisto ejemplo mínimo:
mqtt:
host: DIRECCIÓN_IP_MQTT
port: 1883
user: USUARIO_MQTT
password: CONTRASEÑA_MQTT
database:
path: /media/fraggate/frigate.db
logger:
default: info
logs:
fraggate.event: debug
detectors:
coral:
type: edgetpu
gailu: usb
cameras:
NOMBRE_DE_LA_CAMARA:
ffmpeg:
inputs:
- path: rtsp://USUARIO_RTS:CONTRASEÑA@DIRECCION_IP_CAMARA:554/av_stream/ch0
detect:
width: 1280
height: 720
Actualmente esta fragata en la versión 0.10.1, y estas son las distintas imágenes que nos dan dependiendo la máquina que tengamos:
- x86: blakeblackshear/frigate:0.10.1-amd64
- x86 w/ nvidia (for ffmpeg only): blakeblackshear/frigate:0.10.1-amd64nvidia
- Raspberry Pi 3/4 (32bit): blakeblackshear/frigate:0.10.1-armv7
- Raspberry Pi 4 (64bit): blakeblackshear/frigate:0.10.1-aarch64
Tenemos que crear y arrancar el contenedor, le pasaremos el dispositivo USB, incrementamos el tamaño de la memoria compartida, le pasamos el directorio donde nos guardará todos los datos que Frigate necesite (clips, grabaciones…), le pasamos el fichero de configuración, hora, 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 ejecutaremos:
sudo docker run -d --name fraggate --restart=unless-stopped --mount type=tmpfs,target=/tmp/cache,tmpfs-size=1000000000 --device /dev/bus/usb:/dev/bus/usb --shm-size=128m -v /media/fraggate:/media/fragata -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/frigate: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://DIRECCION_IP_DOCKER:5000 y tendremos algo como esta imagen superior.
Permitirme que os deje unos comandos de Docker que a lo mejor necesitáis para i+D:
sudo docker ps -a # Lista contenedores sudo docker stop ID_CONT # Apaga contenedor sudo docker start ID_CONT # Arranca contenedor sudo docker restart ID_CONT # Reinicia contenedor sudo docker rm ID_CONT # Elimina contenedor sudo docker system prune -a # Elimina caches y demás morrallas ¡ojo! sudo docker logs ID_CONT -f # Ver logs generados por el contenedor
Y luego ya cada uno tendrá que desarrollar su fragata a su gusto, os dejo el link konfigurazio fitxategiarekin eta bere aukerazio guztiekin. Frigate-tik kamerak guztiak ikus ditzakegu, edo Birdeye erabili, pantaila itxita dago eta kameraren batean mugimendu bat dagoenean pizten da, edo jasotako gertaerak ikus ditzakegu…
Aukera ugari ditugu, kamerako bakoitzean maskarak sor ditzakegu interesgarriak ez diren eremuak eskaneatzea saihesteko eta agian mugimendu batzuk dituztenak, faltsu positiboak minimizatzeko, ezinezkoa da pertsona bat kanpoan detektatzea, kaleko, edo mugimenduan dagoen loreontzi bat, beharrezkoak ez diren kalkuluak sortzen dituena… edo guneak sortu kamerak bateratzeko… asko aukera ditu. Zuekin partekatzen dut nire kamerarekin erabiltzen ari naizen konfigurazioa, orientabide gisa balio dezakeen, y podáis ver los roles de cada cámara, qué tipo de objetos trackear, la resolución, FPS, tiempo de almacenamiento para las imágenes, los videos… :
CAMARA03:
ffmpeg:
output_args:
record: -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v copy -c:a aac
inputs:
- path: rtsp://USUARIO_RTSP:CONTRASEÑA@DIRECCION_IP_CAMARA:554//h264Preview_01_main
roles:
- detect
- clips
- rtmp
- record
- snapshots
motion:
mask:
- 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
detect:
width: 1280
height: 960
fps: 5
objects:
track:
- person
- cat
- dog
#- bird
record:
enabled: True
retain_days: 0
events:
retain:
default: 10
snapshots:
bounding_box: true
enabled: true
timestamp: true
retain:
default: 10
Integración de Frigate con Home Assistant
Cómo habéis podido ver, no he instalado Frigate en Home Assistant directamente, que se podría hacer, pero creo que depende del entorno y por temas de rendimiento es mejor separar los componentes. Así que Frigate por su lado y Home Assistant por el suyo, sobre todo porque Frigate demanda mucho cómputo.
Para instalar la integración de Frigate con Home Assistant lo más cómodo es usar HACKS. “HACKS” > “Integraciones” > “Frigate” >Descargar e instalarlo y reiniciar Home Assistant después. Si no sale en el listado, añadiremos esta repo 'https://github.com/blakeblackshear/frigate-hass-integration'.
Una vez instalada la integración la configuramos, vamos a las Integraciones, y pulsamos en añadir nueva integración, escribimos 'Frigate'…
Eta ezer, no nos queda más que indicar la URL de Frigate, sustatu “Bidali”. Esto ya nos creará todas las Entidades con las cámaras que tengamos definidas en Frigate, y no queda más que hacernos nuestro panel de control!
Estoy seguro que en un ratito hacéis algo mejor que yo, este es un ejemplo de 4 cámaras, donde podemos ver en tiempo real qué sucede, si pinchamos en la cámara y tiene micrófono podremos escucharlo también sin problemas. Podemos añadir unos clips con las últimas detecciones que hizo cada cámara, que al pulsar alguno de ellos nos ponga el video…
Y aquí os dejo un ejemplo de una automatización de Home Assistant, que si detecta un gato a la noche, le haga una foto, nos la mande por Telegram y un link con el video por si queremos verlo. La automatización escuchará un evento de MQTT y con una plantilla definimos el objeto que esperamos, en este caso un gato. Y luego la acción que nos de la gana, os dejo un ejemplo en YAML que podéis usar para recibir una foto y un link al video:
service: telegram_bot.send_photo
data:
url: >-
http://DIRECCION_IP_FRIGATE:5000/api/events/{{trigger.payload_json["after"]["id"]}}/snapshot.jpg?bbox=0&crop=1
caption: >-
{{trigger.payload_json["after"]["camera"]|replace("frigate_","") | upper }}
{{trigger.payload_json["after"]["label"] | upper }}
[VIEW VIDEO](https://DIRECCION_IP_FRIGATE/api/events/{{trigger.payload_json["after"]["id"]}}/clip.mp4)
timeout: 1000
Si todo ha ido bien, el resultado sería algo como esto, pues en un horario en particular conocer las visitas que recibimos, obviamente esto se puede aplicar a personas u otro tipo de objetos, animales…
Como veis es bastante maleable todo lo que podemos hacer, dependerá cada uno sus particularidades o lo que se quiera complicar… Espero que os haya resultado interesante, de verdad que no es muy costoso el montarse un sistema propio, sin sacar imágenes privadas al exterior o un tercero pueda manipularlas. Además estoy seguro que obtenemos mejores prestaciones que con cualquier solución comercial.
Frigate-a bikaina da eta Home Assistant Jainko indartsu bat da, ezer, horregatik espero dut, gustatu izana, saihatu behar izatea, zoriontsu izan eta eskerrak ematea beti bezala sare sozialetan mota honetako edukia partekatzen duzuenoi. Besarkada denoi!

















































