Skip to Content
Desarrollo de apps IoTIntegrar HMIs externas

Integrar HMIs Externos

Muchas máquinas industriales exponen su propia HMI (Interfaz Humano-Máquina) a través de un servidor web local. Esta guía muestra cómo hacer que esas HMIs sean accesibles desde la interfaz de IronFlock usando el widget Embed, un proxy inverso nginx y túneles de acceso remoto.

Ejemplo Básico: Máquina Individual

El caso más simple es una sola máquina CNC (o PLC, cámara, etc.) cuyo servidor web HMI es accesible desde la red local del dispositivo edge — por ejemplo en 192.168.1.50:8080.

1. Configurar la dirección de la máquina como parámetro de la app

Use un parámetro de app para que el usuario pueda configurar la dirección HMI local de la máquina (por ejemplo, 192.168.1.50:8080). De esta forma, la dirección no está codificada y se puede establecer por instalación de dispositivo.

2. Agregar un proxy inverso nginx en el código edge

En la configuración Docker de su app, incluya un contenedor nginx simple que lea la dirección de la máquina configurada y la reenvíe a un puerto fijo en el dispositivo edge — por ejemplo localhost:3000. El código edge lee el parámetro de la app y configura nginx en consecuencia.

3. Definir el puerto fijo en el port template

En su port template, declare el puerto en el que nginx escucha:

# .ironflock/port-template.yml ports: - name: CNC Machine HMI port: 3000 main: false

El puerto debe ser fijo (no asignado dinámicamente) porque los puertos de acceso remoto no se pueden agregar en tiempo de ejecución — se definen en el momento del release y se configuran por instalación.

Al declarar el puerto en port-template.yml, los administradores del proyecto pueden habilitar o deshabilitar el acceso remoto a la máquina CNC en la configuración de la app. Cuando la app se instala por primera vez en un dispositivo, el usuario debe permitir explícitamente el acceso remoto a este puerto en la configuración de instalación. Esta es una función de seguridad — el acceso remoto no está habilitado por defecto.

El acceso remoto es necesario aquí porque el usuario que accede al HMI está en su portátil local, no en la red del dispositivo edge. La tecnología de túneles de IronFlock crea una conexión segura desde el navegador del usuario hasta el puerto reenviado del dispositivo edge.

4. Agregar un widget Embed al panel

En el UI Builder, agregue un widget Embed que apunte a la dirección del túnel de acceso remoto del dispositivo en el puerto 3000. El HMI original de la máquina CNC ahora aparece directamente dentro del panel de IronFlock.

Esta configuración básica le da acceso remoto al HMI de una sola máquina por dispositivo — sin VPN, sin cambios en el firewall.


Avanzado: Múltiples Máquinas por Dispositivo

Cuando un dispositivo edge está conectado a varias máquinas, puede extender el patrón para servir todas sus HMIs a través de un único puerto reenviado usando enrutamiento basado en rutas.

1. Almacenar direcciones de máquinas en una tabla del data backend

Agregue una tabla a su data backend que registre los detalles de cada máquina, incluyendo la dirección del servidor web local y la ruta reenviada:

# .ironflock/data-template.yml data: tables: - tablename: machines maintainLatestFlagFor: ['machine_id'] columns: - id: tsp dataType: timestamp - id: machine_id dataType: string - id: name dataType: string - id: local_hmi_address dataType: string - id: forwarded_hmi_path dataType: string

2. Enrutar múltiples máquinas a través de nginx

Configure nginx para hacer proxy inverso de cada máquina en una ruta separada bajo el mismo puerto fijo. Por ejemplo, reenvíe 192.168.1.50:8080 a localhost:3000/cnc1/ y 192.168.1.51:8080 a localhost:3000/cnc2/. Almacene estas rutas reenviadas de vuelta en la tabla machines para que el panel sepa dónde encontrar cada HMI.

Se aplica el mismo puerto fijo y port template del ejemplo básico — un puerto sirve a todas las máquinas mediante diferentes rutas.

3. Agregar widgets Embed con navegación basada en páginas

En el UI Builder, cree una página de panel separada para el HMI de cada máquina y agregue un widget Embed en cada página que lea el forwarded_hmi_path de la tabla machines y lo use como URL de embed.

Para permitir a los usuarios cambiar entre HMIs, use la función Páginas y Navegación. Agregue un widget de Navegación Lateral que liste todas las máquinas conectadas como un menú de barra lateral vertical. Los elementos de la barra lateral se pueden generar dinámicamente desde la tabla machines para que las nuevas máquinas aparezcan automáticamente. Cuando un usuario hace clic en el nombre de una máquina, el panel navega a la página correspondiente y el widget Embed de esa página carga el HMI correcto.

El Resultado

Los usuarios pueden navegar por todas las máquinas conectadas en el panel, seleccionar una e interactuar con su HMI original directamente dentro de IronFlock — sin VPN, sin pestaña de navegador separada, sin configuración de firewall. El widget Embed, el data backend y el túnel de acceso remoto trabajan juntos para crear una superficie de control unificada y segura para toda una flota de máquinas.

Last updated on