È stata presentata la versione 2.0 di EdgeX, una piattaforma modulare open-source per garantire l'interoperabilità tra dispositivi IoT, applicazioni e servizi. La piattaforma è indipendente dall'hardware di fornitori specifici e dai sistemi operativi ed è sviluppata da un gruppo di lavoro autonomo sotto l'egida della Linux Foundation. I componenti della piattaforma sono scritti in linguaggio Go e distribuiti sotto licenza Apache 2.0.
EdgeX consente di creare gateway che uniscono i dispositivi IoT esistenti e raccolgono dati da vari sensori. Il gateway gestisce sia l'interazione con i dispositivi che l'elaborazione iniziale, l'aggregazione e l'analisi delle informazioni, fungendo da intermediario tra la rete di dispositivi IoT e un centro di controllo locale o un'infrastruttura di gestione cloud. I gateway possono anche eseguire gestori configurati come microservizi. L'interazione con i dispositivi IoT può avvenire tramite reti cablate o wireless utilizzando reti TCP/IP e protocolli specifici (non IP).

I gateway di diversi tipi possono essere combinati in catene; ad esempio, un gateway di primo livello può svolgere compiti di gestione dei dispositivi (system management) e sicurezza, mentre un gateway di secondo livello (fog-server) può memorizzare i dati in arrivo, effettuare analisi e fornire servizi. Il sistema è modulare, quindi la suddivisione delle funzionalità in nodi separati avviene in base al carico: nei casi semplici è sufficiente un solo gateway, mentre per grandi reti IoT può essere distribuito un intero cluster.

Il stack IoT Fuse, utilizzato nei gateway per dispositivi IoT Dell Edge Gateway, costituisce la base di EdgeX. La piattaforma può essere installata su qualsiasi hardware, inclusi server quelli basati su CPU x86 e ARM, che funzionano con Linux, Windows o macOS. Il progetto include una selezione di microservizi pronti per l'analisi dei dati, la sicurezza, la gestione e per affrontare varie sfide. Per sviluppare microservizi personalizzati si possono usare linguaggi come Java, Javascript, Python, Go e C/C++. Per la realizzazione di driver per dispositivi e sensori IoT è disponibile un SDK.
Principali modifiche:
- È stato implementato un nuovo interfaccia web, realizzata utilizzando il framework Angular JS. Tra i vantaggi del nuovo GUI si evidenziano la facilità di manutenzione e l'espansione delle funzionalità, la presenza di un wizard per la connessione di nuovi dispositivi, strumenti per la visualizzazione dei dati, un'interfaccia notevolmente migliorata per la gestione dei metadati e funzionalità di monitoraggio dello stato dei servizi (consumo di memoria, carico del CPU, ecc.).

- API completamente riscritto per lavorare con microservizi, ora indipendente dal protocollo di comunicazione, più sicuro, ben strutturato (utilizza JSON) e migliorato nel monitoraggio dei dati trattati dal servizio.
- Aumentata l'efficienza e fornita la possibilità di creare configurazioni leggere. Il componente Core Data, responsabile del salvataggio dei dati, ora non è obbligatorio (ad esempio, può essere escluso quando è necessario solo elaborare i dati dai sensori senza la necessità di salvarli).
- Aumentata l'affidabilità e ampliati gli strumenti per garantire la qualità del servizio (QoS). Nella trasmissione dei dati dai servizi dei dispositivi (Device Services, responsabili della raccolta dati da sensori e dispositivi) verso i servizi di elaborazione e archiviazione dei dati (Application Services), ora si può utilizzare un bus di messaggi (Redis Pub/Sub, 0MQ o MQTT), senza dipendere dal protocollo HTTP REST e regolando le priorità QoS a livello di message broker. È consentita anche la trasmissione diretta dei dati dal Device Service all'Application Service con opzionale duplicazione nel servizio Core Data. Il supporto per la trasmissione dei dati tramite protocollo REST è mantenuto, ma non utilizzato di default.

- Implementato un modulo universale (secret provider) per estrarre dati sensibili (password, chiavi, ecc.) da storage protetti, come Vault.
- Per la registrazione dei servizi e delle impostazioni, nonché per la gestione dell'accesso e dell'autenticazione, è stato utilizzato lo strumento Consul. Nell'API Gateway è stato fornito supporto per l'accesso alle API di Consul.
- Minimizzato il numero di processi e servizi che necessitano di privilegi di root nei contenitori Docker. Aggiunta protezione contro l'utilizzo di Redis in modalità non sicura.
- Semplificata la configurazione dell'API Gateway (Kong).
- Semplificati i profili dei dispositivi, nei quali vengono definiti i parametri dei sensori e dei dispositivi, nonché le informazioni sui dati raccolti. I profili possono essere definiti nei formati YAML e JSON.

- Aggiunti nuovi servizi per i dispositivi:
- CoAP (scritto in C) con implementazione del protocollo Constrained Application Protocol.
- GPIO (scritto in Go) per il collegamento a microcontrollori e altri dispositivi, incluse le schede Raspberry Pi, attraverso le porte GPIO (General Pin Input/Output).
- LLRP (scritto in Go) con implementazione del protocollo LLRP (Low Level Reader Protocol) per il collegamento a lettori di etichette RFID.
- UART (scritto in Go) con supporto per UART (Universal Asynchronous Receiver/Transmitter).
- Ampliate le funzionalità dei servizi delle applicazioni (Application Services), responsabili della preparazione e dell'esportazione dei dati per un successivo trattamento nei sistemi e nelle applicazioni cloud. Aggiunto supporto per la filtrazione dei dati dei sensori in base al nome del profilo del dispositivo e al tipo di risorsa. Implementata la possibilità per un servizio di inviare dati a più destinatari e di iscriversi a più bus di messaggi. Proposto un template per la rapida creazione di servizi applicativi personalizzati.
- I numeri di porta selezionati per i microservizi sono stati allineati con le gamme suggerite dall'ente IANA (Internet Assigned Numbers Authority) per uso privato, evitando conflitti con sistemi esistenti.
Fonte: opennet.ru



