Deteccion de objetos: FRIGATE en Home Assistant

En el artículo de hoy vamos a ver que es Frigate. Frigate es un sistema NVR. Las siglas NVR significan Network Video Recorder o, en nuestro castellano, Grabador de Vídeo de Red. Un NVR puede tratarse de un dispositivo externo o bien un software que podemos instalar en nuestro sistema (ordenador, Raspberry, etc).

En este artículo vamos a ver como instalar y configurar Frigate en nuestro Home Assistant. Vamos a ver cómo es capaz de detectar muchísimos objetos y cómo podemos grabar 24/7 si así lo deseamos.

La documentación oficial sobre Frigate la podéis encontrar aquí. También podéis consultar el github del desarrollador, importante y muy necesario. Como siempre indico, es altamente recomendable leer la documentación oficial para resolver dudas, problemas de instalación y demás inconvenientes que podamos tener. El propósito de este artículo no es explicar el 100% de este proyecto sino tener las suficientes nociones como para poder integrarlo en Home Assistant.

El vídeo sobre este artículo, como siempre, lo podéis encontrar en mi canal, el cual podéis visitar y aprovechad para suscribiros si os gusta el contenido. Intento publicar al menos un vídeo a la semana y cuando el tiempo me lo permite, subo varios vídeos.

Este artículo forma parte de una serie sobre detección de objetos que podéis consultar en el blog. También podéis ver el vídeo justo aquí debajo para que os resulte más fácil la explicación sobre Frigate.

Instalación de Frigate en HACS

Para instalar Frigate, tendremos que tener Hacs instalado. Si no sabes cómo hacerlo puedes consultar el artículo aquí.

Una vez instalado Hacs, pulsaremos sobre Integraciones, seleccionamos los 3 puntitos que tenemos en la parte superior derecha de la pantalla y elegimos Repositorios Personalizados. En la ventana que se nos abre pegamos la dirección del repositorio y elegimos Integración como Categoría. Seleccionamos Frigate e instalamos el repositorio.

Una vez instalado el repositorio tenemos que reiniciar el sistema: configuración – Configuración general – verificamos la configuración – reiniciar.

El siguiente paso es instalar el add on Mosquitto Broker y configurarlo. Si no sabes cómo hacerlo puedes consultar el vídeo en mi canal de YouTube.

Una vez instalado y configurado MQTT, instalamos el add on Frigate. Para ello nos vamos a la pestaña supervisor – tienda de complementos y buscamos frigate. Si no os apareciese el add on, pulsaremos sobre los 3 puntitos de la parte superior derecha y seleccionamos Repositorios. En la ventana que se nos abre añadís el siguiente repositorio. Si habéis hecho la integración con Hacs este paso no debería ser necesario.

Una vez instalado Frigate, muy importante desactivar el Modo Protección. Las demás opciones son a vuestro gusto, aunque recomiendo activar «Mostrar en la barra lateral».

Integración en Home Assistant

Para hacer la integración en nuestro Home Assistant y que funcione correctamente tenéis que visitar la documentación oficial de Frigate y elegir la configuración que se adecue a vuestro sistema. Esto varía si es una Raspberry, NUC u otro diferente. Aquí tenéis las diferentes alternativas y es muy importante tenerlo claro antes de crear el archivo necesario que vamos a ver en el siguiente paso.

En nuestro File editor vamos a pulsar sobre la carpeta que tenemos en la parte superior (Browse Filesystem). Aquí seleccionamos New File y como nombre le ponemos: frigate.yml.

En este archivo escribiremos el siguiente código. Este es solo de ejemplo y recomiendo variarlo a vuestro gusto:

detectors:
  cpu1:
    type: cpu
mqtt:
  # Required: host name
  host: 172.30.33.0 (eL HOST de MQTT)
  # Optional: port (default: shown below)
  port: 1883
  # Optional: topic prefix (default: shown below)
  # WARNING: must be unique if you are running multiple instances
  topic_prefix: frigate
  # Optional: client id (default: shown below)
  # WARNING: must be unique if you are running multiple instances
  client_id: frigate
  # Optional: VUESTRO_USUARIO_DE_MQTT
  user: mqtt
  # Optional: password
  # NOTE: Environment variables that begin with 'FRIGATE_' may be referenced in {}.
  #       eg. password: '{FRIGATE_MQTT_PASSWORD}'
  password: VUESTRO_PASSWORD_DE_MQTT
  # Optional: interval in seconds for publishing stats (default: shown below)
  stats_interval: 60
cameras:
  # Name of your camera
  MI_CAMARA: (El nombre que querais darle a vuestra cámara)
    ffmpeg: (Muy importante cambiarlo dependiendo del sistema donde instaleis FRIGATE)
      hwaccel_args:
        - -hwaccel
        - qsv
        - -qsv_device
        - /dev/dri/renderD128
      inputs:
        - path: rtsp://usuario:contraseña@192.168.1.69:554/stream1
          roles:
            - detect
            - clips
#        - path: rtsp://usuario:contraseña@192.168.1.69:554/stream2
#          roles:
#            - detect
#            - clips
    objects:
      track:
        - person
        - cell phone
        # Optional: save clips configuration
    clips:
      # Required: enables clips for the camera (default: shown below)
      # This value can be set via MQTT and will be updated in startup based on retained value
      enabled: True
      # Optional: Number of seconds before the event to include in the clips (default: shown below)
      pre_capture: 5
      # Optional: Number of seconds after the event to include in the clips (default: shown below)
      post_capture: 5
      # Optional: Objects to save clips for. (default: all tracked objects)
      objects:
        - person
      # Optional: Restrict clips to objects that entered any of the listed zones (default: no required zones)
      required_zones: []
      # Optional: Camera override for retention settings (default: global values)
      retain:
        # Required: Default retention days (default: shown below)
        default: 1
        # Optional: Per object retention days
        objects:
          person: 15
        # Optional: Configuration for the jpg snapshots written to the clips directory for each event
    snapshots:
      # Optional: Enable writing jpg snapshot to /media/frigate/clips (default: shown below)
      # This value can be set via MQTT and will be updated in startup based on retained value
      enabled: True
      # Optional: print a timestamp on the snapshots (default: shown below)
      timestamp: False
      # Optional: draw bounding box on the snapshots (default: shown below)
      bounding_box: True
      # Optional: crop the snapshot (default: shown below)
      crop: False
      # Optional: height to resize the snapshot to (default: original size)
      height: 175
      # Optional: Restrict snapshots to objects that entered any of the listed zones (default: no required zones)
      required_zones: []
      # Optional: Camera override for retention settings (default: global values)
      retain:
        # Required: Default retention days (default: shown below)
        default: 1
        # Optional: Per object retention days
        objects:
          person: 15
    width: 1920
    height: 1080
    fps: 5

Se pueden habilitar las grabaciones las 24 horas los 7 dias de la semana y se almacenaran en la siguiente ruta: /media/frigate/recordings. Para ello tendriamos que añadir el siguiente código en nuestro archivo de configuración:

record:
  # Optional: Enable recording
  enabled: True
  # Optional: Number of days to retain
  retain_days: 30

Muy importante saber la configuración de imagen de vuestra cámara. Si no estáis seguros podéis comprobarlo abriendo VLC media player, seleccionar Abrir ubicación de red y aquí escribir la dirección rtsp de vuestra cámara. Cada cámara es diferente y lo mejor es consultar el manual.

Una vez hecho esto, pulsamos el botón derecho del ratón sobre la imagen, seleccionamos Herramientas – información del codec (o bien pulsamos Ctrl + j). Aquí podemos observar la resolución de vídeo que es la que tendremos que escribir en nuestro archivo de configuración.

Una vez creado el archivo reiniciamos el sistema, eso sí, comprobando que no tenemos ningún error en nuestro Home Assistant.

Interfaz web de Frigate

El primer paso sería iniciar el add on. Para ello nos vamos a la pestaña supervisor de nuestro menú lateral, seleccionamos el add on frigate y pulsamos sobre iniciar. Podemos comprobar que todo está configurado correctamente en el Registro o Log. Si tenemos algún tipo de error aquí podremos ver de qué se trata.

A continuación, una vez iniciado, ya podremos abrir la Interfaz web pulsando sobre el mismo en el propio add on o bien en el acceso directo de nuestro menú lateral, si lo hemos creado con anterioridad.

frigate interfaz web

La interfaz que veremos será similar a la siguiente imagen, lógicamente con la imagen que vuestra cámara esté capturando en ese momento. Si os aparece la imagen en verde es que tenéis algún error en la configuración, bien en el ffmpeg o bien en la resolución de la cámara que habéis configurado en el archivo previo.

En el menú lateral izquierdo tenemos 3 opciones:

  1. Cameras: Aquí nos aparecerán todas las cámaras que hayamos configurado previamente
  2. Events: Aquí podremos ver todos los eventos configurados: detección de los objetos que hayamos incluido en nuestro archivo.
  3. Debug: Podremos observar un breve resumen de nuestro archivo frigate.yml y una serie de datos que identifican nuestro sistema: fps, nombre del cámara, pid, etc.

Sobre la imagen tendremos 3 botones que nos permitirán activar o desactivar de forma fácil y rápida la detección de movimiento y la captura de clips y snapshots.

Si pulsamos sobre la imagen podremos ver el Objects Tracked (rastreador de objetos) que son los objetos que nosotros previamente habremos configurado para su detección en nuestro archivo.

Además, tendremos un boton (Show Options) en el cual hay varias opciones que podremos activar o desactivar e incluso podremos configurar las zonas y mascaras.

  1. Bounding box: Muestra recuadros sobre los objetos detectados.
  2. Timestamp: Imprime la marca de tiempo en la parte superior izquierda.
  3. Zones: Dibuja las zonas de la imagen. Debemos configurarlas previamente.
  4. Masks: Superpone la mascara sobre la imagen. Debemos configurarla previamente.
  5. Motion Boxes: Dibuja cuadros azules en las zonas de movimiento detectado
  6. Regions: Dibuja cuadros verdes en las areas donde se ejecutó la detección de objetos.
  7. Mask & Zone creator: Permite definir máscaras y zonas.

Para añadir Mascaras y Zonas, simplemente pulsaríamos sobre Mask & Zone creator. En la ventana que se nos abre, haríamos click en el botón ADD situado en el lateral derecho sobre «MOTION MASK o ZONES» dependiendo de nuestra opción deseada. Sobre la imagen de la cámara iríamos colocando puntos con lo cuales podríamos definir la Mascara o zona. Esto nos generará unas coordenadas de este tipo:

motion:
  mask: "0,461,3,0,1919,0,1919,843,1699,492,1344,458,1346,336,973,317,869,375,866,432"

Copiaremos el código y lo incluiremos en nuestro archivo de configuración. Una vez hecho esto reiniciaremos el sistema (en principio con reiniciar el add on bastaría, pero yo soy bastante obsesivo en este aspecto) y ya tendremos funcionando frigate con las nuevas zonas y/o mascaras.

Como ya os he comentado anteriormente, tenéis en la documentación oficial una explicación detallada y muy completa sobre Frigate por lo que no voy a extenderme más sobre el tema.

Dar las gracias al desarrollador por este gran trabajo y que permite que usuarios como yo puedan disfrutarlo.

Espero que os haya sido de utilidad.

Nos vemos en el siguiente artículo, nos vemos en Tecnosanvaras.

Un saludo a todos y …

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *