¿Qué hace iaiops — Toma de datos industrial + diagnóstico inteligente?
Un servidor MCP gobernado que expone 66 herramientas en 8 protocolos industriales más una capa de inteligencia entre protocolos. Cada herramienta se ejecuta a través del armazón de gobernanza de iaiops (auditoría / presupuesto / nivel de riesgo / deshacer). Lectura primero. Las 6 herramientas de escritura están protegidas como Gestión de Cambio: riesgo=ALTO, dry_run=True por defecto, la CLI requiere doble confirmación, el valor anterior se captura para deshacer. Nunca escribir en un sistema de control de producción sin autorización. Validado con previsualización / simulación: verificar contra equipos reales. Comience con protocols_supported para ver lo que está configurado y <protocolo> doctor para probar el enlace.
Cuándo enrutar aquí
La tarea menciona: OPC-UA / opc.tcp, Modbus, Siemens S7 / S7-1200/1500, Mitsubishi / MELSEC, MTConnect / monitoreo de máquinas CNC, MQTT / Sparkplug B / Espacio de nombres unificado, Allen-Bradley / ControlLogix / CompactLogix / EtherNet-IP, EtherCAT / CoE / SDO / PDO / SOEM, OEE / tiempo de inactividad, inventario de activos OT, diagnóstico "sin datos / etiqueta obsoleta", inundación de alarmas / ISA-18.2.
Herramientas por protocolo
OPC-UA (solo lectura) — endpoints opc.tcp
opcua_server_info— estado, información de compilación, arreglo de espacios de nombresopcua_browse— explorar el árbol de nodos desde un id de nodo (profundidad limitada)opcua_read_node— valor + tipo de dato + sello de tiempo de origen + código de estadoopcua_read_many— lectura por lotes de ids de nodo (limitada)opcua_subscribe_sample— muestreo limitado, luego retorna (nunca itera)opcua_read_alarms— mejor esfuerzo para mostrar alarmas/condiciones activasopcua_read_history— Acceso Histórico (HDA): historial sin procesar en una ventana [inicio,fin]health_summary— clasificar ids de nodo contra umbrales de advertencia/alarmaanomaly_scan— muestrear un nodo, marcar valores atípicos estadísticos
Modbus-TCP (solo lectura aquí)
modbus_read_holding(FC03),modbus_read_input(FC04),modbus_read_coils(FC01),modbus_read_discrete(FC02) — con sugerencias de decodificaciónmodbus_health_summary— clasificar registros contra umbrales
Siemens S7comm (pyS7; S7-300/400/1200/1500)
s7_cpu_info— identidad de la CPU + run/stops7_read_area— leer N elementos de un tipo desde un área de memoria S7s7_read_db— leer N elementos de un bloque de datoss7_read_many— lotes de cadenas de dirección pyS7 sin procesars7_write_db— [ESCRITURA][ALTO][GDC] escribir un valor en un DB (desactivado por defecto)
Mitsubishi MC (pymcprotocol 3E; Q/L/iQ)
mc_cpu_status— tipo/código de CPU MELSECmc_read_words/mc_read_bits— dispositivos de palabra/bit por lotes desde un dispositivo principalmc_read_many— lectura aleatoria de palabra + dword dispersa en una sola solicitudmc_write_words— [ESCRITURA][ALTO][GDC] escribir palabras (desactivado por defecto)
MTConnect (solo lectura; todas las máquinas herramienta CNC)
mtconnect_probe— modelo del dispositivo (dispositivos → componentes → elementos de datos)mtconnect_current— último valor de cada elemento de datos (instantánea de la máquina)mtconnect_sample— flujo limitado de observaciones recientesmtconnect_assets— herramientas de corte / fijaciones / programasmtconnect_oee_snapshot— disponibilidad / ejecución / modo / programa (entradas OEE)
MQTT / Sparkplug B / UNS (paho-mqtt; decodificación completa Tahu protobuf)
mqtt_read_topic— recolección de mensajes MQTT simples limitadossparkplug_decode_payload— decodificar una carga útil Sparkplug B a métricassparkplug_subscribe_sample— muestreo limitado con decodificación completa + nacimiento/muerte/seqsparkplug_node_list— nodos periféricos/dispositivos + estado en línea + estado HOST primariouns_browse— explorar el árbol de temas en vivo (UNS) bajo un filtro (limitado)mqtt_publish— [ESCRITURA][ALTO][GDC] publicar/comando en un tema (desactivado por defecto)
Allen-Bradley EtherNet/IP (pycomm3; ControlLogix/CompactLogix)
eip_controller_info— identidad del controlador (prueba el enlace CIP)eip_list_tags— descubrir lista de etiquetas del controlador (nombres/tipos/estructuras)eip_read_tag— leer una etiqueta (o elemento de arreglo) con su tipoeip_read_many— lectura por lotes (paquete múltiple automático)eip_write_tag— [ESCRITURA][ALTO][GDC] escribir un valor de etiqueta (desactivado por defecto)
EtherCAT (pysoem/SOEM; Linux + root/CAP_NET_RAW + NIC dedicada + esclavos reales)
Instalación adicional opcional pip install iaiops[ethercat]; sin simulador de software (solo hardware, macOS no soportado). Las herramientas se degradan a un error de enseñanza si falta pysoem/permiso/NIC/bus.
ethercat_master_state— estado del maestro/contador de trabajo + conteo esperado vs encontrado de esclavosethercat_slaves— escaneo del bus: enumerar esclavos (id/fabricante/producto/revisión/direc/estado-AL)ethercat_slave_info— un esclavo: configuración SM/FMMU + resumen del diccionario de objetosethercat_read_sdo— subida SDO CoE (lectura asíncrona de buzón de correo de una entrada OD)ethercat_read_pdo— una instantánea cíclica de la imagen de datos de proceso de entrada de un esclavoethercat_write_sdo— [ESCRITURA][ALTO][GDC] descarga SDO CoE (desactivado por defecto)ethercat_set_state— [ESCRITURA][ALTO][GDC] transición de estado AL (puede INICIAR/DETENER movimiento; desactivado por defecto)
Inteligencia entre protocolos
Diagnósticos — paraguas de skills: resolución de problemas
diagnose_dataflow— localizar una ruptura "sin datos" a través de los saltos alcanzables de un endpointhistorian_health— detección de etiquetas defectuosas / línea plana / brecha en una seriealarm_bad_actors— análisis de inundación de alarmas ISA-18.2 (tasa vs <6/12/30, infractores de Pareto, chattering, permanentes) sobre una lista de eventostag_health— clasificar infractores de etiquetas por mala calidad / línea plana / rango / anomalía
Analítica
oee_compute— OEE = Disponibilidad × Rendimiento × Calidaddowntime_events— detectar transiciones de ejecución→detenida, categorizar paradasoee_multidim— agregar OEE a través de máquina × pieza × turnoasset_inventory— identificar activamente endpoints (fabricante/modelo/firmware/protocolo) en un registro de activos (descubrimiento activo, no pasivo SPAN/tap)monitor_changes— capturar solo los CAMBIOS de valor de un punto en una ventana limitada
Meta / hoja de ruta
protocols_supported— mapa de capacidades (protocolos, estado, herramientas, parámetros de conexión)- Hoja de ruta: protocolos de buzón EtherCAT EoE/FoE/SoE; EtherNet/IP PLC-5 / SLC (PCCC), Micro800; descubrimiento pasivo de activos; seguridad de certificados OPC-UA.
Configuración
iaiops init (asistente interactivo, indicaciones por protocolo) escribe ~/.iaiops/config.yaml; las credenciales van al almacén cifrado (~/.iaiops/secrets.enc, contraseña maestra mediante IAIOPS_MASTER_PASSWORD). Ejecute iaiops doctor para sondear cada endpoint configurado. La referencia completa por protocolo, parámetros de conexión, guía de prueba con simulador y ejemplos JSON de MCP están en el README.
Seguridad
Lectura primero. Las 6 herramientas de escritura (s7_write_db, mc_write_words, mqtt_publish, eip_write_tag, ethercat_write_sdo, ethercat_set_state) por defecto tienen dry_run=True, requieren doble confirmación en la CLI y registran un descriptor de deshacer a partir del valor/estado anterior capturado. Los cambios de estado de EtherCAT pueden INICIAR o DETENER el movimiento de la máquina. No apunte esto a sistemas de control de producción sin autorización. Ninguna herramienta devuelve secretos.