Internet of Things e Intelligenza Artificiale

Internet of Things: di cosa stiamo parlando

IoT, ovvero Internet of Things, è la capacità di varie tipologie di dispositivi di comunicare dati tra loro collegandosi ad Internet.

Grazie a questa tecnologia, Internet si può estendere verso gli oggetti elettronici che utilizziamo tutti i giorni, consentendo di mettere in comunicazione hardware eterogenei e creare un ecosistema di dispositivi che trasmettono dati relativi al mondo che ci circonda attraverso un’infrastruttura di rete.

Dispositivi IoT combinati ad intelligenza artificiale stanno diventando sempre più diffusi, grazie anche alla grande diffusione degli assistenti virtuali (Siri, Cortana, Alexa, ecc.). Esistono ormai tante tipologie di oggetti “smart” in grado di trasmettere e ricevere dati via Internet: dispositivi indossabili, per l-automazione casalinga, per il monitoraggio medico, per i trasporti, per la produzione industriale, l-agricoltura e molti altri. Prima di vedere come possono essere combinate IoT e intelligenza artificiale occorre capire come è strutturata la tecnologia IoT.

Componenti

Questa tecnologia non è indipendente e per poterla utilizzare sono necessari dispositivi con dei componenti fondamentali:

  1. Hardware capace di recuperare dati e capace di eseguire istruzione relative all’oggetto. Ad esempio, sensori per il controllo della temperatura o dell’alimentazione.
  2. Software che gestisca la raccolta, il salvataggio e la manipolazione dei dati raccolti dall’hardware.
  3. Un protocollo di comunicazione che consenta al dispositivo di comunicare attraverso una rete.

Architettura Internet of Things

Con il passare degli anni è diventato sempre più efficiente ed economico creare dispositivi con le componenti fondamentali per l’utilizzo di Internet of Things.

Complessivamente l’architettura di un ecosistema IoT è composta da 4 livelli:

  1. Dispositivi (clients)
  2. Internet gateway (sistema di aggregazione dati)
  3. Edge IT
  4. Cloud
Architettura Internet of Things

Device layer

Il livello dei dispositivi comprende le opzioni fornite dall’oggetto. Quindi sensori, attuatori hardware e protocolli di comunicazione utilizzati. I sensori forniranno i dati di input per analizzare le informazioni del mondo reale, per esempio sensori di temperatura o di luminosità. Gli attuatori servono per eseguire le risposte ricevute in un’azione fisica del dispositivo; un esempio di attuatore è il controllo dell’alimentazione, ovvero la possibilità di spegnere un dispositivo nel caso si siano verificate determinate condizioni.

Le tecnologie di comunicazione utilizzate tipicamente sono di 2 tipi: wired o wireless.

Tipicamente come tecnologie wired viene utilizzato Ethernet oppure la tecnologia Powerline che consente di usare la linea elettrica anche per la comunicazione dei dati. Per quanto riguarda le tecnologie wireless, alcuni esempi di tipico utilizzo in dispositivi per l’IoT sono: Bluetooth, NFC, RFID, WiFi, LTE, ecc.

Internet gateway layer

L’Internet Gateway è un sistema che fornisce un meccanismo per processare i dati raccolti dai sensori del dispositivo e i meccanismi per creare una connessione sicura per la comunicazione dei dati. Tipicamente questo sistema aggrega i dati forniti dai sensori e li digitalizza in modo da poterli trasmettere tramite internet.

Il meccanismo di aggregazione può essere implementato sia all’interno del dispositivo (come software preinstallato), sia in una macchina separata in prossimità dei sensori, che ottiene i dati raccolti.

Edge IT layer

Questo livello è considerato di “confine” (come dice il nome), poiché qui vengono preparati i dati e trasferiti attraverso Internet. In particolare, in questi sistemi vengono eseguite analisi  e pre-elaborazioni dei dati ricevuti dal livello precedente. Possono essere utilizzate qui tecnologie di apprendimento automatico e visualizzazione, o potrebbe essere effettuata qualche elaborazione aggiuntiva, prima della fase di accesso al data center.

Vista la similitudine con la fase precedente è possibili anche combinare i 2 livelli (Intenet gateway e Edge gateway) in un’unica implementazione. In questo caso, otterremo che la posizione dei sistemi IT periferici sia vicina a quella in cui si trovano i sensori e gli attuatori, creando un sistema unico di cablaggio ed elaborazione dei dati raccolti.

Cloud layer

Il livello del Cloud è quello in cui vengono implementate le regole di business che coordinano tutti i dispositivi che fanno parte del sistema IoT. In questo livello verranno gestiti i messaggi da parte di tutti i dispositivi e verranno create le risposte da inviare. Qui possono essere creati e gestiti sistemi di archiviazione, applicazioni di supporto e applicazioni per la visualizzazione e la gestione dei dispositivi collegati.

Machine learning

Le potenzialità di un ambiente IoT consentono di poter gestire un gran numero di dispositivi fisici anche utilizzando un semplice smartphone. Chiaramente i dispositivi predisposti per l’IoT hanno comunque bisogno di input per eseguire le proprie funzionalità (attivatori). È quindi necessario che qualcuno orchestri i vari dispositivi per fargli eseguire i propri compiti. Inoltre, raramente i dispositivi connessi comunicano tra loro, piuttosto inviano ad un agente centrale i propri eventi/messaggi e sarà lui a decidere cosa farne.

Internet of Things senza AI

C’è quindi una grossa opportunità per ridurre il peso della gestione dell’orchestratore, che tipicamente viene dato all’utente, utilizzando il Machine Learning (ML). Combinando la tecnologia IoT e ML è possibile addestrare i vari dispositivi ad imparare le preferenze dell’utente e i comportamenti corretti da tenere in seguito ai messaggi dei vari dispositivi.

Utilizzando i dati raccolti dai sensori di dispositivi IoT, situati ovunque, dai campi degli agricoltori ai binari del treno, all’interno di modelli di apprendimento automatico e utilizzando le informazioni risultanti, è possibile migliorare il processo di orchestrazione e il risultato finale.

È possibile, per esempio, utilizzare sensori in treni e binari per addestrare un modello di apprendimento automatico che riconosca quando ci sono problematiche su una linea ferroviaria o treni in avaria. In questo modo è possibile ottimizzare i tempi d’intervento, la gestione di deviazioni di linea e migliorare così l’efficienza del servizio (Simens – Railgent).

Criticità e sicurezza

Sono stati descritti i molti aspetti positivi che fornisce un ambiente IoT, serve però menzionare anche i possibili rischi di sicurezza che questo ambiente comporta e quali sono le principali criticità per mettere in piedi un sistema di questo tipo.

Mancanza di uno standard

La prima criticità che viene incontrata nel mettere insieme più dispositivi per creare un ambiente IoT è la difformità delle caratteristiche tecniche dei dispositivi. Non esistendo ancora uno standard per la creazione di tali dispositivi, abbiamo a che fare con un gran numero di hardware e software diversi utilizzati, quindi anche con una diversità anche nei sistemi di comunicazione. Per esempio, potremmo dover far comunicare 2 dispositivi che utilizzano uno Bluetooth e l’altro WiFi.

Privacy e gestione dati

Un altro problema è la privacy e il controllo dei dati. Dato che la comunicazione dei dati avviene via Internet, si hanno gli stessi problemi di sicurezza che ci sono quando utilizziamo normali applicazioni web, con l’aggravante che i dati passati nel caso dell’IoT riguardano dispositivi fisici. È quindi importante gestire la sicurezza/autenticazione delle trasmissioni poiché lasciare accesso ai dispositivi fisici a soggetti non autorizzati può avere risultati gravi.

Esempi di IoT

Esistono molti servizi cloud che forniscono le funzionalità necessarie allo sviluppo di applicazioni e gestione di ambienti IoT con Machine Learning. Uno di questi è Microsoft Azure Internet of Things.

Azure IoT è una raccolta di servizi cloud gestiti da Microsoft che connettono, monitorano e controllano asset IoT. Una soluzione IoT è costituita da uno o più dispositivi IoT e uno o più servizi back-end in esecuzione nel cloud che comunicano tra loro.

Microsoft Azure Internet of Things

Dispositivi fisici

I dispositivi IoT utilizzati sono generalmente formati da schede con sensori (es. MX Chip, Raspberry Pi) con connessione ad Internet, tipicamente tramite WiFi. Alcuni esempi di sensori utilizzati sono:

  • Sensori di pressione
  • Temperature o umidità
  • Accelerometro, giroscopio, magnetometro
  • Sensori di prossimità, luminosità

SDK

In aggiunta al dispositivo fisico è necessario utilizzare un SDK fornito da Microsoft Azure: IoT Device SDK. Con questo strumento di sviluppo è possibile creare applicazioni che andranno in esecuzione sul dispositivo IoT. Queste applicazioni si occuperanno di inviare i dati raccolti dai sensori ad un Hub IoT e ricevere messaggi ed aggiornamenti. Questo SDK supporta diverse tipologie di linguaggi: C, Java, Node.js, Python.

Hub IoT

Il dispositivo comunica con un Hub IoT Azure, cioè con un servizio back-end che si occupa di ricevere i dati di misurazione dai dispositivi e di comunicare risposte ai dispositivi. Uno dei punti critici dell’ecosistema IoT è appunto la comunicazione. I dispositivi, infatti, non hanno utenti che li utilizzano (differntemente dagli smartphone), possono avere risorse di elaborazione limitate o connettività lenta o intermittente, potrebbe essere necessario implementare un protocollo di comunicazione privato.

Il servizio Hub IoT azure si occupa principalmente di:

  • Ricezione di dati di telemetria su larga scala dai dispositivi e determinare il modo in cui elaborare e archiviare tali dati.
  • Analizzare la telemetria per fornire informazioni in tempo reale.
  • Invio dei comandi ai dispositivi collegati.
  • Controllo dei dispositivi che si possono collegare al sistema.
  • Controllo dello stato dei dispositivi collegati.

Ad esempio, il back-end cloud, utilizzando gli altri strumenti Azure per creare una soluzione IoT, memorizza i dati di telemetria storici. La soluzione utilizza questi dati per identificare potenziali comportamenti anomali su dispositivi specifici prima che causino un problema reale. Utilizzando l’analisi dei dati, è in grado di identificare la soluzione preventiva per risolvere un problema e inviare un comando al dispositivo per intraprendere un’azione correttiva. Questo processo genera un ciclo di feedback automatico tra il dispositivo e il cloud che aumenta notevolmente l’efficienza della soluzione.

Documentazione utile:

https://azure.microsoft.com/it-it/services/iot-hub/

https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-sdks

https://azure.microsoft.com/en-in/services/machine-learning-studio/

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *