Cómo controlar un ESP32 o ESP8266 con Alexa y Google Home

Esta guía muestra cómo conectar un ESP32 o ESP8266 (NodeMCU, Wemos D1 mini) a Amazon Alexa y Google Home, para encender y apagar con la voz un relé, una luz o cualquier otra salida.

No necesitas escribir una skill de Alexa ni una action de Google Home, y no tienes que abrir ningún puerto en tu router.

Cómo funciona

Sinric Pro esp8266 esp32 picow

  1. Tu ESP32 o ESP8266 ejecuta la librería Sinric Pro y mantiene abierta una conexión segura con el servidor de Sinric Pro.
  2. Vinculas una sola vez la skill de Alexa o la action de Google Home de Sinric Pro con tu cuenta de Sinric Pro.
  3. Cuando dices “Alexa, enciende el interruptor”, Alexa envía el comando a Sinric Pro, y Sinric Pro lo reenvía a tu placa.

Como es la placa la que se conecta al servidor, funciona desde cualquier lugar y en cualquier red doméstica.

Sinric Pro es una skill oficial de Alexa Smart Home y una action oficial de Google Home. No usa emulación de dispositivos. Si vienes de Espalexa o fauxmoESP, consulta ¿Espalexa o fauxmoESP “Device Not Found”?.

Qué necesitas

  1. Una placa de desarrollo ESP32 o ESP8266.
  2. Un módulo de relé o un LED para controlar.
  3. Arduino IDE o PlatformIO.
  4. Una cuenta de Sinric Pro gratuita. Los límites del plan gratuito están en la página de precios.

Paso 1: Crea un dispositivo en Sinric Pro

Sinric Pro create device alexa

Sinric Pro copy device id

El nombre del dispositivo es lo que le dirás a Alexa o Google Home, así que elige un nombre fácil de pronunciar.

Paso 2: Instala la librería Sinric Pro

En Arduino IDE abre Herramientas > Administrar bibliotecas, busca SinricPro y haz clic en Instalar.

Sinric Pro install SinricPro library

Para PlatformIO, dependencias y errores comunes, consulta How to install the Sinric Pro library.

Paso 3: Sube el código

El mismo sketch funciona en ESP32 y ESP8266. Introduce los datos de tu Wi-Fi y los tres valores del Paso 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();
}

Si no quieres escribir código, la función Zero Code del Portal puede generar el sketch por ti.

Cuando la placa se conecta, el dispositivo aparece en línea en el Portal y puedes encenderlo y apagarlo desde allí. Para el cableado de un relé, consulta Switch Tutorial Part 1.

Paso 4: Conecta Amazon Alexa

Más sobre la búsqueda de dispositivos, rutinas y solución de problemas: Amazon Alexa.

Paso 5: Conecta Google Home

Los nombres de las opciones en la app pueden variar ligeramente según el idioma.

Más información: Google Home.

Samsung SmartThings

Más información: Samsung SmartThings.

¿Qué más puedes construir?

Un interruptor es solo el punto de partida. Los mismos pasos sirven para otros tipos de dispositivo:

Preguntas frecuentes

¿Tengo que crear mi propia skill de Alexa?

No. Activas la skill de Sinric Pro que ya existe y vinculas tu cuenta.

¿Funciona con placas distintas de ESP32 y ESP8266?

Sí. Hay SDK para Raspberry Pi Pico W, Arduino UNO R4 WiFi, Nano 33 IoT, MKR WiFi 1010, MicroPython, Python y NodeJS. Consulta la lista de SDK.

¿Puedo controlar más de un dispositivo con una sola placa?

Sí. Un ESP32 o ESP8266 puede alojar varios dispositivos Sinric Pro, por ejemplo una placa de relés de 4 canales. Consulta Modules y la Parte 3 del tutorial de interruptores.

¿Puedo usarlo con Apple HomeKit o Home Assistant?

Sí. Consulta Homebridge (HomeKit) y Home Assistant.

Solución de problemas

Consulta la página Troubleshooting para ver posibles soluciones.

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