Detección de objetos: DOODS en Home Assistant

DOODS: Dedicated Open Object Detection Service

Primer vídeo sobre la detección de objetos en Home Assistant. En este caso voy a hablaros de Doods. Doods es un sistema de procesamiento de imágenes que nos va a permitir reconocer objetos en una cámara. Mediante capturas de imagen, vamos a tener la posibilidad de distinguir muchos objetos que la cámara va a ser capaz de reconocer y, además, nos va a indicar el porcentaje de fiabilidad que tiene al reconocer el objeto.

A lo largo de una serie de vídeos, vamos a ver las distintas alternativas que nos ofrece Home Asssistant para integrar este tipo de sistemas. Doods es la primera opción de la que os voy a hablar hoy. Quizá no la mejor, pero fue la que primero conocimos dentro de Home Assistant. Muy fácil de instalar y configurar, es una buena oportunidad para que, los que todavía no conozcáis este tipo de servicios, os empecéis a familiarizar con el tema.

A diferencia de otras alternativas que veremos en los siguientes artículos, Doods permanece en constante ejecución. Nosotros podemos crear una automatización para que nos envíe una imagen a Telegram o similar cuando ocurra una acción en concreto: que detecte a una persona, a un coche, etc. Pero el proceso de Doods no se va a detener salvo que nosotros detengamos el add on. Vamos a poder elegir que guarde imágenes en un intervalo de tiempo, pero ya sea corto o largo, siempre va a estar en funcionamiento. Esto puede llegar a causar un gasto importante de recursos en nuestro sistema. Para que lo entendáis, es como si tenemos una cámara y esta permanece grabando durante las 24 horas del día.

Otros sistemas, a diferencia de Doods, solo entran en ejecución cuando yo le indico de alguna forma que lo haga. Cuando detecte un coche, una persona, un gato, etc. Permanece como en reposo, y solo empieza a funcionar si yo se lo indico de alguna forma (con un sensor de detección de movimiento, por ejemplo).

En este primer artículo vamos a ver como instalar y configurar Doods en Home Assistant. Puede seguir el vídeo explicativo en mi canal y, si te gusta el contenido, puedes suscribirte. También puedes ver el vídeo justo aquí debajo, pero en el canal puedes ver muchos vídeos interesantes y participar en sorteos de productos que voy realizando.

Como siempre, recomiendo leer la documentación oficial sobre lo que trato en mis artículos y vídeos. En este caso, podéis encontrar la información de Doods aquí.

Instalación de DOODS en Home Assistant

La instalación de Doods puede ser realizada de dos formas: o a través del add on, o bien a través de Docker container. Yo voy a seguir la primera opción por ser la que encuentro más sencilla y al alcance de aquellos con menos conocimientos.

En el menú lateral izquierdo de nuestro Home Assistant vamos a elegir la opción Supervisor. Vamos a ir a la Tienda de complementos (add on Store) y pulsaremos sobre los 3 puntitos que tenemos a la derecha en la barra superior. Aquí elegimos Repositorios y tendremos que añadir el repositorio del desarrollador, que sería el siguiente: https://github.com/snowzach/hassio-addons. Para ello, copia este enlace y lo pegas en «Añadir» en la ventana que se te ha abierto.

Una vez que hemos añadido el repositorio, tendremos varias opciones dependiendo de la plataforma donde queramos instalarlo:

  1. DOODS
  2. DOODS-amd64
  3. DOODS-cuda

En nuestro caso elegiremos la primera opción, que es la correspondiente a la instalación de Home Assistant en una Raspberry Pi o en un NUC, y pulsamos sobre Instalar.

Una instalado el add on, podemos iniciarlo. Recomiendo reiniciar el sistema una vez hecho esto.

Como saber la URL del servidor Doods para realizar la configuración

Para realizar la configuración y habilitar la integración, lo primero que debemos conocer es la URL del servidor Doods. Esto lo vamos a realizar siguiendo estos sencillos pasos:

  1. Vamos a ir la terminal del add on SSH & Web Terminal. Seleccionamos el add on y pulsamos en ABRIR LA INTERFAZ WEB (puedes ver como instalar el add on aquí).
  2. En la ventana que se nos abre listamos los contenedores que tenemos con el siguiente comando: docker container ls
  3. Copiamos el CONTAINER ID del contenedor Doods
  4. Lanzamos el siguiente comando que nos dará la IP del contenedor:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

Realizados estos pasos, ya estamos listos para hacer la configuración en nuestro Home Assistant

Configuración

Un ejemplo de configuración sencillo sería el siguiente (podeis encontrar una explicación de todas las variables en la documentación oficial de Home Assistant):

image_processing:
  - platform: doods
    scan_interval: 30
    url: "http://IP_DEL_CONTENEDOR:8080"
    timeout: 60
    detector: default
    source:
      - entity_id: camera.camara_salon_sd
    file_out:
      - "/media/{{ camera_entity.split('.')[1] }}_latest.jpg"
      - "/media/{{ camera_entity.split('.')[1] }}_{{ now().strftime('%Y%m%d_%H%M%S') }}.jpg"
    confidence: 65
    labels:
      - name: person
        confidence: 60
      - name: cell phone
        confidence: 65

Lo más importante a tener en cuenta sería lo siguiente:

  1. URL: Acabamos de ver cómo obtenerla en el punto anterior
  2. Scan_interval: Viene dado en segundos. Por defecto son 10 segundos y se trata del intervalo de tiempo de procesamiento de imágenes. Es altamente recomendable subir el tiempo para que no se produzca un procesamiento excesivo y, posteriormente, llamar al servicio image_processint.scan cuando realmente sea necesario (por ejemplo mediante un sensor de movimiento).
  3. Source: La entidad de nuestra cámara. Sobra decir que tenemos que tener integrada una cámara en nuestro Home Assistant para realizar todo este proceso.
  4. File_out: Directorios donde se van a ir guardando las imagenes.
  5. Confidence: Porcetaje de fiabilidad en la detección del objeto. Cuanto más alto, más fiable será a la realidad.
  6. Labels: Son todas las etiquetas que puede detectar Doods. Tenéis el listado completo aquí.

Una vez hemos escrito todo el código en el configuration.yaml de nuestro Home Assistant solo tenemos que reiniciar el sistema para que comience a funcionar.

Comprobación de que hemos realizado todo correctamente

Una vez reiniciado el sistema nos vamos a ir a Herramientas para desarrolladores. Tendremos que tener una entidad llamada image_processing.doods_NOMBRE_DE_ENTIDAD_DE_VUESTRA_CAMARA. En la columna Estado, deberían ir apareciendo los diferentes objetos que vuestra cámara va detectando.

Automatización de ejemplo

Esta automatización que os dejo aquí es simplemente para mostrar que una vez tenemos funcionando Doods vamos a poder recibir, por ejemplo, mensajes en Telegram, en nuestra app del dispositivo móvil e incluso recibir las imágenes captadas con este sistema. Lógicamente es una automatización que no tiene mucho sentido. Lo más lógico sería crear una automatización con un sensor como disparador (sensor de movimiento por ejemplo) que llame a la acción del procesamiento de imágenes (image_processing.scan) y a su vez ejecute la acción de envío de mensaje o captura de imagen. Pero esto ya lo dejo a vuestro gusto e imaginación.

- id: '1622997380231'
  alias: envia_msg_telegram_app
  description: ''
  trigger:
  - platform: state
    entity_id: image_processing.doods_VUESTRA_CAMARA
  condition:
  - condition: or
    conditions:
    - condition: template
      value_template: '{{ ''person'' in state_attr(''image_processing.doods_VUESTRA_CAMARA'',
        ''summary'') }}'
    - condition: template
      value_template: '{{ ''cell phone'' in state_attr(''image_processing.doods_VUESTRA_CAMARA'',
        ''summary'') }}'
  action:
  - service: notify.mobile_app_XXX
    data:
      message: Se ha detectado algo
      data:
        url: /lovelace/URL_DE_LA_PESTAÑA_DE_HOME_ASSISTANT
  - service: notify.telegram
    data:
      message: Se ha detectado algo
      data:
        photo:
        - file: /media/VUESTRA_CAMARA_latest.jpg
  mode: single

Y con esto hemos acabado este primer artículo sobre procesamiento de objetos en Home Assistant.

Espero que os haya gustado y resultado de utilidad.

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

Un saludo a todos y …

Publicaciones Similares

Un comentario

Deja una respuesta

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