Skip to Content
Desarrollo de apps IoTEstructura de la aplicación

Estructura de la aplicación

Cada aplicación de IronFlock es una carpeta versionada con Git que contiene tu código de aplicación y un directorio de configuración .ironflock opcional.

Estructura de directorios

my-app/ ├── Dockerfile # Requerido: define la imagen del contenedor ├── docker-compose.yml # Opcional: configuración multi-contenedor ├── main.py # Tu código de aplicación (cualquier lenguaje) ├── requirements.txt # Dependencias └── .ironflock/ ├── board-template.yml # Diseño del dashboard ├── data-template.yml # Esquema de base de datos para telemetría ├── env-template.yml # Parámetros configurables por el usuario ├── port-template.yml # Definiciones de puertos de acceso remoto └── ai-template.yml # Definiciones de agentes de IA

Las seis partes de una aplicación

1. Código edge

La lógica principal de la aplicación. Este código se ejecuta dentro de un contenedor Docker en el dispositivo y gestiona la comunicación con sensores, PLCs, cámaras o cualquier hardware conectado.

El código edge puede escribirse en cualquier lenguaje de programación — Python, JavaScript, Go, Rust, C++ o cualquier otro que se ejecute en un contenedor Docker.

2. Panel (interfaz de usuario)

Un dashboard en tiempo real construido con el editor de paneles sin código. Los paneles muestran datos de todos los dispositivos que ejecutan la aplicación en un proyecto y se actualizan automáticamente a través del sistema de mensajería.

La configuración del panel se almacena en board-template.yml y se genera automáticamente mediante el editor.

3. Almacenamiento de datos

Cada proyecto tiene su propia base de datos física (impulsada por TimescaleDB). Cuando una aplicación define tablas en data-template.yml, esas tablas se aprovisionan automáticamente cuando un usuario instala la aplicación. Los datos son privados por proyecto — los desarrolladores no tienen acceso a los datos del usuario.

4. Realm de mensajería

Al instalarse, la aplicación obtiene un realm de mensajes privado que conecta:

  • Todas las instancias de la aplicación en dispositivos edge
  • La base de datos del proyecto
  • La interfaz del panel

La comunicación utiliza WAMP (Web Application Messaging Protocol) a través de los SDKs de IronFlock (ironflock-py para Python, ironflock-js para JavaScript).

5. Acceso remoto

Define puertos y protocolos en port-template.yml para habilitar túneles seguros hacia servicios del dispositivo. Los usuarios pueden entonces activar/desactivar estos túneles por dispositivo. Ver Remote Access.

6. Agentes de IA

Expone agentes de IA específicos del dominio a través de ai-template.yml que extienden el asistente de IA de IronFlock. Ver AI Features.

Almacenamiento persistente en dispositivos

Por defecto, los datos dentro del contenedor se pierden al reiniciar. Dos directorios persisten entre reinicios:

RutaAlcance
/dataPrivado para esta aplicación — otras aplicaciones no pueden acceder
/sharedCompartido entre todas las aplicaciones del dispositivo

Si estás usando Docker Compose, configura los volúmenes persistentes en tu docker-compose.yml en su lugar.

Acceso al hardware

Si tu aplicación interactúa con hardware local (sensores, cámaras, dispositivos seriales), esos dispositivos se montan en /dev dentro del contenedor.

Last updated on