Introduction: Como Conectar El SONOFF WiFi Switch a Io.adafruit.com Via MQTT

El Itead SONOFF es un interruptor inteligente de WIFI. Es muy económico y completamente hackeable debido a que esta basado en el famoso ESP8266. En este ejemplo se va a re-configurar el dispositivo para conectar vía MQTT al servicio de io.adafruit.com.

Para reprogramar el ESP8266 vamos a utilizar el Arduino IDE y algunas librerías de Adafruit.

En el video se ve como se puede controlar el switch WIFI usando el Dashboard de io.adafruit.com y tambien los servicios de IFTTT.com con el Amazon Echo.

El SONOFF conecta via WIFI al internet y comunica con io.adafruit.com utilizando el protocolo MQTT. Internamente el SONOFF esta SUSCRITO y PUBLICA al topico(feed) ONOFF en el broker MQTT de io.adafruit.com.

Cuando el estatus del topico ONOFF cambia, el SONOFF esta notificado de inmediata porque esta SUSCRITO. Cuando el mensaje que se recibe es "ON" se prende el relay y un LED. Cuando el mensaje es "OFF" se apaga el relay y el LED. Cualquier sistema que puede PUBLICAR al topico puede activar el interruptor. Para demostrar se agregó un interfaz en el Dashboard, se hizo una receta en IFTTT.com para recibir comandos de voz y también hay un botón manual en el SONOFF que puede cambiar el estatus del topico ONOFF.

Step 1: Materiales Requeridos

Hardware

  1. Itead SONOFF Smart WiFi Switch
  2. Itead FOCA (o cualquier convertidor USB-Serial de 3.3V)
  3. Header de 4 pines hembra

Software

  • Arduino IDE 1.6.7 (Download)
    • ESP8266 Board Package (seguir estas instrucciones para agregar esta placa a su Arduino IDE)
    • Adafruit MQTT Library (Sketch-->Include Library-->Manage LIbraries...) NOTA: En junio 2016 de repente el sistema dejó de funcionar y tenia que actualizar la liberia de MQTT directamente de Github.
    • En Tools se debe asegurar que los parametros son los mismos que en el screenshot arriba.

Step 2: Conectando Al Interfaz De Programación

Desarmar el SONOFF es muy simple. La tapa esta pensada y abre deslizando una uña en el borde.

El fabricante del SONOFF es Itead y se nota que ellos usaron su propio convertidor USB-Serial para programar el ESP8266, la FOCA. El conector J1 en el centro de la segunda foto tiene 4 pines. El pin cuadrado es Vcc, seguido por RX, TX, y GND. Luego de soldar un header hembra, se puede insertar la FOCA directamente dejando el pin de DTR por fuera como se ve en la ultima foto. Favor asegurar que la FOCA esta en 3.3V antes de conectar.

Para referencia el pinout es el siguiente (desde arriba hacia abajo en la segunda foto)

SONOFF-------FOCA

1. GND---------GND
2. TX------------RX
3. RX------------TX
4. Vcc---------- Vcc (notar que es el pin cuadrado en la foto)

Cuando esta rearmando el SONOFF asegurar que el botón manual entra bien en el hueco y se puede mover libremente.

Step 3: Crear Una Cuenta En Io.adafruit.com

io.adafruit.com es un broker de MQTT gratuito. Además de un simple broker MQTT tiene un interfaz para crear dashboards, mandar alertas y conectar con el servicio IFTTT. IFTTT (IF THIS THEN THAT) es un servicio que permite conectar sus aplicaciones en diversas formas.

  1. En http://io.adafruit.com crear un usuario
  2. Entrar en Settings-->VIEW AIO KEY y anotar la clave (vamos a utilizarlo luego)
  3. Entrar en My Account y anotar su USERNAME

Step 4: Actualizar El Firmware En El SONOFF

El firmware que utilizamos esta basado en el ejemplo básico de la librería de Adafruit MQTT.

DOWNLOAD FIRMWARE DE GITHUB

Para modificar el firmware para su red WIFI y su cuenta en io.adafruit.com solo hay que cambiar 4 parametros al principio del código.

Agregar el SSID y PASSWORD de su red WIFI.

Agregar su usuario de io.adafruit.com a AIO_USERNAME.

Agregar su clave de io.adafruit.com a AIO_KEY.

La clave se encuentra en Settings-->VIEW AIO KEY

/************************* WiFi Access Point *********************************/
#define WLAN_SSID   "---ssid---"
#define WLAN_PASS   "---password---"
/************************* Adafruit.io Setup *********************************/
#define AIO_SERVER   "io.adafruit.com"
#define AIO_SERVERPORT  1883 // use 8883 for SSL
#define AIO_USERNAME    "adafruit_mqqt-user"
#define AIO_KEY         "adafruit_io_key"
  1. Asegurar que el SONOFF no esta conectado al 120VAC cuando esta actualizando el software o conectado a la FOCA!
  2. Desconectar el conector USB del SONOFF y mantener el botón apretado.
  3. Conecta el USB de nuevo y luego soltar el botón. Ahora el ESP8266 debe estar en modo para programar.
  4. Haga click en UPLOAD en el Arduino IDE para subir el código.

En el Serial Monitor del IDE (tiene que estar en 115200 bps) debe empezar a ver los mensajes de que esta conectando al WIFI y al MQTT.

Comportamiento:

  1. LED parpadeando indica que el SONOFF se encuentra conectando a la red WIFI.
  2. LED apagado significa que el SONOFF logró conectar a la red WIFI.
  3. Apretando el botón manda un mensaje por MQTT y prende/apaga el relay.

Step 5: Preparar El Dashboard En Io.adafruit.com

  1. En YOUR FEEDS seleccionar CREATE FEED.
  2. En el NAME ponga "onoff" en minúscula. Luego seleccionar el botón CREATE FEED.
  3. En YOUR DASHBOARDS seleccionar CREATE DASHBOARD.
  4. En DASHBOARD NAME escoge el nombre de su dashboard. Luego selecciona el botón CREATE DASHBOARD.
  5. En el Dashboard seleccionar el icono azul "+" para agregar un nuevo block.
  6. CREATE un nuevo switch (Toggle Button).
  7. Elegir el Feed "onoff" apretando el botón CHOOSE y seleccion NEXT.
  8. En Button On Text escribe "ON" (mayúscula).
  9. En Button Off Text scribe "OFF" (mayúscula).
  10. CREATE BLOCK.
  11. Su switch debe empezar a funcionar de una vez.

Step 6: SONOFF Pinouts

Para referencia los pines del SONOFF son los siguientes:

Pin 0 Botón Manual

Pin 12 Relay

Pin 13 LED