Introduzione
FIWARE rappresenta un punto di svolta nell’approccio alla creazione di ecosistemi digitali. Nato come progetto europeo con un investimento iniziale di 300 milioni di euro, si è evoluto in una piattaforma globale che sta ridefinendo il modo in cui costruiamo e gestiamo applicazioni smart.
La sua architettura unica combina la flessibilità dei microservizi con la potenza di un modello di dati standardizzato, permettendo l’interoperabilità tra soluzioni e domini applicativi diversi.
Cos’è FIWARE e a cosa serve
FIWARE è una piattaforma software open source che fornisce un insieme coerente di componenti per costruire ecosistemi digitali. A differenza di un tradizionale framework di sviluppo, FIWARE non si limita a fornire librerie e strumenti, ma offre un’architettura completa per la gestione di dati contestuali e la creazione di applicazioni smart interoperabili. FIWARE supporta lo sviluppo di prodotti digitali inseriti in ecosistemi, perseguendo i seguenti obiettivi:
- riduzione dei tempi di sviluppo grazie a componenti riutilizzabili;
- interoperabilità garantita attraverso standard aperti;
- scalabilità e manutenibilità dei sistemi;
- indipendenza da tecnologie proprietarie;
- accesso a un ecosistema di soluzioni e competenze.
La piattaforma risolve problemi cruciali nello sviluppo di sistemi distribuiti:
- raccolta e normalizzazione di dati da fonti eterogenee;
- gestione delle informazioni contestuali in tempo reale;
- distribuzione efficiente delle informazioni tra sistemi diversi;
- integrazione di dispositivi IoT e sistemi legacy;
- sicurezza e controllo degli accessi.
Come funziona
Il cuore di FIWARE è il concetto di “gestione del contesto”. Ogni entità del sistema (un sensore, un edificio, un veicolo, etc.) viene modellata come un oggetto contestuale con proprietà e relazioni. Questi oggetti vengono gestiti attraverso il Context Broker, che funziona come un hub centrale per la raccolta, l’elaborazione e la distribuzione delle informazioni.
Per esempio, in una smart city:
- i sensori inviano dati sulla qualità dell’aria;
- il Context Broker riceve e normalizza questi dati;
- le applicazioni si sottoscrivono per ricevere aggiornamenti;
- i sistemi di analisi elaborano i dati per identificare pattern;
- le dashboard mostrano lo stato in tempo reale;
- i sistemi di allarme reagiscono a condizioni specifiche.
Questa architettura permette di costruire sistemi complessi mantenendo la semplicità di integrazione e la flessibilità necessaria per evoluzioni future.
Casi d’uso pratici di FIWARE
Per comprendere meglio l’impatto e l’utilità di FIWARE, è utile considerare alcuni casi d’uso pratici in cui la piattaforma è stata applicata con successo.
Smart Cities
FIWARE è stato utilizzato per gestire l’illuminazione pubblica, riducendo il consumo energetico e migliorando la sicurezza urbana. Grazie ai sensori collegati al Context Broker, le luci possono essere adattate in base alle condizioni di traffico e agli eventi.
Industria 4.0
Nella produzione industriale, FIWARE ha aiutato a implementare la manutenzione predittiva, monitorando le condizioni delle macchine e identificando guasti prima che si verifichino, riducendo i tempi di fermo e ottimizzando la produzione.
Agricoltura smart
In agricoltura, FIWARE è stato utilizzato per monitorare e gestire l’irrigazione intelligente. Sensori di umidità del suolo e stazioni meteorologiche forniscono dati in tempo reale che vengono elaborati per ottimizzare l’uso dell’acqua.
Mobilità e logistica
FIWARE è stato implementato per tracciare e ottimizzare la logistica dei trasporti, migliorando l’efficienza delle consegne e riducendo i tempi di percorrenza grazie alla raccolta e all’analisi dei dati in tempo reale.
Energia e smart grids
FIWARE ha supportato la gestione delle reti energetiche intelligenti, permettendo una distribuzione efficiente dell’energia e monitorando i consumi per migliorare la sostenibilità.
Architetture di riferimento
Per ogni dominio applicativo, FIWARE fornisce architetture di riferimento che guidano lo sviluppo di soluzioni smart. Queste architetture descrivono come i vari componenti di FIWARE, inclusi i Generic Enablers, possono essere integrati per creare soluzioni scalabili e interoperabili.
Architettura per Smart Cities
Include il Context Broker per la gestione delle informazioni contestuali, IoT Agents per l’integrazione dei dispositivi e componenti per la visualizzazione e l’analisi dei dati. Le applicazioni possono abilitare servizi come l’illuminazione adattiva, il monitoraggio della qualità dell’aria e la gestione del traffico.
Architettura per Industria 4.0
Comprende l’uso di sensori e IoT Agents per raccogliere dati dalle linee di produzione, il Context Broker per normalizzare e distribuire i dati e strumenti di analisi per la manutenzione predittiva e l’ottimizzazione della produzione.
Architettura per Agricoltura Smart
Utilizza sensori sul campo per raccogliere dati ambientali, IoT Agents per la normalizzazione dei dati e il Context Broker per distribuire le informazioni alle applicazioni che ottimizzano l’irrigazione e altre attività agricole.
Architettura FIWARE
I casi d’uso e le architetture di riferimento appena viste aiutano a comprendere come i componenti di FIWARE possano essere combinati per risolvere problemi complessi e creare valore in diversi settori.
FIWARE adotta un’architettura distribuita a più livelli che si sviluppa intorno al concetto di “context information management”. Questa architettura è progettata per gestire tre aspetti fondamentali:
- la raccolta e normalizzazione dei dati da fonti eterogenee;
- la distribuzione delle informazioni tra i vari componenti del sistema;
- l’elaborazione e l’analisi dei dati in tempo reale.
L’architettura si articola su tre livelli principali: Field Layer, Context Management Layer e Processing and Presentation Layer. Vediamoli di seguito.
Field Layer
Questo livello si occupa dell’interazione con il mondo fisico attraverso
- dispositivi IoT e sensori;
- sistemi legacy e di terze parti;
- API esterne e servizi web.
I componenti di questo livello utilizzano vari protocolli (MQTT, HTTP, CoAP, etc.) e vengono integrati attraverso specifici IoT Agents che si occupano della traduzione e normalizzazione dei dati.
Context Management Layer
Questo è il cuore dell’architettura FIWARE, dove
- i dati vengono normalizzati e contestualizzati;
- le informazioni vengono distribuite tra i vari componenti;
- gli eventi vengono processati e correlati.
Processing and Presentation Layer
Questo livello si occupa di
- analisi dei dati e Business Intelligence;
- visualizzazione e reporting;
- interfacce utente e API per applicazioni esterne.
Il nucleo: Context Broker
Al centro dell’architettura FIWARE troviamo il Context Broker, implementato attraverso il componente Orion-LD. Questo elemento è fondamentale per tre ragioni: gestione del contesto, standardizzazione e intermediazione.
Gestione del Contesto
- Mantiene una rappresentazione in tempo reale dello stato del sistema;
- gestisce le relazioni tra entità diverse;
- coordina gli aggiornamenti e le notifiche.
Standardizzazione
- Implementa lo standard NGSI-LD;
- fornisce un modello di dati uniforme;
- garantisce l’interoperabilità tra componenti.
Intermediazione
- Facilita la comunicazione asincrona tra componenti;
- gestisce le sottoscrizioni agli eventi;
- implementa pattern publish/subscribe.
Il Context Broker è il componente fondamentale dell’architettura FIWARE. Implementa un modello di intermediazione basato sulla gestione del contesto, dove per “contesto” si intende lo stato corrente del sistema e tutte le sue entità.
Funzionalità Core
La prima funzionalità core del Context Broker è la gestione delle entità:
- creazione e aggiornamento di entità contestuali;
- query e filtri sulle entità;
- gestione delle relazioni tra entità;
- storicizzazione dei cambiamenti di stato.
La seconda funzionalità core è rappresentata dal sistema di sottoscrizioni:
- sottoscrizioni basate su pattern;
- notifiche in tempo reale;
- filtri temporali e spaziali;
- gestione della QoS (Quality of Service).
Infine, cè la funzionalità di federazione di context broker:
- sincronizzazione tra broker diversi;
- gestione della consistenza;
- aggregazione di informazioni distribuite.
Modalità di Interazione
Il Context Broker supporta due modalità principali di interazione: sincrona e asincrona.
La modalità sincrona (Query/Update) consente di eseguire operazioni immediate su un’entità, come leggere o aggiornare i suoi attributi. Questa modalità è utile quando si ha bisogno di ottenere informazioni in tempo reale o di aggiornare un valore specifico.
- Query di un’entità: il comando GET /ngsi-ld/v1/entities/urn:ngsi-ld:Store:001 viene utilizzato per richiedere le informazioni di una particolare entità. In questo caso, l’entità è identificata dall’URN urn:ngsi-ld:Store:001. Questa richiesta fornisce tutti gli attributi e le informazioni attuali associati all’entità, ad esempio lo stato corrente di un negozio o il valore di un sensore.
- Aggiornamento di un attributo: il comando PATCH /ngsi-ld/v1/entities/urn:ngsi-ld:Store:001/attrs/temperature consente di aggiornare l’attributo temperature dell’entità identificata da urn:ngsi-ld:Store:001. Nella richiesta viene specificato il nuovo valore (7) e il tipo di attributo (Property). Questa operazione è utile per aggiornare i dati di un’entità in risposta a un cambiamento nel contesto, come ad esempio un cambiamento nella temperatura misurata da un sensore.
La modalità asincrona (Publish/Subscribe) consente di ricevere aggiornamenti automatici ogni volta che le informazioni di un’entità cambiano. Questo approccio è basato sul modello publish/subscribe e si adatta bene a scenari in cui le informazioni cambiano frequentemente e devono essere monitorate continuamente.
- Creazione di una sottoscrizione: questo esempio mostra come creare una sottoscrizione per monitorare le variazioni di un attributo specifico, in questo caso la temperature delle entità di tipo Store. La richiesta POST crea una sottoscrizione con un identificatore (urn:ngsi-ld:Subscription:001). Quando l’attributo temperature cambia, il Context Broker invia una notifica all’endpoint specificato (http://my-service:8080/notifications). Questo è particolarmente utile per reagire in modo automatico ai cambiamenti, come attivare un sistema di raffreddamento quando la temperatura supera una certa soglia.
- Endpoint di notifica: il parametro notification specifica l’endpoint a cui devono essere inviate le notifiche. In questo esempio, il sistema specifica un URL (http://my-service:8080/notifications) che sarà chiamato ogni volta che viene rilevato un cambiamento nei dati osservati. Questo meccanismo consente alle applicazioni di rimanere sincronizzate con i cambiamenti del contesto in tempo reale senza dover eseguire continue richieste di aggiornamento.
Queste due modalità di interazione (sincrona e asincrona) offrono flessibilità nella gestione del contesto, consentendo sia la consultazione diretta delle informazioni sia la ricezione automatica degli aggiornamenti in caso di cambiamenti rilevanti.
# Creazione di una sottoscrizione POST /ngsi-ld/v1/subscriptions Content-Type: application/ld+json { “id”: “urn:ngsi-ld:Subscription:001”, “type”: “Subscription”, “entities”: [{“type”: “Store”}], “watchedAttributes”: [“temperature”], “notification”: { “endpoint”: “uri”: “http://my-service:8080/notifications”, “accept”: “application/json” } }, “@context”: http://context.fiware.org/latest }
Gestione della consistenza
Il Context Broker implementa diverse strategie per garantire la consistenza dei dati: transazioni atomiche, timestamp e versioning, cache e performance.
Gli aspetti principali delle transazioni atomiche sono
- aggiornamenti atomici di singole entità;
- batch operations per aggiornamenti multipli;
- gestione dei conflitti.
Con il timestamp e versioning, gli aspetti fondamentali sono
- ogni modifica è timestampata;
- c’è il supporto per la storicizzazione;
- avviene il tracciamento delle modifiche.
Infine, la gestione attraverso cache e performance prevede
- caching intelligente delle query frequenti;
- ottimizzazione delle sottoscrizioni;
- load balancing delle notifiche.
Integrazione con altri componenti
Il Context Broker si integra con altri Generic Enablers FIWARE attraverso interfacce standardizzate:
IoT Agents
[IoT Device] → [IoT Agent] → [Context Broker]
↓ ↑
Protocol Translation NGSI-LD
Historical Data
[Context Broker] → [QuantumLeap] → [Time Series DB]
↓ ↓
Current State Historical Data
Complex Event Processing
[Context Broker] → [CEP] → [Actions]
↓ ↓
Event Stream Pattern Detection
Conclusioni
In questa prima parte abbiamo esplorato i fondamenti di FIWARE, analizzando la sua architettura, il ruolo centrale del Context Broker e il modello di dati NGSI-LD. Abbiamo anche visto come FIWARE può essere applicato in diversi contesti, come Smart Cities, Industria 4.0 e Agricoltura smart, per costruire soluzioni digitali aperte e interoperabili.