Dispositivi Edge & Agent
I dispositivi edge sono i nodi di esecuzione principali in IronFlock. Ogni dispositivo è una macchina compatibile con Linux — un PC industriale, Raspberry Pi, NVIDIA Jetson, gateway o qualsiasi hardware con un kernel Linux — che esegue l’agent IronFlock e una o più applicazioni containerizzate Docker.
L’Agent IronFlock
L’agent è un binario Go leggero che gira sul dispositivo e gestisce:
- Gestione dei container — Avvia, ferma e monitora i container Docker per tutte le app installate
- Connettività WAMP — Mantiene una connessione WebSocket persistente e cifrata al message broker centrale
- Aggiornamenti OTA — Riceve e applica aggiornamenti per l’agent stesso, il sistema operativo host e le applicazioni installate
- Tunneling — Fornisce accesso remoto sicuro ai servizi del dispositivo (HTTP, SSH, VNC, TCP, UDP) attraverso tunnel proxy inverso — senza porte aperte richieste
- Gestione della rete — Configura le connessioni Wi-Fi, LAN e LTE sul dispositivo
L’agent è l’unico componente IronFlock che viene eseguito direttamente sul sistema operativo host. Tutto il resto viene eseguito all’interno di container Docker.
Funzionamento Autonomo
I dispositivi edge sono progettati per funzionare in modo indipendente dai servizi centrali. Se la connessione di rete cade:
- Le app continuano a funzionare — Tutte le applicazioni containerizzate continuano a operare normalmente
- Le app possono bufferizzare i dati — La telemetria viene messa in coda localmente e inoltrata a FleetDB quando la connettività viene ripristinata
Questa autonomia è una scelta di progettazione fondamentale. Negli ambienti industriali, l’affidabilità della rete non può essere garantita, e le applicazioni edge non devono dipendere da una connessione cloud per la loro operazione principale.
Cosa Gira sul Dispositivo
┌─────────────────────────────────────────┐
│ Linux Host OS │
│ │
│ ┌─────────────────────────────────┐ │
│ │ IronFlock Agent │ │
│ │ (connectivity, OTA, tunneling) │ │
│ └────────────┬────────────────────┘ │
│ │ │
│ ┌────────────┴────────────────────┐ │
│ │ Docker Runtime │ │
│ │ │ │
│ │ ┌─────────┐ ┌─────────┐ │ │
│ │ │ App A │ │ App B │ ... │ │
│ │ │ (OPC UA │ │ (Custom │ │ │
│ │ │ reader) │ │ logic) │ │ │
│ │ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
│ (outbound WSS only)
▼
WAMP Message BrokerOgni app gira nel proprio container con le proprie dipendenze. Le app possono essere scritte in qualsiasi linguaggio di programmazione — Python, Go, Rust, Node.js, C++ o qualsiasi cosa possa essere eseguita in un container Docker.
Hardware Supportato
IronFlock supporta qualsiasi dispositivo compatibile con Linux con supporto Docker:
| Piattaforma | Architettura | Esempi |
|---|---|---|
| PC industriali | x86_64 | Beckhoff, Advantech, Kontron, Dell Edge |
| Single-board computer | ARM64, ARMv7 | Raspberry Pi 4/5, BeagleBone |
| Acceleratori AI | ARM64 | NVIDIA Jetson Nano, Orin, Xavier |
| Gateway | ARM64, x86_64 | Teltonika, Moxa, Advantech |
| Hardware personalizzato | ARM (v5, v6, v7), ARM64, x86_64 | Qualsiasi dispositivo Linux con Docker |
Provisioning dei Dispositivi
I dispositivi possono essere aggiunti a IronFlock in diversi modi:
- Flashing con FlockFlasher — Usa l’app desktop FlockFlasher per scrivere IronFlock OS nello storage del dispositivo. Il dispositivo si avvia con l’agent pre-configurato e si connette automaticamente.
- Installare l’agent — Su un sistema Linux esistente, installa il binario dell’agent e fornisci un file di configurazione (file
.flock) con le credenziali del dispositivo. - Pre-registrazione OEM — Registra i numeri seriali dei dispositivi in anticipo. Quando il dispositivo viene acceso e si connette, viene assegnato automaticamente al progetto corretto.
Modello di Comunicazione
Per impostazione predefinita, i dispositivi edge effettuano solo connessioni in uscita. L’agent si connette al message broker WAMP tramite un WebSocket cifrato (WSS) e non ha bisogno di ascoltare su alcuna porta. Ciò significa:
- Non sono richieste regole firewall in entrata sul dispositivo o sulla sua rete per impostazione predefinita
- Il dispositivo non è individuabile né indirizzabile da internet
- L’accesso remoto è fornito tramite tunnel inversi — avviati dal dispositivo, non dall’operatore
Tuttavia, le porte del dispositivo possono essere aperte selettivamente quando necessario — ad esempio per esporre un HMI locale, una REST API o un altro servizio in esecuzione sul dispositivo. L’accesso alle porte è configurato e gestito tramite l’UI di IronFlock.
Consulta Sicurezza per l’architettura di sicurezza completa.