Introduzione
L’enorme supporto dato dall’open source e dalle piattaforme collaborative on-line (come Github) ha contribuito notevolmente alla diffusione massiccia di schede di sviluppo, molte delle quali dotate di connettività di rete, e di conseguenza ne ha abbassato notevolmente il prezzo con il passare degli anni, rendendole fruibili a una vasta platea di appassionati, studenti, artisti ma anche semplici curiosi.
E’ opinione comune che Arduino abbia fatto da apripista per questa tendenza e oggi chiunque, anche dotato di nozioni minime in campo informatico ed elettronico, grazie a queste piattaforme hardware e software ha potuto approcciarsi in un modo o nell’altro all’IOT: Internet of things.
L’internet delle cose permette agli oggetti di uso quotidiano di comunicare tra loro o di ricevere informazioni e comandi da remoto: si parla quindi di smart objects o, in italiano, oggetti intelligenti. Quando ci riferiamo a questi oggetti non dobbiamo immaginarli come necessariamente in relazione con l'intelligenza artificiale, che rientra in un ambito ben più complesso, ma semplicemente di cose che possono svolgere il loro compito in maniera più efficiente, anche autonoma, interagendo con una rete che garantisce lo scambio di informazioni.
Grazie all’IOT gli oggetti, quindi, comunicano tra loro e con le persone: un semplice termometro dotato di connettività, posto all’esterno, può comunicare a una centralina che le temperature si sono abbassate in maniera drastica per cui la centralina può decidere, a esempio, di accendere il riscaldamento prima dell’orario programmato o con una potenza maggiore, avvisando magari l’utente prima di farlo per chiedere conferma.
Quando i concetti dell’IOT vengono applicati agli oggetti che si trovano in un ambiente domestico si parla di Domotica o Home Automation e la casa, dotata di oggetti intelligenti, viene definita una Smart Home.
Fino a pochi anni fa la massima espressione della domotica poteva essere, a esempio, un semplice termostato, dotato di timer, che ci consentiva di programmare la funzionalità dell’impianto di riscaldamento. Oggi la domotica abbraccia un campo molto più ampio.
I sistemi domotici
L’apertura automatica di una tapparella o di una porta del garage, l’accensione o spegnimento delle luci, la regolazione della climatizzazione sono i compiti più comuni che vengono affidati a un sistema domotico.
Una delle caratteristiche principali di un sistema domotico è la presenza di una centralina che fornisce una visione di insieme dello stato di tutti gli apparecchi collegati e ne consente l’utilizzo, la programmazione e l’interconnessione. Molto spesso la centralina è dotata anche di connettività verso l’esterno, che consente di consultare lo "stato" della propria smart-home e interagire con essa anche da remoto, magari attraverso un cellulare.
Gli oggetti, per poter comunicare fra loro, necessitano di un linguaggio comune o quanto meno che, nel caso in cui non ci sia possibilità di capirsi, fra loro sia interposto un interprete in grado di “tradurne” i linguaggi. La lingua utilizzata è nella fattispecie il protocollo di comunicazione.
In ambito commerciale esistono molti sistemi centralizzati realizzati dai grandi marchi che, chiaramente, necessitano ognuno dei propri accessori in quanto i protocolli sono proprietari: non è sempre possibile collegare una lampadina intelligente con marchio A a una centralina domotica prodotta da B per cui bisogna valutare prima di ogni acquisto la reale fattibilità di sistemi ibridi.
Esistono numerosi protocolli adoperati in ambito domotico: lo SCS, proprietario, utilizzato da bTicino, L’OpenWebNet, realizzato sempre da bTicino in tempi più recenti per consentire l’interfacciamento dei propri sistemi con quelli di altri produttori, il KNX e l’X10 che sono protocolli standardizzati. Questi sono solo alcuni esempi.
Ogni protocollo, poi, ha bisogno anche del rispettivo “livello fisico”, ovvero del cavo o della connessione senza fili attraverso la quale scambiare le informazioni.
Nel nostro sistema domotico andremo a utilizzare lo MQTT, che tratteremo diffusamente nel quarto capitolo di questa guida, un protocollo standardizzato, molto leggero in termini di risorse richieste per l’implementazione, che si piazza al di sopra del TCP/IP. Ciò vuol dire che viene utilizzata una connessione di rete standard realizzata tramite cavi Ethernet o Wi-Fi, approccio che semplificherà il nostro lavoro.
Gli altoparlanti intelligenti
In tutta questa baraonda di sistemi e protocolli di comunicazione si sono introdotti, nel 2016, Google Home e Amazon Echo (o solo Echo): ovvero i cosiddetti “altoparlanti intelligenti”. Questi altoparlanti nascondono, in realtà, un software molto sofisticato che consente di riconoscere la nostra voce e rispondere quindi a comandi vocali. La parte software di essi prende il nome, rispettivamente, di Google Assistant e Alexa.
I dispositivi Google e Amazon si collocano, nel nostro sistema domotico, generalmente come un accessorio in grado di fornire, appunto, una voce e un orecchio al nostro impianto. In questo senso, per accendere una luce, oltre alla possibilità di schiacciare il classico pulsante a parete o il pulsante “virtuale” sul display del nostro cellulare è anche possibile dire ad alta voce “Google (oppure Alexa) accendi le luci” per poter illuminare la stanza: è indubbiamente una funzionalità comoda soprattutto nei casi di limitata mobilità.
In altri casi, anziché un accessorio, possono costituire il sistema centrale: avendo in casa tutti oggetti compatibili, i comandi e la lettura degli "stati" avverranno in forma verbale.
Quando valutiamo oggetti smart nei negozi è spesso possibile leggere su di loro diciture del tipo “compatibile con Assistant di Google e Alexa” a indicare che tali prodotti possono comunicare con gli altoparlanti intelligenti delle aziende in questione. E’ chiaro che i due sistemi non sono compatibili tra loro e un oggetto smart progettato specificamente per un servizio non può funzionare con quello del concorrente a meno che, appunto, non siano dichiarati esplicitamente come compatibili con entrambi i sistemi.
Approccio Maker alla domotica
Questa è una guida per Makers. Non prenderemo, chiaramente, in considerazione prodotti commerciali: un maker sperimenta, inventa, trae soddisfazione dall’aver creato da sé un sistema, hardware e software. Obiettivi principali di un maker sono il riutilizzo, ovvero la modifica di oggetti esistenti per adattarli alle proprie esigenze e la condivisione del proprio lavoro perché possa tornare utile ad altri, magari migliorato e integrato. Un sistema domotico ha sempre un cuore, una centralina, che comunica con tutti gli oggetti smart dell’impianto. Questo cuore deve essere chiaramente gestito da un software che presenti anche un’interfaccia per poter comunicare con gli utenti umani.
Intendiamo, quindi, affidarci a un sistema open source anche per altri motivi: la spesa iniziale da affrontare contenuta, la disponibilità di know-how in rete, la possibilità di attingere a una comunità di sviluppo e quella di poter espandere in futuro il nostro impianto.
Elenchiamo alcuni dei software open source più utilizzati in ambito domotico (ma ne esistono tanti altri).
- OpenHab: nato nel 2010, sviluppato in Java;
- Home Assistant: nato nel 2013, sviluppato in Python;
- Domoticz: nato nel 2012, sviluppato in LUA;
- NodeRed: progetto dell’IBM nato nel 2013 (ma affonda le sue radici nel 1970), sviluppato in Javascript (node.js).
NodeRed, in realtà, è assai più di un semplice software per la domotica. Si tratta di un linguaggio di programmazione a flussi nato per interconnettere diversi dispositivi hardware e servizi internet tra loro (uno dei concetti base della domotica). In questa guida verrà utilizzato proprio NodeRed.
Perché NodeRed
Come è facile intuire, nessun sistema è migliore dell’altro: si sceglie l’uno o l’altro in funzione dell’obiettivo da raggiungere, degli utilizzatori da collegare ma anche in funzione del nostro gusto, della nostra forma mentis che rende ai nostri occhi più congeniale un sistema rispetto a un altro.
NodeRed è abbastanza semplice da utilizzare e consente di realizzare anche sistemi complessi con, in aggiunta, la possibilità di installare componenti (chiamati nodi) per utilizzare dispositivi normalmente non previsti. La comunità di NodeRed, inoltre, è molto attiva e la documentazione è di buona qualità nonché aggiornata costantemente. NodeRed è stato scelto per questa guida anche perché non è necessario installarlo, per i nostri esempi andremo ad utilizzare, come “centralina”, una Raspberry Pi e, sebbene anche gli altri sistemi citati siano disponibili per Raspberry Pi, NodeRed è già presente di default nell’immagine standard di Raspbian (il sistema operativo comunemente adoperato su Raspberry Pi), per cui l’installazione di componenti aggiuntivi è ridotta al minimo e possiamo anche avere, oltre al nostro sistema domotico, anche tutto Raspbian a disposizione.
L’utilizzo di NodeRed non esclude l'adozione di altri sistemi: difatti è possibile installare, a esempio, OpenHab o Home Assistant e farli comunicare con NodeRed installando i nodi appositi, per cui possiamo partire da un progetto e man mano farlo diventare qualcos’altro senza vanificare parte del lavoro effettuato.
NodeRed ha un’interfaccia grafica che consente di realizzare anche delle accattivanti dashboard personalizzate che vengono visualizzate nel nostro browser. Spesso viene preferito l’utilizzo di un browser piuttosto che una app per tutta una serie di motivi. Il principale è che non tutti possiedono un cellulare che utilizza Android o IOs come sistema operativo quindi l’unica soluzione valida per tutti è utilizzare, appunto, un browser.
L’utilizzo di un browser ci consente addirittura di adoperare la nostra interfaccia anche da una Smart TV!
Se non bastasse quanto abbiamo appena detto, sappiate che tutti i flussi creati con NodeRed possono essere esportati anche singolarmente, il che si traduce in una estrema facilità di backup per potere, a esempio, replicare il nostro sistema in tutto o in parte altrove. Nella prossima lezione appronteremo NodeRed per effettuare i nostri primi esperimenti.
Altre guide da consultare
Dal momento che verrà utilizzato NodeRed su una Raspberry Pi, è necessario, prima di proseguire in questa guida, leggere altre due guide presenti su HTML.it richiamate immediatamente a seguire.
- NodeRed: consultatela saltando la parte del capitolo 2 riguardante l’installazione relativa a Windows, noi utilizzeremo Raspberry Pi in cui è già installato.
- Raspberry Pi: di questa guida potete prendere in considerazione solo i primi 6 capitoli in quanto i successivi trattano della programmazione Python, mentre noi, per il nostro sistema domotico, utilizzeremo un linguaggio differente.