Struttura dell’App
Ogni app IronFlock è una cartella versionata con Git che contiene il codice dell’applicazione e una directory di configurazione .ironflock opzionale.
Struttura della Directory
my-app/
├── Dockerfile # Required: defines the container image
├── docker-compose.yml # Optional: multi-container setup
├── main.py # Your application code (any language)
├── requirements.txt # Dependencies
└── .ironflock/
├── board-template.yml # Dashboard layout
├── data-template.yml # Database schema for telemetry
├── env-template.yml # User-configurable parameters
├── port-template.yml # Remote access port definitions
└── ai-template.yml # AI agent definitionsLe Sei Parti di un’App
1. Codice Edge
La logica principale dell’applicazione. Questo codice gira all’interno di un container Docker sul dispositivo e gestisce la comunicazione con sensori, PLC, telecamere o qualsiasi hardware connesso.
Il codice edge può essere scritto in qualsiasi linguaggio di programmazione — Python, JavaScript, Go, Rust, C++ o qualsiasi altro linguaggio che gira in un container Docker.
2. Dashboard (Interfaccia Utente)
Una dashboard in tempo reale costruita con il Board Editor no-code. Le dashboard visualizzano i dati di tutti i dispositivi che eseguono l’app in un progetto e si aggiornano automaticamente tramite il sistema di messaggistica.
La configurazione della dashboard è salvata in board-template.yml e viene generata automaticamente dall’editor.
3. Archiviazione Dati
Ogni progetto ha il proprio database fisico (basato su TimescaleDB). Quando un’app definisce tabelle in data-template.yml, quelle tabelle vengono provisionate automaticamente quando un utente installa l’app. I dati sono privati per progetto — gli sviluppatori non hanno accesso ai dati degli utenti.
4. Realm di Messaggistica
Una volta installata, l’app ottiene un realm di messaggi privato che connette:
- Tutte le istanze dell’app sui dispositivi edge
- Il database del progetto
- La dashboard UI
La comunicazione usa WAMP (Web Application Messaging Protocol) tramite gli IronFlock SDK (ironflock-py per Python, ironflock-js per JavaScript).
5. Accesso Remoto
Definisci porte e protocolli in port-template.yml per abilitare il tunneling sicuro verso i servizi del dispositivo. Gli utenti possono poi abilitare/disabilitare questi tunnel per dispositivo. Vedi Accesso Remoto.
6. Agenti AI
Esponi agenti AI specifici del dominio tramite ai-template.yml che estendono l’assistente AI di IronFlock. Vedi Funzionalità AI.
Archiviazione Persistente sui Dispositivi
Per impostazione predefinita, i dati all’interno del container vengono persi al riavvio. Due directory persistono tra i riavvii:
| Percorso | Ambito |
|---|---|
/data | Privato per questa app — le altre app non possono accedervi |
/shared | Condiviso tra tutte le app sul dispositivo |
Se usi Docker Compose, configura volumi persistenti nel tuo docker-compose.yml.
Accesso all’Hardware
Se la tua app interagisce con hardware locale (sensori, telecamere, dispositivi seriali), quei dispositivi sono montati in /dev all’interno del container.