header domotica mqtt controllo vocale

La settimana scorsa abbiamo introdotto il protocollo di comunicazione MQTT, mentre oggi vedremo come realizzare una scheda elettronica basata su un modulo ESP8266, che permetta di controllare un modulo con otto relè non soltanto da remoto da smartphone, ma anche in locale tramite dei pulsanti fisici e Google Home per il controllo vocale.
La scheda che andremo a realizzare permette di essere gestita tramite MQTT ed integrata in diversi sistemi, come ad esempio OpenHAB.

Adafruit IO

Per questo esperimento, per il broker MQTT ci affideremo alla piattaforma Adafruit IO.
In questo modo non avremo bisogno del nostro sistema basato su Raspberry Pi.
Naturalmente questa scelta ha degli aspetti negativi, che tratteremo tra poco, ma questa configurazione potrebbe invece essere la migliore nel caso in cui non si è interessati ad implementare nel proprio sistema di domotica DIY delle funzioni particolari e si voglia integrare velocemente il controllo vocale.
adafruit IO homepage
Si tratta di un servizio cloud, pensato principalmente per la memorizzazione e lettura di dati, con il quale si possono realizzare dei “collegamenti” con i propri dispositivi IoT.
Permette di visualizzare in tempo reale i dati ricevuti e collegare i propri device a dei servizi web esterni come ad esempio Twitter, feed RSS e servizi meteo.
Un aspetto molto interessante è la sua nativa compatibilità con IFTTT e Zapier, che nel nostro caso semplifica la fase di configurazione per il controllo del sistema con Google Assistant, tramite Google Home.
La versione gratuita della piattaforma ha delle limitazioni, che riguardano il numero massimo dei topic e messaggi al minuto che è possibile pubblicare, la velocità di comunicazione e la memorizzazione dei messaggi sulla piattaforma.

IFTT

iftt_website
IFTTT è l’acronimo di If This Then That (Se questo accade allora fai accadere quello) ed è un servizio web gratuito che permette di creare in pochi passi un insieme di condizioni, chiamate applet, che vengono attivate da altri servizi, tra i quali ad esempio Gmail, Facebook e Adafruit IO.
IFTTT è stato reso disponibile il 7 settembre 2011, negli anni ha ampliato le sue funzioni ed oggi è diventato un ottimo strumento che permette agli utenti di personalizzare e automatizzare determinati servizi in base a determinate condizioni.
Per implementare il comando vocale con Google Home tramite IFTT , basterà semplicemente collegare il servizio al proprio account google e creare l’applet specifica per lo scopo.
Guarda il video alla fine dell’articolo per scoprire come fare.
iftt example

Dopo questa breve introduzione ad Adafruit IO e IFTT possiamo procedere alla realizzazione del progetto. Mettiamoci subito all’opera. 

Lista della spesa

Per realizzare questo progetto, avrai bisogno dei componenti seguenti:

  • DEV Board basata su ESP8266
  • Basetta millefori
  • Trasformatore incapsulato da CS HLK-PM01
  • 4 x Connettori a tre terminali

 
 

Hardware

Per cercare di non essere ripetitivo, vi rimando ai seguenti articoli per approfondire il funzionamento del trasformatore incapsulato da CS e per maggiori informazioni sulle DEV board basate sui moduli ESP.
header modulo pulsanti wireless esp8266
guida moduli esp8266 esp32
 
Collegare i componenti come nello schema di collegamento seguente:
collegamento
foto scheda domotica ESP MQTT
La mia realizzazione risulta essere diversa da quella proposta nello schema di collegamento, per il semplice motivo che ognuno può avere delle necessità e fantasie progettuali diverse, di conseguenza quello che trovate in questo articolo è il progetto base, pronto per essere modificato e personalizzato il più velocemente possibile.
Ad esempio, per il momento sulla mia scheda non ho installato il trasformatore incapsulato, mentre i pulsanti e la scheda relè ho deciso di interfacciali al modulo ESP tramite un MCP23017.

Software

Il codice relativo a questo progetto potete scaricarlo al seguente link.
Permette di gestire soltanto un relè e pulsante, ma potete in pochi passi fare copia e incolla della sezione di codice dedicata al controllo dei relè per aggiungere gli altri sette.
Per la comunicazione con il broker MQTT, ho scelto di utilizzare la libreria Pubsubclient, ma con alcune modifiche è possibile utilizzare quella rilasciata da Adafruit.
arduino_ide_start
Per programmare il codice sul modulo EP8266, sarà necessario:

  1. Scaricare lo sketch allegato a questo articolo;
  2. Avviare l’IDE di Arduino;
  3. Aprire lo sketch appena scaricato e modificarlo inserendo i dati della propria rete Wifi e il token Adafruit collegato al proprio account;
  4. Collegare la DEV board al PC tramite un cavetto micro USB;
  5. Selezionare la board corretta;
  6. Avviare il caricamento ed aspettarne il completamento.

 

Se non hai mai configurato l’IDE di Arduino per programmare un modulo ESP, segui prima questi passaggi.

ESP8266 AND MQTT HOME AUTOMATION BASIC CODE
 

App per Android e OpenHAB NEXT

app_android_domotica-mqtt
Cercando nel Google Play Store, mi sono imbattuto nell’applicazione  MQTT Dashboard, che risulta essere molto leggera, facile da configurare ed anche con un buon concept grafico.
Supporta la lingua italiana e permette il collegamento con un broker MQTT in pochi passi.

Video configurazione e test

Spesso vedere come fare una determinata cosa, rende la spiegazione più semplice e veloce, quindi nel seguente video scoprirai come:

  1. Creare un nuovo feed su Adafruit IO;
  2. Muoversi tra le funzioni di Adafruit IO;
  3. Creare una nuova applet IFTT per l’attivazione e disattivazione dei relè tramite i comandi vocali;
  4. Installare e configurare l’applicazione per smartphone MQTT Dashboard;
  5. Utilizzare il sistema appena creato (video test del progetto);

 
 

Conclusione

Come accennato in precedenza, utilizzare la versione base della piattaforma Adafruit IO ha dei limiti.
Per questo motivo nel codice del progetto non è stato impostato alcun topic di callback e di conseguenza in dispositivi diversi lo stato dei relè potrebbe non essere aggiornato in tempo reale.
Per ovviare a questo problema, è possibile passare alla versione Premium di Adafruit IO per poter pubblicare più messaggi in più topic, oppure utilizzare un broker MQTT installato su una propria piattaforma.
Comunque sia, quello che è stato presentato oggi è un valido spunto per comprendere quanto possa essere soddisfacente creare il proprio sistema di domotica DIY e quanto sia versatile il protocollo MQTT.
Prossimamente tratteremo l’implementazione di dispositivi MQTT in OpenHAB, passando così ad un livello superiore.

Ivan Scordato