DOCUMENTACIÓN CON IA
¿Qué desea saber?
Integración mediante scripts
A partir del firmware 2026.10.30, OV Spark puede recibir datos de su línea, decidir con su propia lógica y enviar resultados en su propio formato, todo dentro de la cámara. Hay cuatro piezas, y la mayoría de las configuraciones solo usan una o dos:
| Pieza | Qué es | ¿Código? |
|---|---|---|
| Variables | Valores que entran desde el exterior, como un número de serie o de lote enviado por el PLC o MQTT. Cada Captura guarda los valores con los que se ejecutó | No |
| Script de receta | JavaScript en la etapa de Veredicto que decide aprobado o rechazado con una razón, agrega metadatos y tags, y escribe sus propios bytes para el PLC | Sí |
| Script de cámara | Un script a nivel de cámara que publica en MQTT, reacciona a mensajes entrantes y mantiene contadores y alertas | Sí |
| MQTT | Un cliente MQTT integrado. Una vez configurado un broker, se publica cada resultado de Inspección, sin necesidad de ningún script | No |
Se encuentran en Integration dentro de la navegación izquierda de la cámara: Variables, Camera Script y Data Connectors. El script de receta está en la etapa Veredicto de cada Receta.

Script de receta o script de cámara
| Script de receta | Script de cámara | |
|---|---|---|
| Pertenece a | Una Receta, y se exporta junto con ella | La cámara, y sigue corriendo a través de los cambios de Receta |
| Se ejecuta | En cada Inspección, después de las herramientas y antes de que el PLC vea el resultado | Cuando ocurre algo: un resultado, un mensaje MQTT, un cambio en User Data del PLC, un temporizador |
| Memoria | Sin memoria confiable: trate cada Inspección como si empezara de cero | Mantiene el estado entre eventos hasta que se recargue |
| Límite de tiempo | 25 ms por defecto, hasta 200 ms | 1 segundo hasta el primer await de un hook, después 50 ms por cada parte posterior |
| Puede | Establecer aprobado o rechazado y la razón, escribir bytes de User Results del PLC, agregar metadatos y tags | Publicar en MQTT, establecer variables, generar alertas, ejecutar temporizadores |
| No puede | Usar la red, mantener estado, usar temporizadores | Cambiar un Veredicto, escribir bytes del PLC, editar una Captura finalizada |
Si el PLC lo necesita cuando Inspection Completed se activa, va en el script de receta. Si va por la red, o tiene que recordar algo entre piezas, va en el script de cámara.
Ambos se conectan mediante variables: el script de cámara establece una variable, el script de receta la lee, y el valor se guarda junto con la Captura, para que siempre pueda ver en qué se basó una decisión.
Configuraciones comunes
| Lo que quiere hacer | Use |
|---|---|
| Guardar el número de serie o código que el PLC envía con cada Imagen | Una variable enlazada a User Data del PLC. Sin código: cada Captura lo almacena, la Biblioteca lo muestra, y los nombres de archivo de Almacenamiento remoto pueden usarlo, por ejemplo {camera}/{var.lot} para la carpeta y {var.serial}_{capture_id} como nombre de archivo |
| Verificar la pieza contra lo que el PLC espera | Un script de receta que compara el texto del OCR o el código con la variable de número de serie y la falla con serial differs. La misma idea funciona para un conteo contra la cantidad de la orden |
| Tomar datos de MES u otro sistema | Una variable enlazada a un tópico MQTT y un campo JSON, o un script de cámara que extrae un campo del mensaje de un proveedor y establece la variable |
| Permitir que un operador ingrese el número de lote | Establezca la variable manualmente en la página de Variables. Las Capturas que usaron un valor ingresado a mano reciben una insignia manual. Esta es también la forma de probar un script en el banco sin un PLC |
| Encontrar Capturas más tarde por lote, o por qué tan cerca estuvieron de fallar | Un script de receta que guarda valores como metadatos y aplica tags a las Capturas, como near-miss o review |
| Enviar sus propios datos al PLC | Un script de receta que empaqueta un conteo, un bit por región, o un código por herramienta en User Results con pack() |
| Ejecutar diferentes verificaciones por modelo | El PLC envía el tipo de pieza; el script de receta marca los otros tipos de pieza como Not inspected, o activa o desactiva una verificación |
| Usar su propia lógica de aprobación | Por ejemplo, aprobar cuando al menos 78 de 80 regiones aprueben, o colocar el nombre de la herramienta que falla en la razón |
| No inspeccionar una pieza cuando faltan datos o están desactualizados | Un script de receta que devuelve Not inspected cuando el número de serie no ha llegado, o cuando el último valor del PLC es demasiado antiguo |
| Publicar cada resultado | Nada que escribir: con un broker configurado en Data Connectors, cada resultado y un heartbeat se envían a MQTT. Use el script de cámara para su propio tópico o formato de mensaje |
| Monitorear la línea | Un script de cámara que genera una alerta después de N rechazos consecutivos, publica conteos de aprobados y rechazados por turno como CSV, o publica un heartbeat |
| Responder a solicitudes por MQTT | Un script de cámara que responde a solicitudes como last result o value of a variable |
Cada configuración anterior que usa un script tiene una plantilla lista para usar en la galería de Templates del editor de scripts.
El banco de trabajo de scripts
Ambos scripts se escriben en el mismo editor dentro de la cámara, con:
- Templates: ejemplos funcionales para cada tarea anterior. Elija uno y complete la herramienta o variable que utiliza
- Autocompletado y un panel de Reference que documenta cada hook, global y tipo, con guías breves
- Test contra la cámara en vivo o Capturas recientes, para que ya no tenga que cambiar entre el HMI y la pestaña del script
- History: sus últimas 20 versiones guardadas, para comparar o volver a una anterior
- Test ejecuta el borrador en un Disparo en vivo o en Capturas almacenadas (la más reciente, las últimas N hasta 500, un filtro de Biblioteca, o números de Captura). Para el script de cámara es una ejecución en seco que reproduce resultados recientes sin enviar nada

Un script de receta que lanza una excepción o agota el tiempo hace que la pieza quede como Not inspected y pone en cero los User Results del PLC. Ejecute Test con una pieza rechazada además de una buena antes de guardar, y mantenga el script corto: su tiempo se suma a cada ciclo.
Bueno saber
- Las variables, los scripts y la configuración de MQTT viajan con las exportaciones de recetas. Las contraseñas y los certificados no se exportan: si la fuente usaba credenciales que el destino no tiene, MQTT llega desactivado; de lo contrario conserva la configuración de la fuente
- La HTTP API ahora devuelve resultados en el mismo formato que MQTT y los scripts. Si integró contra 2026.10.13, consulte los cambios de campos en esa página
- Lo que aún no está: Disparar una Inspección o cambiar de Receta desde el script de cámara (el PLC y HTTP todavía lo hacen), TCP y OPC-UA, y un widget del HMI para mostrar o establecer una variable
A dónde ir después
- Variables
- Script de receta, con un playground que puede probar en el navegador
- Script de cámara
- MQTT