Ambiente domotico intelligente

smart home

Gli ambienti domotici intelligenti stanno diventano sempre più pervasivi. La maggiore presenza di oggetti connessi ad Internet nelle smart home e in particolare nel campo dell’Home Appliances richiede l’utilizzo di strategie dedicate per lo scambio di messaggi con gli oggetti e per la gestione di un gran numero di dispositivi potenzialmente eterogenei. Inoltre, la maggior presenza di questi sistemi richiede di porre l’attenzione anche su aspetti relativi alla loro accessibilità tramite lo sviluppo di interfacce intuitive, pratiche e touch-free. Uno dei requisiti fondamentali da tenere in considerazione nella progettazione di nuovi dispositivi per il mondo connesso riguarda la sicurezza nei confronti di attacchi informatici che possono venire dall’esterno. Proprio per rafforzare questo aspetto gli Home Appliances sono stati equipaggiati con un chip di CryptoAuthentication che integra protocolli di sicurezza per garantire la riservatezza e l’integrità dei dati e per fornire funzionalità di autenticazione basata su algoritmi di crittografia/decrittografia di ultima generazione. Tale dispositivo costituisce un hardware sicuro per l’archiviazione delle chiavi crittografiche ed esclude potenziali cyber attacchi collegati a una possibile vulnerabilità del software.

Allo scopo di realizzare un ambiente domotico intelligente, scalabile e facilmente accessibile, è stata progettata e realizzata un’architettura domotica di nuova generazione che fonde diverse tecnologie emergenti nel campo degli smart object, dell’Internet delle Cose e del Cloud Computing. L’architettura è stata sviluppata nell’ambito del progetto “Miracle” (Marche Innovation and Research fAcilities for Connected and sustainable Living Environments), che ha come obiettivo la realizzazione di soluzioni per la domotica che siano innovative, interoperabili e che integrino servizi a valore aggiunto ed ha visto la collaborazione fra l’Azienda Gitronica S.p.A ed il Dipartimento di Ingegneria dell’Informazione dell’Università Politecnica delle Marche.

L’attività di progettazione dell’architettura ha previsto la definizione di un protocollo per lo scambio di messaggi con gli Home Appliances. Tale protocollo ha la necessità di essere “trasparente” rispetto all’oggetto che lo sta utilizzando, così che possa essere utilizzato da qualsiasi elettrodomestico intelligente nell’ambiente domestico, richiedendo al più solo una ridefinizione dei comandi disponibili per quell’oggetto. Inoltre, deve consentire la facile integrazione con i servizi Cloud utilizzati per implementare l’architettura finale. Sulla base di queste premesse è stato definito un protocollo basato sull’MQTT (Message Queue Telemetry Transport) che comprende la definizione del formato dei comandi, delle informazioni di stato per il monitoraggio degli oggetti e la struttura dei topic per la gestione dei messaggi.

MQTT è un protocollo per la comunicazione di tipo machine-to-machine (M2M) che è utilizzato come middleware dalle maggiori piattaforme Cloud per l’IoT, come Amazon Web Services (AWS). Lascia completa libertà per la definizione del formato dei messaggi che trasporta ed utilizza dei topic per la gestione intelligente dei messaggi. I topic non sono altro che delle stringhe organizzate gerarchicamente all’interno di un server centrale, chiamato “broker”, che si occupa di inoltrare i messaggi verso determinati client in base ai topic a cui sono “sottoscritti”. Tramite i topic è possibile controllare solo determinati oggetti o gruppi di oggetti, oltre che poter facilmente definire diverse categorie di messaggi, come messaggi di stato, di controllo o messaggi per l’aggiornamento automatico del software.

Una volta che è stato definito il formato dei messaggi di stato e di controllo, si è passati alla definizione dell’architettura Cloud a supporto del sistema domotico. La scelta della piattaforma di sviluppo Cloud è ricaduta su Amazon Web Services, in quanto fornisce diversi servizi per l’interazione con le “Cose” e perché in grado di soddisfare diversi requisiti nell’ambito dell’IoT, come latenza e throughput.  Il Cloud ha un duplice compito in questo progetto: sia di consentire l’instradamento e l’elaborazione di messaggi e comandi da/verso gli oggetti, sia di consentirne il monitoraggio costante.

AWS, oltre che fornire un broker per l’instradamento sicuro di messaggi MQTT, include una piattaforma per lo sviluppo di servizi serverless chiamata Amazon Lambda. Il serverless è un modello di sviluppo che di recente ha trovato terreno fertile in diversi ambiti, dall’IoT all’Edge Computing fino ad applicazioni scientifiche altamente specializzate. Consente di delegare al fornitore del servizio serverless la completa gestione dei server necessari per il funzionamento delle applicazioni, dalle risorse computazionali (CPU, RAM eccetera) fino all’ambiente di runtime dell’applicazione. Questo risulta particolarmente utile in contesti, come quello dell’Internet delle Cose, che richiedono la gestione di tantissimi oggetti e di servizi dedicati. Lambda è inoltre un servizio “orientato agli eventi”: una funzione Lambda viene invocata in risposta a un trigger di qualche tipo, ed esiste solamente per il tempo necessario a gestire quel trigger, rendendo più efficiente la gestione delle risorse in Cloud e migliorando la scalabilità delle soluzioni.

Lambda può essere configurata per rispondere a trigger provenienti da vari servizi Amazon, tra cui una Alexa Skill. Amazon Alexa è l’assistente vocale di Amazon, che mette a disposizione un “kit” per lo sviluppo di applicazioni di interazione vocale, chiamate Skill, che sfruttino il software di Automatic Speech Recognition (ASR) di Amazon. Un software di ASR comprende algoritmi utilizzati per convertire linguaggio parlato in testo, e può essere utilizzato per creare software di assistenza vocale, “carebot”, interfacce semplificate ecc. In Amazon Alexa il testo generato dal software di ASR viene ulteriormente elaborato per creare messaggi in formato JSON che possono essere utilizzati come trigger di una funzione Lambda, come riportato in Figura 1. Questi trigger, una volta elaborati da un’applicazione dedicata in Cloud, possono essere utilizzati sia per generare risposte verso l’utente che per inviare comandi ai dispositivi domotici.

 

Figura 1. Flusso dei messaggi dall’utente, al Cloud e fino allo smart object.

L’interazione vocale tra l’utente e gli Home Appliances è pertanto stata implementata tramite lo sviluppo di una Alexa Skill dedicata e di una funzione Lambda in Cloud in grado di generare comandi MQTT in base all’interazione tra l’utente ed un dispositivo Amazon Echo. In particolare, la funzione si occupa di interpretare il messaggio JSON ricevuto dalla Alexa Skill e di pubblicare su topic dedicati un messaggio MQTT generato in base al contenuto del messaggio JSON e in base all’utente che ha invocato la Skill. L’oggetto intelligente, essendosi sottoscritto ai topic ad esso riservati all’avvio, riceverà i comandi MQTT dal broker e, sulla base del loro contenuto, eseguirà il comando corrispondente.

Figura 2. Esempio di interazione tra lo smart object e l’utente. Tramite MQTT è anche possibile inviare messaggi verso lo smart object utilizzando un’applicazione dedicata su smart phone.

Al contempo, qualsiasi cambiamento di stato dell’oggetto viene pubblicato su un ulteriore topic. Una seconda funzione Lambda si occupa di gestire questi messaggi e di tenere aggiornato un database in Cloud che tiene traccia dei cambiamenti di stato degli oggetti. Ciò consente non solo di monitorare gli Home Appliances ed il loro utilizzo, ma anche di implementare interazioni con “retroazione” come “Alexa, chiedi al dispositivo demo di alzare la velocità della ventola”, che necessitano la conoscenza dello stato attuale delle variabili del dispositivo per consentire a Lambda di generare comandi opportuni.

L’architettura di sistema completa è riportata in Figura 2. Sulla base di questa architettura è stato progettato un Home Appliance che utilizza il protocollo di scambio di comandi basato su MQTT ed una Alexa Skill dedicata. In particolare, è stata realizzata una cappa di aerazione per la cucina intelligente, della quale possono essere controllati la velocità di ventilazione e lo stato delle luci, nonché monitorare diversi parametri, sia tramite un’applicazione dedicata che con comandi vocali.

Immagine che contiene testo, elettronico

Descrizione generata automaticamente

Figura 3. Dispositivo per il controllo della cappa intelligente (sinistra) e cappa intelligente sviluppata (destra).

 

Grazie alla flessibilità dell’MQTT è possibile utilizzare quest’architettura potenzialmente per qualsiasi tipo di smart object, nonché per un gran numero di oggetti grazie alle caratteristiche di scaling automatico delle risorse offerte dal modello serverless. La possibilità di sfruttare un’interfaccia vocale semplice ed intuitiva consente inoltre di garantire una più semplice accessibilità della soluzione, essenziale mentre ci spostiamo verso una sempre più pervasiva automazione dell’ambiente domestico.