Ir al contenido principal
Todas las coleccionesTutoriales de proyectos IoT
Controla tus electrodomésticos utilizando SONOFF Dual y Ubidots
Controla tus electrodomésticos utilizando SONOFF Dual y Ubidots

Este relé Wi-Fi de $9 puede controlar dos electrodomésticos al mismo tiempo. ¡Aprende cómo conectarlo a Ubidots y desata todo su potencial!

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de una semana

En esta guía aprenderás cómo controlar un par de electrodomésticos de 110V a través de Wi-Fi por $9, utilizando SONOFF Dual de Itead, que también puede medir el consumo de energía.
Comparado con los enchufes inteligentes de WiFi de grado consumidor en el mercado, el SONOFF es una gran alternativa para realizar proyectos de IoT en el hogar inteligente e incluso industriales a mayor escala. Además, se basa en el popular chip Wi-Fi ESP8266, lo que lo hace compatible con el entorno de Arduino y otros recursos como nuestras bibliotecas ESP en Ubidots.

Requisitos

Configuración de Hardware

Desmonta el dispositivo SONOFF Dual, esto es para acceder al pinout TTL del SONOFF, que necesitaremos para programar el ESP8266 a bordo. El SONOFF viene sin dos de sus conectores de pines, por lo que necesitarás soldarlos antes de programar la unidad.

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

UartSBee ---> SONOFF Dual
VCC ---> VCC
TX ---> RX
RX ---> TX
GND ---> GND

Pinout de UartSBEE

Además, necesitarás hacer una conexión entre el pin GND del conector de pines a 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:

Pinout de SONOFF (cara frontal)

Pinout de SONOFF (cara trasera)

Configuración del IDE de Arduino

  • En el IDE de Arduino, haz clic en Archivos -> Preferencias e ingresa esta URL en el campo URLs adicionales del gestor de placas, para poder acceder a las bibliotecas del ESP8266 para Arduino:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Este campo soporta múltiples URLs. Sepáralas con comas en caso de que ya tengas otras URLs escritas.

  • Abre el Gestor de Placas desde el menú Herramientas -> Placa e instala la plataforma ESP8266.

  • Después de la instalación, ve al menú Herramientas > Placa y selecciona la placa: Módulo Genérico ESP8266.

  • Descarga la biblioteca UbidotsESPMQTT como un archivo ZIP en nuestro cuenta de GitHub.

  • De vuelta en tu IDE de Arduino, haz clic en Sketch -> Incluir Biblioteca -> Agregar Biblioteca .ZIP.

  • Selecciona el archivo .ZIP de UbidotsESPMQTT y luego haz clic en “Aceptar” o “Elegir”.

  • Cierra el IDE de Arduino y ábrelo nuevamente.

Codificando tu SONOFF Dual

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

Antes de ejecutar el código, ve a tu cuenta de Ubidots, localiza la pestaña "Dispositivos" y crea un Dispositivo llamado "SONOFF Dual" y una variable en él llamada "Relés". Debería verse así:

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

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

/**************************************** * Incluir Bibliotecas ****************************************/#include "UbidotsESPMQTT.h"/**************************************** * Definir Constantes ****************************************/#define TOKEN "p4uuxxxxxxxxncTVfoVqxxxxxRQW" // Tu TOKEN de Ubidots#define WIFINAME "UBIWIFI" //Tu SSID#define WIFIPASS "clave123456789ubi" // Tu contraseña de Wifi#define MQTTCLIENTNAME "sonoff15345" // Tu nombre de cliente MQTT, debe ser único, por lo que recomendamos elegir un nombre ASCCI aleatorioUbidots client(TOKEN, MQTTCLIENTNAME);/**************************************** * Funciones Auxiliares ****************************************/void relays_on() {    Serial.write(0xA0);    Serial.write(0x04);    Serial.write(0x03);     Serial.write(0xA1);    Serial.flush(); }void relays_off(){     Serial.write(0xA0);    Serial.write(0x04);    Serial.write(0x00);     Serial.write(0xA1);    Serial.flush();  }  void callback(char* topic, byte* payload, unsigned int length) {  Serial.print("Mensaje recibido [");  Serial.print(topic);  Serial.print("] ");  for (int i=0;i<length;i++) {    Serial.print((char)payload[i]);  }  if ((char)payload[0]=='1'){    relays_on();  }  else{    relays_off();  }  Serial.println();}/**************************************** * Funciones Principales ****************************************/void setup() {  // pon tu código de configuración aquí, para ejecutar una vez:  Serial.begin(19200);  Serial.println("Conectando a WiFi...");  client.wifiConnection(WIFINAME, WIFIPASS);  client.begin(callback);  Serial.println("¡Conectado!");  pinMode(16, OUTPUT);  client.ubidotsSubscribe("sonoff-dual","relays"); // Etiquetas de API del dispositivo Ubidots y de la variable  Serial.println("¡Suscrito!");  }void loop() {  // pon tu código principal aquí, para ejecutar repetidamente:  if(!client.connected()){      client.reconnect();      client.ubidotsSubscribe("sonoff-dual","relays"); //Inserta las etiquetas de dataSource y de la variable      }  client.loop();  }

Puedes realizar acciones más elaboradas manipulando los comandos internos del SONOFF Dual. Aquí hay una referencia rápida que encontramos en sus foros:

Serial:  19230,8,N,1Bytes a enviar a la unidad:  0xA0  0x04  0xxx  0xA1donde 0xxx parece ser:  0x00 ambos apagados  0x01 relé uno encendido  0x02 relé dos encendido   0x03 ambos relés encendidos


Después de flashear tus dispositivos, abre el monitor serial del IDE de Arduino, deberías 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 agrega un nuevo Widget del tipo "Control"--> "Switch":

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

¿Ha quedado contestada tu pregunta?