Come far riconoscere ESP8266 ad Alexa

Nell’articolo di oggi vedremo come far riconoscere ESP8266-NodeMCU ad Alexa.
Vedremo come far comunicare Alexa direttamente con ESP8266-Nodemcu senza il Cloud Amazon. ESP8266 funzionerà come un emulatore di un particolare dispositivo.

Faremo in modo che il nostro ESP8266 “emuli” un determinato dispositivo chiamato Wemo Belkin che ha particolarità di essere dotato di una licenza con Amazon che gli permette di comunicare con l’Echo Dot ignorando del tutto l’invio dei comandi del cloud Amazon.
La nostra scheda con ESP8266, fingendosi un Wemo, potrà interagire direttamente con Alexa. Insomma un bel trucchetto 🙂
Potremo usare i comandi vocali per comandare i device collegati alla nostra scheda con ESP8266 senza usare i servizi esterni come IFTTT e Blynk,
lo sketch di programmazione dei nostri progetti domotici sarà molto più corto e semplice, quindi impiegheremo meno tempo per il loro sviluppo,insomma una bella scorciatoia! Potremmo gestire l’accensione e lo spegnimento di più apparecchi elettronici come ventilatori, condizionatori e lampade, utilizzando una sola scheda ESP8266 abbinandoci solo qualche relè. Mettiamoci subito all’opera! Procurati un WemosD1 mini lite, ad esempio su Amazon:

Se non avete ancora Amazon Prime potete provarlo qui per riceverlo il giorno dopo!
Comprando da Amazon supportate gratis il mio sito e lo apprezzo molto! (Il costo per voi rimane naturalmente invariato)
Se non avete fretta potete compralo su Ebay dalla Cina ma la spedizione impiegherà circa 45 giorni, a voi la scelta.
Per impartire i comandi vocali potete usare il vostro Echo Dot, se non ne avete ancora uno lo potete acquistare da qui sotto:

Nota bene, è necessario avere un Echo Dot, non basta l’applicazione di Amazon Alexa sul vostro smartphone.

Installa e configura l’IDE di Arduino con il core di esp8266
( qui trovi il mio tutorial su come fare https://www.lutritech.it/come-programmare-esp8266-con-lide-di-arduino )

Servono 3 librerie: ESPAsyncTCP, ESPAsyncUDP, fauxmoESP, puoi scaricare i file zip direttamente qui:

Estrai ogni file zip in tre cartelle diverse e copiale in:
“C:\Users\*****\Documents\Arduino\libraries (***** è il tuo nome utente di Windows)
Riavvia l’IDE di Arduino.
Cerca l’esempio fauxmoESP_External_Server in questo modo:

Esempio FauxmoESP

modifica il “credentials.sample.h” mettendo le credenziali della tua rete wifi.
Io ho modificato la riga 104-105, mettendo LutriTech e Dispositivo1

Nome Device LutriTech

fauxmo.addDevice() definisce il nome del device che sarà usato poi da Alexa. La libreria ci consente di definire più di un dispositivo.
Compila il codice per la tua scheda e premi poi sul pulsante reset della schedina Wemos.

fauxmo-onsetstate-esp8266-alexa-lutritech

fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state, unsigned char value) { ……. });
Questo metodo è quello più importante: viene invocato quando si da il comando ad Alexa di attivare/disattivare i dispositivi dichiarati precedentemente.
Come indicato nella parte commentata state è un variabile che può essere false/true, mentre value è un numero che assumere valori da 0 a 255.

Una volta che la scheda è in esecuzione chiedi ad Alexa di cercare nuovi dispositivi con il comando vocale “Alexa, Scopri dispositivi”.
In alternativa puoi usare l’applicazione di Alexa, ma ricordati che lo smartphone/tablet dovrà essere collegato alla stesa rete Wifi indicata nello sketch.
Ricordatevi quindi di disattivare i dati mobile. Avviate l’app e in basso a destra, cliccate su “Dispositivi” e poi in alto a sinistra sul + seguendo i passi sotto.

Alexa aggiungi dispositivo

Alexa tipo di dispositivo
Alexa cerca dispositivi
Alexa ha trovato 2 dispositivi
Alexa ha trovato LutriTech
LutriTech è Pronto

Abbiamo visto come far riconoscere ESP8266-NodeMCU ad Alexa.
Ora puoi dire semplicemente:

“Alexa, accendi LutriTech”

e buon divertimento!!!!! Di certo userò questo “trucco” nei prossimi progetti perché mi sembra molto pratico e veloce.

N.B.
Se Alexa non dovesse trovare il vostro nuovo dispositivo al primo tentativo dovete semplicemente riavviarla scollegando e ricollegando l’alimentazione

dell’echo dot che è indispensabile.

N.B.2
Mi raccomando usate l’ultima versione disponibile della libreria fauxmoESP(l’ultima funzionante è 3.4.0)

Spero che questo articolo ti sia piaciuto, l’ho scritto nel mio poco tempo libero e sono soddisfatto del lavoro ottenuto.
A te non costa nulla, ma sarei lieto se lo condividessi sui social così mi dai modo di crescere.
Ti ringrazio!

Condivi sui Social

Lascia un commento

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

54 commenti su “Come far riconoscere ESP8266 ad Alexa”

  1. Caro Giuseppe, l’appetito vien mangiando… 🙂
    Considerando che i Sonoff hanno internamente un ESP8285 e che Fauxmo funziona con questi dispositivi (provato personalmente) che tu sappia c’è la possibilità che funzioni anche con le versioni dimmerabili?

  2. Grazie per l’articolo, chiaro e semplice.
    Mi sembra di capire che il comando inviato ad Alexa cambi semplicemente lo stato del pin, quindi “accendi” o “spegni” sono equivalenti. O sbaglio?

    1. Mi rispondo da solo: no, il comando non è una semplice commutazione, ma fa esattamente quello che viene chiesto.
      Mi spiego: il comando “Accendi” accende e basta, un secondo comando di accensione non cambia lo stato del pin che comanda, a differenza di quanto temevo.
      Grazie ancora per l’interessante articolo.

  3. Ciao Giuseppe,
    ti ringrazio per il Tutorial, vorrei chiederti perchè sull’app di alexa mi esce scritto:
    “Questo dispositivo non supporta il valore richiesto”.
    ho utilizzato il tuo sketch così come ho solo modificato i valori del wifi.
    Grazie mille per la risposta

  4. Ciao Giuseppe,
    al mio wemos ho collegato un sensore di temperatura e umidità. Secondo te è possibile chiedere ad Alexa di leggermi i valori e avere la risposta sul device Alexa a cui ho fatto la domanda?
    Grazie.
    Simone

    1. Ciao Simone,
      questa libreria emula le luci Philips Hue, quindi il device emulato può essere acceso/spento a secondo di un valore tra 0 e 255 (luce dimmerabile),
      in sostanza ti permette di dare dei comandi ad un attuatore come un relè.
      Per chiedere la temperatura la prima cosa che mi viene in mente è usare ifttt con trigger con frase e la chiamata al webhook.
      Giuseppe

  5. Ciao, premettendo che hai fatto una cosa davvero molto utile e in maniera apparentemente semplice. Avevo in precedenza già interfacciato il nodemcu con alexa tramite Sinric. Volevo chiederti, nel caso in cui il nodemcu comandasse un relè a impulsi, su quale riga del codice devo lavorare per fargli fare un “accendi-spegni” con un determinato delay?

    Grazie mille

    1. Ciao Andrea,
      il metodo è fauxmo.onSetState ( )
      al suo interno devi togliere il commento alla riga
      if (0 == device_id) digitalWrite(RELAY1_PIN, state);
      il questo modo attivi il pin che farà scattare il relè.
      Quanto prima modifico l’articolo per renderlo più chiaro.
      Grazie.
      Giuseppe

      1. Ciao Giuseppe e grazie per la celere risposta, proverò al più presto. Inoltre vorrei chiederti, come mai con i fire stick con integrato alexa, non viene rilevato nessun dispositivo?

  6. da qualche giorno mi sono affacciato a questa esperienza, da una settimana ho preso Alexa e subito mi è venuto in mente di collegare NODEMCU. Ho caricato lo sketch faxumoESP_External_Server e durante la compilazione mi da : “Errore durante la compilazione per la scheda NodeMCU 1.0 (ESP-12E Module). QUl’è l’errore? Grazie e complimenti per la spiegazione lineare. Saluti Francesco

      1. grazie per avermi risposto! la porta è corretta! L’errore lo fa in fase di compilazione! Visto che mi trovo volevo chiederti, se possibile, se hai disponibile uno sketch per rilevare la temperatura con un DHT22 o simili e farlo dire ad Alex ad una specifica richiesta. Grazie

        1. Ciao,
          prova a selezionare come Scheda “Generic ESP8266 Module” e prova solo a fare Verifica/Compila premendo CTRL+R
          Non ho pronto un termometro smart, mi hai dato una bella idea per un prossimo articolo 🙂

  7. Buongiorno
    Ho trovato interessante l’articolo ,ma essendo alle prime armi con Arduino e forse magari imbranato ,ma non sono riuscito a trovare il file per Arduino .C’è un link che non vedo-
    Come far riconoscere ESP8266 ad Alexa
    Grazie
    Marco

  8. Ciao Giuseppe

    ho riletto il tuo articolo ed i commenti, stavo usando la libreria fauxmoESP vecchia l’ho aggiornata alla 3.4.0 ed ora il device viene rilevato da echo dot.
    grazie mille e scusa se ho abusato del tuo sapere.

    Germano

    1. Ciao Germano,
      scusa riesco a rispondere solo ora. Mi fa piacere sapere che hai risolto.
      Ora aggiorno il tutorial in modo che sia più chiaro.
      Spero di rivederti presto tra i commenti 🙂
      Un caro saluto.
      Giuseppe

      1. Ciao Giuseppe

        sto usando il tuo progetto per comandare le tapparelle di casa, vorrei farti un’altra domanda
        sarebbe possibile inviare comandi on/off per i due rele su/giu non passando per echo dot ma direttamente da smartphone che condivide con il modulo esp8266 la stessa rete puntando al suo indirizzo ip ?
        In poche parole lo vorrei comandare i rele sia da echo dot che da smartphone scrivendo una app ad hoc.

        Grazie mille.
        Germano

          1. Ciao Giuseppe

            grazie per l’informazione, non conosco blynk l’importante è che mi permetta di sviluppare l’interfaccia grafica tipo MIT AppInventor, tra blynk ed echo dot mi sapresti indicare la più facile da utilizzare, ad ogni modo utilizzando il tuo firmware con poche modifiche sto comandando una tapparella sia con i due pulsanti (hardware) che da comando vocale passando per echo dot,
            Saluti
            Germano

  9. Ciao Giuseppe

    Ho letto il tuo articolo con interesse, molto chiaro e ben strutturato.
    Avendo a disposizione un modulo ESP8266 NodeMcu V3 mi sono cimentato nel tuo progetto, ho aperto lo sketch FauxmoESP_External_Server ed ho eseguito le modifiche consigliate nel programma, fin qui tutto ok lo sketch viene compilato e caricato nel modulo correttamente, controllando da monitor seriale vedo che si connette alla mia rete wifi.
    Ho eseguito il riconoscimento da smartphone installando l’app amazon alexa ma il device non viene riconosciuto, riesco a comandare alexa Eho regolando ad esempio il volume a validare che smartphone ed alexa si vedono.
    Potrebbe essere il modulo ESP8266 NodeMcu V3 non compatibile ?

    Grazie molto.

    Germano

      1. Ciao Giuseppe
        Grazie per la celere risposta, si ho un echo dot acquistato su Amazon da mio figlio, e l’ho configurato tramite app alexa per connettersi alla mia rete wifi e funziona correttamente, non sono molto pratico di reti ma da smartphone riesco a comandare il volume di echo dot validando cosi che echo e smart si parlano.
        Tutto sembrerebbe regolare (per qulle che sono le mie scarse conoscenze) ma quando da app alexa cerco i dispositivi il modulo esp8266 non viene rilevato, da seriale vedo che è connesso al mio wifi, il mio dubbio è se l’Esp8266 NodeMcu è compatibile con il firmware?

        Germano

          1. Ciao Giuseppe

            avevo già provato a spegnere e riaccendere, ho riprovato di nuovo ho cercato il device sia da echo che tramite applicazione alexa ma negativo, sto sicuramente commettendo un errore procedurale ma non me ne sto accorgendo.
            E’ importante che tipo di echo dot si utilizza 1°, 2°, 3° generazione?
            Non so a che generazione appartiene il mio echo dot.

            Germano

  10. Buonasera,
    sto provando a realizzare il collegamento tra il Wemos e Alexa come proposto nell’articolo, ma senza che quest’ultima riesca a trovarmi il dispositivo. Ho riavviato più volte la schedina e l’app di Alexa, ma non trova niente. Ho compilato lo sketch con la libreria fauxmoESP sia nella versione 3.1.1 che nell’ultima 3.4, ma niente. Premetto che alla prima compilazione mi ha dato l’errore di mancanza della libreria “ESPAsyncWebServer.h” che ho installato scaricandola dal link https://github.com/me-no-dev/ESPAsyncWebServer, Compilato e caricato senza errori, nel monitor seriale ricevo queste scritte che mi sembrano corrette:

    [WIFI] Connecting to EOLO – FRITZ!Box 7430 WL …………………………
    [WIFI] STATION Mode, SSID: EOLO – FRITZ!Box 7430 WL, IP address: 192.168.178.130
    [MAIN] Free heap: 49184 bytes
    [MAIN] Free heap: 48680 bytes

    Il problema risiede nel fatto che uso l’app di Alexa?

    Grazie in anticipo per la risposta

    1. Ciao Davide,
      grazie per la visita!
      Devi usare la 3.4.0 perchè è quella attualmente funzionante.
      Ho appena ricaricato lo sketch su un wemos d1 mini e usando l’app di alexa mi ha trovato subito i “nuovi device virtuali”.
      Quando usi l’app per cercare nuovi device il tuo cellulare deve essere collegato alla stessa rete del WEMOS, nel tuo caso sarà 192.168.178.x
      Dal tuo pc di casa se fai ping 192.168.178.130 cosa vedi?
      Fammi sapere.
      Un saluto.
      Giuseppe

      1. Grazie Giuseppe per la risposta rapidissima (io l’ho vista solo ora)
        I dispositivi sono connessi alla stessa rete WiFi e questo è l’esito del ping:

        Microsoft Windows [Versione 10.0.19042.985]
        (c) Microsoft Corporation. Tutti i diritti sono riservati.

        C:\Users\Administrator>ping 192.168.178.130

        Esecuzione di Ping 192.168.178.130 con 32 byte di dati:
        Risposta da 192.168.178.130: byte=32 durata=121ms TTL=255
        Risposta da 192.168.178.130: byte=32 durata=115ms TTL=255
        Risposta da 192.168.178.130: byte=32 durata=111ms TTL=255
        Risposta da 192.168.178.130: byte=32 durata=129ms TTL=255

        Statistiche Ping per 192.168.178.130:
        Pacchetti: Trasmessi = 4, Ricevuti = 4,
        Persi = 0 (0% persi),
        Tempo approssimativo percorsi andata/ritorno in millisecondi:
        Minimo = 111ms, Massimo = 129ms, Medio = 119ms

        Non so se va vene, non mi intendo molto di reti.
        Comunque non trova ancora nessun dispositivo. Che sia forse il modem di Eolo che blocca alcune funzioni?

        1. Ciao Davide,
          il wemos è visibile dalla rete domestica.
          Prova a vedere se la porta 80 del wemos è in ascolto
          Sempre dal prompt esegui
          telnet 192.168.178.130 80
          dovresti vedere una schermata nera con il cursore in alto a sinistra

          IL modem di eolo ha la rete wifi a 5Ghz?
          Prova ad usare solo quella a 2,4 Ghz.

          1. Ciao Giuseppe,
            ho fatto la prova del comando telnet dopo aver abilitato il client telnet nel pannello di controllo perchè altrimenti dava errore e ti confermo che lo schermo del prompt dei comandi si è pulito ed è rimasto solo il cursole in alto a sinistra lampeggiante.
            Il router di Eolo sta funzionando a 2,4 GHz.
            Nel frattempo ho provato a caricare il firmware in un’altra scheda Wemos D1 mini senza che sia cambiato nulla.
            Ho anche provato per escludere problemi con Eolo, ad utilizzare un cellulare come hot spot WiFi. Ho connesso il Wemos al wifi del cellulare e con un’altro telefono, anch’esso connesso alla stessa rete, ho lanciato l’app Alexa senza trovare nessun dispositivo.
            Infine ho provato a cambiare le impostazioni dell’IDE Arduino (uso la versione 1.8.13) provando le schede “WeMos R1 D1” e “Lolin (WeMos) D2 & mini”. Compila e carica tutto correttamente in entrambi i casi, ma non trova il dispositivo.
            Non so più cosa fare.

          2. Ciao Davide,
            Sul tuo modem di Eolo verifica che il protocollo uPnP sia attivo.
            Puoi gestire e ricercare i tuoi dispositivi anche da questa pagina https://alexa.amazon.it/spa/index.html
            andando su “Casa Intelligente” e poi su dispositivi.

            Cerca il file fauxmoESP.h sul tuo pc, dovrebbe essere qui
            C:\Users\TUOUTENTE\Documents\Arduino\libraries\FauxmoESP\src

            Alla riga 38 togli il commento, avrai questa riga
            #define DEBUG_FAUXMO Serial

            Alla riga 50 e 54 sostituisci il false con true, in modo da avere
            #define DEBUG_FAUXMO_VERBOSE_TCP true
            #define DEBUG_FAUXMO_VERBOSE_UDP true

            In questo modo hai abilitato il debug della lib.
            Ora ricompila tutto e carica lo skecth sul Wemos.
            Vedi in realtime tutte le richieste che arrivano.
            Fammi sapere.
            Giuseppe

    2. Ciao Davide,
      ho riletto meglio questo commento e mi è venuto un dubbio: hai un echo dot?
      Le lib espalexa e fauxmoESP per poter funzionare hanno bisogno di un dispositivo echo perchè è lui fisicamente che comunica nella rete.
      L’applicazione non fa il discover dei device. Ho provato a fare la prova del 9 🙂
      Spegnendo echo dot non mi rileva nulla, accendendolo si.

      1. Ciao Giuseppe,
        sono finalmente riuscito a far funzionare il Wemos! Avevi ragione, occorre acquistare un Echo dot perchè altrimenti i dispositivi non li trova. Lo specificherei magari all’inizio del tutorial, perchè chi è invornito come me e non conosce come funziona il mondo Alexa, potrebbe pernsare che basti solo installare l’app come avevo fatto io.
        Grazie mille per i consigli e per il bel tutorial. Al mio impianto domotico avevo aggiunto anni fa il pilotaggio delle lampade attraverso il comando vocale con un modulino chiamato Voice-etreme che aveva la pecca di essere voice dependent e occorreva fare una fase di training lunga e noiosa per memorizzare le parole da riconoscere. Grazie a te potrò aggiornarlo ad una tecnologia più attuale!

        Un saluto

        1. Ciao Davide,
          ho modificato l’articolo in modo che sia più chiaro che è necessario avere l’Echo Dot per poter avere questa integrazione.
          Spero di vederti presto nei commenti dei prossimi articoli.
          un salutone
          Giuseppe

          1. Ciao Giuseppe,
            perfetto! Ti volevo chiedere se esiste un numero massimo di dispositivi gestibili con la libreria fauxmoESP e se questo numero è aumentabile. Dalle prove che ho fatto ne piloto al massimo 10, mentre io avrei l’esigenza di controllare circa 30 lampade. E’ fattibile?
            Grazie ancora della disponibilità

          2. Ciao Davide,
            In questo link trovi la risposta.
            Info

            Con esp8266 il limite è 10 mentre con l’esp32 è 20.
            Se leggi la discussione c’è una issue aperta per aumentare tale limite.
            Speriamo che con i prossimi aggiornamenti si risolverà!

  11. Buonasera non so cosa succedeva ho solo aggiornato la libreria fauxmoesp edora aggiungo agevolmente virtual device e li comando da Alexa. non mi spiego perche la prima volta ero riuscito a creare un dispositivo e poisi è impantanato tutto uscendone solo dopo aver aggiornato la libreria.
    Grazie per la magnifica possibilità ed ora debbo stupire mia figlia .
    Stefano

  12. buonasera
    ho trovato questa pagina e mi sono subtio entusiasmato alla prima botta ho configurato il led a bordo scheda (wemos D1 Mini) su GPIO2 e con il comando vocale sono riuscito ad accenderlo e spegnerlo tramite Alexa ma qualsisasi altro tentativo di creare altri device virtuali sta fallendo miseramente ho spento e riacceso alexa come suggerito decine di volte senza risultato non vede piu nulla. Se ha qualche altro suggerimento Le sarei veramente grato. sono esperto di HW e SFW ma poco pratico con le reti. intanto il virtual device che sono riuscito a crEARE funziona perfettamente

    1. Ciao Stefano,
      che versione della libreria stai utilizzando?
      Quando dici “qualsisasi altro tentativo di creare altri device virtuali sta fallendo miseramente” intendi quello dello stesso sketch?
      pensa che ho in bozza un nuovo articolo su questo tema 🙂

  13. Ciao Giuseppe,
    non mi era mai capitato di avere delle risposte in tempo reale, oggi ho avuto anche questa esperienza con grande soddisfazione: grazie.
    Un secondo ringraziamento è anche per il tuo suggerimento che mi ha permesso, dopo il riavviamento di Alexa, di verificare la funzionalità del tuo sketch sia per quanto riguarda i comandi che per la impostazione di parametri da Alexa con comandi vocali.
    Sarebbe magnifico se in futuro implementassi in questo sketch, ovviamente solo se possibile, la lettura di parametri da Wemos vs Alexa (vedi temperatura, umidità, ecc.).
    Grazie mille.

    Gianpaolo Vitali

    1. Figurati Gianpaolo! Grazie per essere passato sul mio sito e per la tua idea.
      Avevo intenzione di fare qualcosa in merito.
      Da poco ho aperto anche il canale su Telegram per rimanere aggiornati sull’uscita
      dei nuovi articoli che scrivo. Se ti fa piacere basta cliccare qui sotto:
      https://t.me/LutriTech
      Alla prossima!
      Giuseppe

  14. Giuseppe buongiorno,
    il tuo progetto è molto interessante e l’ho subito realizzato anche per la semplicità dello sketch.
    Sul monitor del Wemos riscontro il collegamento alla mia rete wifi ma interrogando Alexa non mi presenta nuovi dispositivi. È’ così semplice come dalla tua descrizione il rilevamento del nuovo device oppure occorre prima attivare qualche skill su Alexa e associare in qualche modo il nuovo dispositivo al Wemo.
    Un grazie in anticipo per i suggerimenti che potrai darmi.

    Gianpaolo Vitali

    1. Ciao Gianpaolo,
      grazie per i complimenti.
      Se Alexa non trova il nuovo dispositivo prova semplicemente ad riavviarla e vedrai che così funzionerà.
      Ho inserito ora questa informazione alla fine dell’articolo, sicuramente è molto utile.
      Fammi sapere.
      A presto.
      Giuseppe

Torna in alto