Realizziamo una multipresa con Google Home adoperando una ESP-01 con modulo Relè
Abbiamo visto in questo ARTICOLO come programmare correttamente una ESP-01 con un apposito modulo relè per attivarlo e disattivarlo tramite Google Assistant. Ora provvederemo ad implementare questo modulo, collegandolo ad una serie di prese per creare una multipresa da poter accendere e spegnere tramite Google Home, usufruendo del servizio MQTT di Adafruit e IFTTT.
Progetto
Per la nostra multipresa con Google Home ci serviremo di un modulo relè già pronto e predisposto per la ESP-01, adoperando la libreria Adafruit_MQTT_Library-master per chiedere, tramite IFTTT, l’intervento dell’assistente di Google.
Componenti & Collegamenti
Il modulo di cui parliamo è molto piccolo, infatti misura complessivamente 35 x 25 x 17 mm. Questo modulo lavora con una tensione di 5V, erogabile tramite i due pin posti appena accanto all’alloggio per la ESP-01. Il relè posto nel modulo opera anche esso con i 5V e possiede una capacità di carico di 250V in CA e 10A. Possiamo scegliere se adoperare l’interruttore con il NO (normalmente aperto) o il NC (normalmente chiuso), utilizzando l’apposita morsettiera costituita da 3 viti, ricordandoci che quella centrale è il comune (COM). Per alimentare il modulo e la scheda abbiamo aperto e modificato un vecchio alimentatore da parete a 5V, usando un cavo USB da powerbank per connetterlo al modulo. Voi, però, potete optare per un AC-DC da 240V-5V, oppure riciclare anche voi un vecchio alimentatore da 5V ormai in disuso.
Per realizzare l’involucro della multipresa abbiamo adoperato un contenitore 2×4 Vimar, 4 prese con standard italiano, 4 copriforo adatti per il contenitore e un pressacavo impermeabile. Come cavo abbiamo riciclato un cordone di alimentazione con presa schuko, mentre, per le connessioni elettriche interne, del semplice cavo elettrico e qualche connettore per la crimpatura.
Lista componenti su Amazon:
- ESP-01 con modulo relè: https://amzn.to/35xuOjq
- Contenitore Vimar 2×4: https://amzn.to/3dZwis7
- Presa standard italiano: https://amzn.to/32VSvRD
- Set da 2 pezzi copriforo: https://amzn.to/3udwqtC
- Pressacavo: https://amzn.to/3dXKUIw
- AC-DC 220V-5V: https://amzn.to/3dXDwwU
Abbiamo cercato di rendere il più semplice possibile i collegamenti. Vi preghiamo di farvi aiutare da una persona esperta se siete alle prime armi. Il progetto prevede l’uso della corrente ad alta tensione, ragion per cui non provate a fare nulla se non avete una buona competenza.
Codice
Il codice che andiamo a vedere proviene da uno dei nostri tutorial e lo riproponiamo qui per completezza del progetto. Partiamo col dire che gran parte di esso proviene da uno degli esempi contenuti nella libreria Adafruit_MQTT_Library-master (LINK). Lo sketch di esempio è il mqtt_2sub_esp8266.ino a cui apporteremo solo qualche modifica per permettere al modulo relè di comunicare con il servizio IFTTT. Prima però di spiegare il codice, andiamo sul sito https://io.adafruit.com/ e logghiamoci.
Una volta effettuato il LogIn, andiamo su Feeds, poi sul pulsante Action e dal menu a tenda selezioniamo la voce Create a New Feed, diamo un nome al nostro Feed (nel nostro caso è Scheda) e poi clicchiamo su Create.
Ora muoviamoci sul sito IFTTT per creare due applet, che ci serviranno per attivare e disattivare il relè. Ricordiamo, inoltre, che il servizio IFTTT è gratuito fino alla terza applet. Una volta digitato l’URL https://ifttt.com/ effettuiamo il LogIn e clicchiamo sul pulsante Create per creare una nuova applet.
Clicchiamo su If This e cerchiamo dalla apposita barra “Google Assistant” poi selezioniamo la voce che apparirà.
Verranno mostrate quattro opzioni, ma quella che serve a noi è “Say a simple phrase“.
Compila il form inserendo la frase che pronunceremo, la frase di risposta di Google e la lingua. Poi facciamo click su Create trigger.
Torniamo sulla pagina dell’applet e scegliamo Then That, poi cerchiamo e selezioniamo la voce Adafruit.
La pagina che si apre mostrerà una sola scelta, denominata Send data to Adafruit IO.
Il passo successivo sarà compilare il form selezionando il feed che abbiamo creato prima e in Data to save scrivete ON.
Ripetiamo la procedura per creare l’applet per la disattivazione del modulo relè, cambiando la frase chiave nel form di Google Assistant da Attiva relè a Disattiva relè e scrivere OFF in Data to save del form di Adafruit. Otterremo due applet come in foto.
Passiamo ora al codice, scaricabile a questo LINK. Iniziamo includendo le librerie necessarie alla connessione WiFi e alla connessione ai servizi Adafruit che ci permetteranno di usare IFTTT. Definiamo poi il pin digitale che useremo (il pin 0 nel nostro caso), poi scriviamo il nome della nostra rete WiFi e la relativa password.
#include <ESP8266WiFi.h> #include "Adafruit_MQTT.h" #include "Adafruit_MQTT_Client.h" #define LED 0 #define WLAN_SSID "nome_wifi" #define WLAN_PASS "password"
Definiamo poi i parametri per connetterci al sevizio MQTT di Adafruit specificando il server, la porta 1883, username e la API-Key, ricavabili dalla dashboard del profilo utente del sito https://io.adafruit.com/ cliccando sulla voce in alto a destra Adafruit IO Key.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883 #define AIO_USERNAME "nome-utente" #define AIO_KEY "aiokey-ioadafruit"
Passiamo poi alla connessione al servizio di Adafruit e creiamo un evento che andrà ad interagire con il nostro feed Scheda che abbiamo creato precedentemente. URL del feed è ottenibile dalla pagina Feeds del sito IO Adafruit, cliccando sul nome del feed creato.
WiFiClient client; Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_USERNAME, AIO_KEY); Adafruit_MQTT_Subscribe onoffbutton = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/scheda");
Saltiamo ora alla parte che ci interessa maggiormente. Nel VOID LOOP, una volta che la connessione MQTT andrà a buon fine, il client connesso richiederà la variazione dello stato del pin 0, attivando o disattivando il relè e registrando la variazione di stato sul feed Scheda. Ogni variazione viene registrata e riportata su una lista eventi, consultabile dall’apposita pagina dei Feeds.
Adafruit_MQTT_Subscribe *subscription; while ((subscription = mqtt.readSubscription(5000))) { if (subscription == &onoffbutton) { Serial.print(F("On-Off button: ")); Serial.println((char *)onoffbutton.lastread); digitalWrite(LED, (int)onoffbutton.lastread); if (strcmp((char *)onoffbutton.lastread, "ON")) { digitalWrite(LED, HIGH); } if (strcmp((char *)onoffbutton.lastread, "OFF")) { digitalWrite(LED, LOW); }
Ricordatevi di scegliere dal menu Strumenti della IDE di Arduino la scheda Generic ESP8266 Module e caricate lo sketch. Fissate poi la ESP-01 sul modulo e date corrente per attivarla. Non resta che pronunciare una delle frasi scelte all’assistente di Google e vedrete il vostro modulo relè attivarsi o disattivarsi.