Come controllare un ESP32 o ESP8266 con Alexa e Google Home

Questa guida mostra come collegare un ESP32 o ESP8266 (NodeMCU, Wemos D1 mini) ad Amazon Alexa e Google Home, per accendere e spegnere con la voce un relè, una luce o qualsiasi altra uscita.

Non devi scrivere una skill Alexa o una action Google Home, e non devi aprire nessuna porta sul router.

Come funziona

Sinric Pro esp8266 esp32 picow

  1. Il tuo ESP32 o ESP8266 esegue la libreria Sinric Pro e mantiene aperta una connessione sicura con il server Sinric Pro.
  2. Colleghi una sola volta la skill Alexa o la action Google Home Sinric Pro al tuo account Sinric Pro.
  3. Quando dici “Alexa, accendi l’interruttore”, Alexa invia il comando a Sinric Pro, e Sinric Pro lo inoltra alla tua scheda.

Poiché è la scheda a connettersi al server, funziona da qualsiasi luogo e su qualsiasi rete domestica.

Sinric Pro è una skill Alexa Smart Home e una action Google Home ufficiale. Non usa l’emulazione di dispositivi. Se arrivi da Espalexa o fauxmoESP, leggi Espalexa o fauxmoESP “Device Not Found”?.

Cosa ti serve

  1. Una scheda di sviluppo ESP32 o ESP8266.
  2. Un modulo relè o un LED da comandare.
  3. Arduino IDE o PlatformIO.
  4. Un account Sinric Pro gratuito. I limiti del piano gratuito sono indicati nella pagina dei prezzi.

Passo 1: Crea un dispositivo in Sinric Pro

Sinric Pro create device alexa

Sinric Pro copy device id

Il nome del dispositivo è quello che dirai ad Alexa o Google Home, quindi scegli un nome facile da pronunciare.

Passo 2: Installa la libreria Sinric Pro

In Arduino IDE apri Strumenti > Gestione librerie, cerca SinricPro e fai clic su Installa.

Sinric Pro install SinricPro library

Per PlatformIO, dipendenze ed errori comuni, vedi How to install the Sinric Pro library.

Passo 3: Carica il codice

Lo stesso sketch funziona su ESP32 ed ESP8266. Inserisci i dati del tuo Wi-Fi e i tre valori del Passo 1.

#include <Arduino.h>
#if defined(ESP8266)
  #include <ESP8266WiFi.h>
#elif defined(ESP32)
  #include <WiFi.h>
#endif

#include <SinricPro.h>
#include <SinricProSwitch.h>

#define WIFI_SSID   "YOUR-WIFI-SSID"
#define WIFI_PASS   "YOUR-WIFI-PASSWORD"
#define APP_KEY     "YOUR-APP-KEY"
#define APP_SECRET  "YOUR-APP-SECRET"
#define SWITCH_ID   "YOUR-DEVICE-ID"

#if defined(ESP8266)
  #define RELAY_PIN 12   // D6
#elif defined(ESP32)
  #define RELAY_PIN 16
#endif

// called when Alexa, Google Home or the Sinric Pro app turns the switch on or off
bool onPowerState(const String &deviceId, bool &state) {
  Serial.printf("Device %s turned %s\r\n", deviceId.c_str(), state ? "on" : "off");
  digitalWrite(RELAY_PIN, state ? HIGH : LOW);
  return true; // request handled
}

void setup() {
  Serial.begin(115200);
  pinMode(RELAY_PIN, OUTPUT);

  WiFi.begin(WIFI_SSID, WIFI_PASS);
  while (WiFi.status() != WL_CONNECTED) {
    delay(250);
    Serial.print(".");
  }

  SinricProSwitch &mySwitch = SinricPro[SWITCH_ID];
  mySwitch.onPowerState(onPowerState);

  SinricPro.begin(APP_KEY, APP_SECRET);
}

void loop() {
  SinricPro.handle();
}

Se non vuoi scrivere codice, la funzione Zero Code del Portale può generare lo sketch per te.

Quando la scheda si connette, il dispositivo risulta online nel Portale e puoi accenderlo e spegnerlo da lì. Per il cablaggio di un relè, vedi Switch Tutorial Part 1.

Passo 4: Collega Amazon Alexa

Altre informazioni su ricerca dei dispositivi, routine e risoluzione dei problemi: Amazon Alexa.

Passo 5: Collega Google Home

I nomi delle voci nell’app possono variare leggermente in base alla lingua.

Altre informazioni: Google Home.

Samsung SmartThings

Altre informazioni: Samsung SmartThings.

Cos’altro puoi costruire?

Un interruttore è solo il punto di partenza. Gli stessi passi valgono per altri tipi di dispositivo:

Domande frequenti

Devo creare una mia skill Alexa?

No. Abiliti la skill Sinric Pro esistente e colleghi il tuo account.

Funziona con schede diverse da ESP32 ed ESP8266?

Sì. Esistono SDK per Raspberry Pi Pico W, Arduino UNO R4 WiFi, Nano 33 IoT, MKR WiFi 1010, MicroPython, Python e NodeJS. Vedi l’elenco degli SDK.

Posso controllare piĂą dispositivi con una sola scheda?

Sì. Un ESP32 o ESP8266 può ospitare più dispositivi Sinric Pro, per esempio una scheda relè a 4 canali. Vedi Modules e la Parte 3 del tutorial sugli interruttori.

Posso usarlo con Apple HomeKit o Home Assistant?

Sì. Vedi Homebridge (HomeKit) e Home Assistant.

Risoluzione dei problemi

Consulta la pagina Troubleshooting per le possibili soluzioni.

This document is open source. See a typo? Please create an issue