Saltar al contenido principal

DOCUMENTACIÓN CON IA

¿Qué desea saber?

HTTP API

La HTTP API permite que un MES, un sistema SCADA o su propio software trabajen con la cámara directamente a través de la red, con o sin un PLC. Desde la API puede:

  • Disparar una inspección y obtener su resultado en la misma llamada
  • Leer resultados pasados, o seguirlos en vivo a medida que terminan, con sus imágenes, mapas de calor y máscaras de segmentación
  • Listar recetas y cambiar la activa
  • Alternar entre modo de Configuración y modo de ejecución
  • Leer y restablecer los contadores de aprobado/rechazado

Vaya a Integration → HTTP API:

Pantalla de HTTP API de OV Spark Pro con la Base URL, la versión de API y la autenticación, una lista de verificación Ready to trigger, y las pestañas Endpoints y Examples

ÁreaLo que ofrece
ConnectionLa Base URL con la que comienza cada llamada, por ejemplo http://10.250.0.100/api/integration/v1, la versión de la API y si las llamadas requieren usuario y contraseña
Download OpenAPI specUna descripción legible por máquina de cada endpoint, con sus parámetros y respuestas. Entréguela a sus desarrolladores, o cárguela en Postman o en cualquier herramienta OpenAPI
Ready to trigger?Una lista de verificación en vivo de lo que debe cumplirse antes de que POST /trigger funcione
Endpoints y ExamplesCada endpoint, agrupado por su función, y llamadas de ejemplo listas para copiar

Antes del primer disparo​

El panel Ready to trigger? verifica tres cosas. POST /trigger se rechaza hasta que las tres pasen, y el error nombra la que falló.

  1. Modo de ejecución. Saque la cámara de Configuración desde la barra superior, o llame a POST /mode/run.
  2. Receta activa. Debe haber una receta activa. Actívela desde All Recipes, o llame a POST /recipes/{id}/activate.
  3. Acepta disparos HTTP. En la receta activa, abra Step 2: Triggering, elija External, y marque HTTP bajo Enabled sources.

Enabled sources bajo External triggering: GPIO, PLC / Fieldbus, y HTTP con POST /trigger

HTTP es una fuente entre varias

Puede marcar más de una fuente. Una receta puede aceptar un disparo por hardware desde la línea y un disparo HTTP desde su software al mismo tiempo. Una fuente que no esté marcada se ignora, incluso si algo está enviándole.

Disparar una inspección​

curl -X POST http://10.250.0.100/api/integration/v1/trigger \
-H "Content-Type: application/json" \
-d '{"wait_ms": 5000}'

La llamada espera hasta wait_ms milisegundos (5000 por defecto, hasta 30000) a que la inspección termine:

RespuestaSignificadoQué hacer
200El resultado finalizadoLea judgment: pass, fail o not_inspected
202Aceptado, pero no finalizado dentro de wait_msConsulte GET /results?trigger_id= con el trigger_id devuelto
409La cámara no está listaCorrija lo que indica code: modo de ejecución, receta activa o la fuente HTTP
503Una condición temporal, como una inspección aún en cursoReintente
Envíe un disparo a la vez

La cámara inspecciona un disparo a la vez. Un disparo enviado mientras el anterior aún se ejecuta se rechaza con 503, a menos que el Image trigger buffer de la receta le permita esperar. Envíe el siguiente disparo después de que llegue la respuesta anterior.

Trate not_inspected como un rechazo

not_inspected significa que todas las herramientas de inspección se omitieron, generalmente porque la alineación no encontró la pieza. No se verificó nada, así que trátelo como un rechazo, nunca como un aprobado.

Leer resultados​

LlamadaDevuelve
GET /results/latestEl resultado más reciente
GET /resultsResultados, más nuevos primero, filtrables por receta o disparo
GET /results/{id}Un resultado, con el veredicto de cada herramienta
GET /results/{id}/imageLa imagen inspeccionada, como JPEG
GET /results/{id}/tools/{tool_id}/heatmapEl mapa de calor de una región, como PNG
GET /results/{id}/tools/{tool_id}/maskLa máscara de segmentación de una región, como PNG
GET /results/streamUn flujo en vivo de resultados a medida que terminan, desde cada fuente de disparo

GET /results/stream usa Server-Sent Events: mantenga una conexión abierta y cada inspección finalizada llega en el momento que ocurre, ya sea que haya sido disparada por HTTP, por un PLC o por un sensor. Normalmente es más sencillo que hacer polling.

Cada herramienta reporta ok, ng, indeterminate o not_applicable, y el resultado en su conjunto reporta pass, fail o not_inspected.

Otras llamadas​

GrupoLlamadas
DeviceGET /health, GET /device, GET /status, GET /whoami, GET /openapi.yaml
RecipesGET /recipes, GET /recipes/active, POST /recipes/{id}/activate
StatisticsGET /statistics, POST /statistics/reset, GET /statistics/stream
ControlPOST /mode/run, POST /mode/setup
FieldbusGET /fieldbus, GET /fieldbus/descriptor (el archivo EDS o GSDML del protocolo activo)

Una receta se identifica por su número, el mismo PLC recipe ID que usa un PLC para seleccionarla, configurado en Step 5: Outputs.

Espere a que termine el cambio de modo

Después de POST /mode/run, consulte GET /status hasta que mode sea run y mode_changing sea false antes de disparar. El cambio de modo tarda un momento mientras se carga la receta.

Inicio de sesión y seguridad​

Mientras la cámara no tenga un usuario Admin, la API no requiere credenciales. Una vez que exista un Admin, cada llamada excepto /health, /whoami y /openapi.yaml requiere el nombre de usuario y la contraseña de una cuenta de la cámara, enviados como autenticación HTTP Basic:

curl -u line3-mes:PASSWORD http://10.250.0.100/api/integration/v1/results/latest
Dé a cada sistema conectado su propia cuenta

Cree una cuenta por sistema en Users and Permissions, de modo que los Audit Logs muestren qué sistema hizo qué. Asígnele el rol más bajo que cumpla el trabajo; GET /whoami con las credenciales de esa cuenta lista exactamente lo que tiene permitido llamar. Active HTTPS en System Settings para que las contraseñas no viajen por la red en texto plano.

La API solo crece dentro de /api/integration/v1: pueden aparecer nuevos endpoints y campos, pero los existentes nunca cambian de significado ni desaparecen. El código escrito contra ella hoy sigue funcionando después de una actualización de firmware.

Qué sigue​