Saltar a contenido

Documentación: Nodo Obtener Captura (Get Snapshot)

Descripción General

El Nodo Obtener Captura (Get Snapshot) es un nodo de acción que solicita en tiempo real una captura de imagen (snapshot) a un canal de video (cámara) y devuelve la URL del archivo de imagen generado.

Es uno de los nodos más útiles dentro de flujos de seguridad y monitoreo IoT: permite "congelar" el momento exacto en que ocurre un evento (una intrusión, una alarma, una parada de máquina) para luego adjuntar esa imagen en notificaciones, analizarla con IA, almacenarla como evidencia o registrarla en un reporte.


¿Cuándo usar este nodo?

Utiliza este nodo cuando necesites:

  • Capturar evidencia visual en el instante en que se dispara un evento (por ejemplo, tomar una foto de la cámara de un acceso cuando un sensor detecta apertura de puerta fuera de horario).
  • Obtener una imagen para adjuntarla a una notificación (Telegram, WhatsApp, Email) y que el personal vea de inmediato lo que ocurre.
  • Generar una imagen para enviarla a un modelo de IA (por ejemplo, los nodos de Analyze Image with AI) que verifique si hay una persona, un vehículo, fuego, etc.
  • Almacenar capturas periódicas como respaldo o registro en almacenamiento externo (S3, Google Sheets con enlace, etc.).

Configuración del Nodo

El nodo cuenta con dos pestañas de configuración en la parte superior: Formulario (Form) y Editor de JSON (JSON Editor).

Configuración vacía del nodo Obtener captura

Vista Formulario

Seleccionar el canal de video (Object) *Requerido

El formulario muestra un selector de objetos con dos pestañas en la parte superior:

  • Groups (Grupos): Permite navegar por los objetos organizados por dominios/grupos.
  • Devices (Dispositivos): Permite navegar por la lista de dispositivos físicos. Esta es la vista habitual para localizar cámaras.

Pasos:

  1. Haz clic en la pestaña Devices.
  2. Busca y expande la cámara deseada (puedes usar el campo Search para filtrar por nombre).
  3. Marca el canal de video (video_channel) de la cámara. El nodo trabaja sobre un único canal de video.

En cuanto seleccionas un canal, el nodo muestra una vista previa en vivo del video debajo del árbol, lo que te permite confirmar visualmente que es la cámara correcta:

Formulario configurado del nodo Obtener captura con vista previa en vivo


Vista Editor de JSON

En la pestaña Editor de JSON (JSON Editor) puedes ver y editar directamente el ID del canal de video, útil para parametrizarlo con expresiones dinámicas (por ejemplo, {{trigger.object_id}} para capturar la cámara que disparó el evento):

Vista JSON Editor del nodo Obtener captura


Estructura JSON (Parámetros de entrada)

A continuación se muestra la estructura del JSON que se genera al configurar el nodo:

{
  "object_id": "onvif_standard.video_channel.28.VideoSourceToken-0"
}

Campos del JSON

Campo Tipo Descripción
object_id string ID único del canal de video (video_channel) sobre el que se solicitará la captura. Puede ser un valor fijo o una expresión de plantilla (ej. {{trigger.object_id}}).

Output: Dónde viene la data del nodo

Cuando la acción se ejecuta correctamente, el nodo devuelve en su Output (Salida) la URL del archivo de imagen capturado:

{
  "url": "http://netsocs-driverhub-service:3196/public/45cb1228-2e71-4b04-815d-36092f930d6e.jpg"
}

Campos de la salida

Campo Tipo Descripción
url string URL del archivo de imagen (snapshot) generado por la cámara.

Usar la salida en nodos posteriores

Para referenciar la URL de la captura en nodos posteriores (por ejemplo, para adjuntarla a una notificación o enviarla a un nodo de IA), utiliza la clave del nodo (node_key):

{{node_key.url}}

(Recuerda sustituir node_key por la clave asignada automáticamente al nodo en el lienzo).

Caso Especial: Acceso a la URL del Snapshot (Enrutamiento Interno vs. Público)

La URL devuelta en el campo url utiliza el direccionamiento interno de la red de Docker de la instalación: http://netsocs-driverhub-service:3196/public/<archivo>.jpg

Este host (netsocs-driverhub-service:3196) solo es accesible internamente dentro de la red privada de contenedores, por lo que un usuario externo o su navegador no podrá visualizar la imagen con esa dirección directa.

Para poder visualizar y acceder públicamente a la imagen, se debe sustituir la sección interna por la ruta de enrutamiento externa pública del dominio de tu instancia (por ejemplo, https://demo02.netsocs.com/):

  • Ruta interna (dentro de Docker): http://netsocs-driverhub-service:3196/public/
  • Ruta pública (acceso de usuario): https://<dominio-instancia>/api/netsocs/dh/public/

Por lo tanto, la URL pública final del ejemplo sería: https://demo02.netsocs.com/api/netsocs/dh/public/45cb1228-2e71-4b04-815d-36092f930d6e.jpg


Ejemplos de uso

Ejemplo 1: Capturar evidencia ante apertura de puerta fuera de horario

Caso de uso: Un sensor de puerta detecta una apertura durante la madrugada. El flujo captura una imagen de la cámara que cubre ese acceso y la adjunta a una alerta enviada al supervisor de seguridad.

  • Disparador (Trigger): Cambio de estado del sensor de puerta a OPEN.
  • Acción (Action): Obtener captura de la cámara del acceso.
  • Uso posterior: El campo {{get_snapshot_node.url}} se usa en un nodo de notificación (Telegram/WhatsApp/Email).

JSON de configuración:

{
  "object_id": "onvif_standard.video_channel.28.VideoSourceToken-0"
}


Ejemplo 2: Captura dinámica de la cámara que dispara el evento

Caso de uso: En una automatización genérica que aplica a múltiples cámaras, se captura siempre la imagen de la cámara que originó el evento, sin tener que crear un flujo por cada cámara.

  • Disparador (Trigger): Evento de detección de movimiento (Motion).
  • Acción (Action): Obtener captura usando el ID dinámico del disparador.

JSON de configuración:

{
  "object_id": "{{trigger.object_id}}"
}


Validación y errores

Condición Causa / Solución habitual
object_id ausente o vacío Selecciona un canal de video válido en la pestaña Devices o ingresa la clave "object_id" en la pestaña JSON.
No se genera la URL Verifica que el driver/motor de video de la cámara esté conectado y transmitiendo. Una cámara fuera de línea no puede entregar una captura.
La imagen no se visualiza desde internet Recuerda convertir la URL interna de Docker a su ruta pública (ver el aviso anterior).

Buenas prácticas

  • Nombrar el nodo descriptivamente: Cambia el nombre del nodo en el lienzo a algo legible (ej. "Captura acceso principal") para usar su variable url fácilmente en nodos posteriores.
  • Usar IDs dinámicos: En flujos genéricos, asigna el object_id con {{trigger.object_id}} para reutilizar la misma automatización en múltiples cámaras.
  • Encadenar con IA o notificaciones: El verdadero valor del snapshot aparece al combinarlo con nodos posteriores: análisis con IA, envío por mensajería o almacenamiento como evidencia.
  • Convertir la URL para uso externo: Si la imagen debe verse fuera de la red interna, recuerda transformar la URL interna a la ruta pública del dominio.