Ir al contenido principal
Todas las coleccionesTutoriales de proyectos IoT
Controla tus electrodomésticos de forma remota usando MQTT y Ubidots por $9
Controla tus electrodomésticos de forma remota usando MQTT y Ubidots por $9

Convierte cualquier electrodoméstico en un electrodoméstico inteligente por $9 utilizando un SONOFF Dual y Ubidots.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de 2 meses

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.

Comparado con los enchufes inteligentes 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 del SONOFF (frontal)

Pinout del SONOFF (cara posterior)

Configuración del IDE de Arduino

  • En el IDE de Arduino, haz clic en Archivos -> Preferencias y 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 admite 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 nuestra cuenta de GitHub.

  • De vuelta en tu IDE de Arduino, haz clic en Esquema -> 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 "Relays". 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 y variable de Ubidots  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 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 "Relays", 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 panel de control de Ubidots!


Este contenido fue publicado originalmente en el Blog de Ubidots el 15 de marzo de 2017.

¿Ha quedado contestada tu pregunta?