Proyectos IoT

Tutorial dual de SONOFF: controle sus electrodomésticos de forma remota utilizando MQTT y Ubidots

María Hernández
· 4 min de lectura
Enviar por correo electrónico

En esta guía aprenderás a controlar un par de electrodomésticos de 110V a través de Wi-Fi por $ 9, usando SONOFF Dual de Itead .
En comparación con los enchufes inteligentes WiFi de consumo disponibles en el mercado, SONOFF es una excelente alternativa para realizar IoT a mayor escala. Además, está basado en el popular chip Wi-Fi ESP8266, lo que lo hace compatible con el entorno Arduino y otros recursos como nuestras bibliotecas ESP en Ubidots .

Requisitos

Configuración de hardware

Desmonte el dispositivo SONOFF Dual, esto es para acceder al pinout TTL de SONOFF, que necesitaremos para programar el ESP8266 integrado. El SONOFF viene sin dos de sus cabezales de clavija, por lo que deberá soldarlos antes de programar la unidad.

Después de soldar, conecte la placa al UartSBee siguiendo esta tabla:

UartSBee SONOFF Doble
VCC VCC
Texas RX
RX Texas
Tierra Tierra

Configuración de pines de UartSBEE

Además, deberá realizar una conexión entre el pin GND del encabezado del pin de la izquierda (el que contiene los pines del Botón 1 y 0) y el pin EN_FW del ESP8266 que se muestra a continuación:

Distribución de pines de SONOFF (frontal)

Distribución de pines de SONOFF (cara posterior)

Configuración del IDE de Arduino

  1. En el IDE de Arduino, haga clic en Archivos -> Preferencias e ingrese esta URL en el URL del Administrador de placas adicionales , para poder acceder a las bibliotecas de ESP8266 para Arduino:
http://arduino.esp8266.com/stable/package_esp8266com_index.json

Este campo admite varias URL. Sepárelos con comas en caso de que ya haya escrito otras URL.

  1. Abra el Administrador de placas desde el menú **Herramientas -> Placa **e instale la plataforma ESP8266.
  2. Después de la instalación, vaya al Herramientas > Placa y seleccione la placa: Módulo ESP8266 genérico.
  3. Descarga la Ubidots como un archivo ZIP en nuestra cuenta de GitHub .
  4. De vuelta en su IDE de Arduino, haga clic en Sketch -> Incluir biblioteca -> Agregar biblioteca .ZIP.
  5. Selecciona el archivo .ZIP de Ubidots ESPMQTT y luego haz clic en “Aceptar” o “Elegir”.
  6. Cierra el IDE de Arduino y ábrelo nuevamente.

Codificando tu SONOFF Dual

Este código de muestra se suscribirá a una variable Ubidots que enciende o apaga ambos relés al mismo tiempo.

Antes de ejecutar el código, vaya a su cuenta Ubidots , ubique la pestaña "Dispositivos" y cree un Dispositivo llamado "SONOFF Dual" y una variable llamada "Relés". Debería verse así:

Asegúrese de que la etiqueta API del dispositivo sea "sonoff-dual" y que la etiqueta API variable sea "relés". Estos son los identificadores únicos utilizados por SONOFF para saber a qué variable suscribirse en el broker MQTT. Puede editar las etiquetas si es necesario.

Ahora estás listo para actualizar tu dispositivo con el siguiente código:

/**************************************** * Incluir Bibliotecas ****** ********************************/ #include " Ubidots ESPMQTT.h" /****** ********************************** * Definir constantes ************* ***************************/ #define TOKEN "p4uuxxxxxxxxncTVfoVqxxxxxRQW" // Tu TOKEN Ubidots #define WIFINAME "UBIWIFI" //Tu SSID # define WIFIPASS "clave123456789ubi" // Tu pase Wifi #define MQTTCLIENTNAME "sonoff15345" // Tu nombre de cliente MQTT, debe ser único, por lo que recomendamos elegir un nombre ASCCI aleatorio Ubidots client(TOKEN, MQTTCLIENTNAME); /**************************************** * Funciones auxiliares ****** ********************************/ void Relays_on() { Serial.write(0xA0); Serie.write(0x04); Serie.write(0x03); Serie.write(0xA1); Serie.flush(); } void relés_off(){ Serial.write(0xA0); Serie.write(0x04); Serie.write(0x00); Serie.write(0xA1); Serie.flush(); } void callback(char* tema, byte* carga útil, longitud int sin firmar) { Serial.print("El mensaje llegó ["); Serial.print(tema); Serie.print("] "); para (int i=0;i <length;i++) { Serial.print((char)payload[i]); } if ((char)payload[0]=='1'){ relays_on(); } else{ relays_off(); } Serial.println(); } /**************************************** * Main Functions ****************************************/ void setup() { // put your setup code here, to run once: Serial.begin(19200); Serial.println("Connecting to WiFi..."); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback); Serial.println("Connected!"); pinMode(16, OUTPUT); client.ubidots y etiquetas API de variables Serial.println("Suscrito!"); } void loop() { // coloca tu código principal aquí, para ejecutarlo repetidamente: if(!client.connected()){ client.reconnect(); cliente. ubidots Subscribe("sonoff-dual","relés"); //Inserte la fuente de datos y las etiquetas de la variable } client.loop(); }

Puede realizar acciones más elaboradas jugando con los comandos internos duales de SONOFF. Aquí hay una referencia rápida que encontramos en sus foros :

Serie: 19230,8,N,1 Bytes que se enviarán a la unidad: 0xA0 0x04 0xxx 0xA1 donde 0xxx parece ser: 0x00 ambos apagados 0x01 relé uno encendido 0x02 relé dos encendido 0x03 ambos relés encendidos

Después de actualizar sus dispositivos, abra el monitor serial del IDE de Arduino, debería ver algo como esto, lo que significa que la conexión WiFi y la suscripción MQTT fueron exitosas:

Resultados

Ahora ve a la pestaña “ Dashboards ” y añade un nuevo Widget del tipo “Control”–> “Cambiar”:

Este interruptor enviará un “1” o un “0” a la variable “Relés”, que luego se lee en la función de devolución de llamada de SONOFF para encender o apagar los relés. ¡Ahora puedes controlar tu SONOFF Dual de forma remota desde tu dashboard !

Ahora es el momento de crear tus propias aplicaciones y dashboards para controlar y gestionar tus entornos. Para obtener más información sobre Ubidots , consulte estos tutoriales en vídeo y regístrese gratis hoy.