SONOFF: un interruptor remoto para apagar o encender aparatos

sonoff

¿Te imaginas apagar o encender algo a distancia? Puedes encender la calefacción, o apagarla si te la has dejado encendida por un descuido, también podrás abrir o cerrar persianas si las tienes automáticas, o hacer que tu casa esté a una temperatura adecuada operando sobre el aire acondicionado desde cualquier lugar. Pues para eso puede servir un SONOFF.

Por ejemplo, uno de los que puedes encontrar en el mercado es el Itead Sonoff. Se trata de un dispositivo que se basa en el módulo ESP8266, que seguro te sonará si eres un maker y creas proyectos DIY con Arduino. Se trata de un módulo WiFi muy popular al que ya dedicamos un artículo especial en Hwlibre. A ese módulo le han agregado un relé para actuar sobre los aparatos conectados y así poder apagar o encender cosas por WiFi.

¿Qué es un sonoff?

Un Sonoff es un interruptor inteligente WiFi para poder encender y apagar remotamente un aparato eléctrico. Este dispositivo permite estar conectado a Internet a través de un router WiFi en tu hogar u oficina. Desde cualquier dispositivo conectado a la red y en cualquier lugar, podrás interactuar con él para controlar tus aparatos.

Muchos sonoffs comerciales tienen su propia app para Android o iOS que permiten el control de forma sencilla. Por ejemplo, el Sonoff Basic tiene la app eWeLink. Además, en muchas de estas apps permiten también configurar temporizadores para que se activen a una hora determinada. Por ejemplo, eso permite que ahora en vacaciones que estarás fuera de casa puedas programar para que se encienda y apague la radio o se levanten las persianas y de apariencia de que la casa está ocupada para evitar robos…

Además, algunos Sonoffs comerciales implementan funciones para que los puedas conectar a sensores y que los aparatos se enciendan o apaguen en función de la temperatura, sonido, sensor de presencia, humedad, etc. Esto puede ser útil para un sistema de riego de un jardín, para climatizar la casa de forma adecuada, etc. Incluso algunos modelos pensados para casas domotizadas tienen compatibilidad con Amazon Alexa / Echo, Google Home, etc.

Otros complementos

Además del sonoff, existen otros aparatos que te pueden interesar como complemento, como enchufes WiFi, casquillos de bombilla WiFi, interruptores WiFi, pasarela WiFi-RF, estación SC-WiFi, etc., que son complementos perfectos para tu relé WiFi o sonoff.

Haz tu propio Sonoff con Arduino y un módulo ESP8266 (Fácil)

A pesar de ser un dispositivo muy simple y barato, puede que no siempre te interese comprar uno. Si eres un maker y te gusta crear tus propios proyectos DIY, en vez de comprar el sonoff comercial, puedes crearlo tú mismo. Eso pasaría por usar un módulo relé para Arduino y un módulo WiFi. De ese modo tendrás tu proyecto conectado y listo para operar sobre el relé que se encargará de interrumpir o conectar el aparato de alta tensión.

Otra posibilidad es hackear un Sonoff ya hecho para aportar nuevas funcionalidades. Para ello, la mejor opción que tienes es el Itead Sonoff. Por ejemplo, el No products found., un dispositivo de una empresa china orientada a makers. El dispositivo está muy bien documentado y por eso permite ser hackeado de forma sencilla para modificarlo y adaptarlo a tus proyectos. Al basarse en un ESP8266 todo será más fácil, e incluye su propia app de control para dispositivos móviles.

Crear un Sonoff simple con Arduino

Tal vez te sea más sencillo crear tu propio Sonoff con Arduino que modificar el firmware del Itead. Usar el Itead y otros dispositivos ya hechos es muy simple, pero de solo usarlos a modificar su firmware hay una gran diferencia. Así que tal vez te interese una forma sencilla de tener un Sonoff creado por ti.

¿Qué necesitas?

Todo lo que necesitas para este proyecto es:

  • Arduino UNO, o también valdría otra placa.
  • Protoboard o placa PCB si vas a soldar.
  • Módulo ESP8266
  • Modulo relé
  • Cableado para las conexiones
  • PC con Arduino IDE y cable para programacion
  • Aparato eléctrico que quieres manejar por WiFi

Construcción paso a paso

Arduino conexión con ESP8266 y Relé

Para comenzar a construir tu Sonoff casero sigue esta guía paso a paso:

  1. Una vez tengas todos los elementos, debes conectar el esquema adecuadamente como aparece en la imagen. Recuerda que donde he puesto «Aparato» es donde irá conectado lo que quieras controlar: estufa, ventilador, TV, bombilla,… y el enchufe deberá alimentar a dicho aparato. Como ves, lo que se hace es interrumpir uno de los hilos conductores que van al aparato e interponer el relé para que actúe como interruptor. Si tienes dudas de la conexión puedes consultar nuestros manuales:
    1. ¿Cómo conectar ESP8266 a Arduino?
    2. ¿Cómo usar el relé con Arduino?
  2. Ahora lo siguiente es programar en Arduino IDE para conseguir que funcione correctamente. Si eres principiante también puedes descargar el PDF de nuestro manual de programación para Arduino. Un ejemplo sencillo de código para controlar el relé y los LEDs rojo, verde y azul sería:

#include <SoftwareSerial.h>

#define DEBUG true

SoftwareSerial esp8266(2,3); 
void setup()
{
  SSSerial.begin(19200);
  esp8266.begin(19200);
  
  pinMode(10,OUTPUT);
  digitalWrite(10,LOW);
  
  pinMode(11,OUTPUT);
  digitalWrite(11,LOW);
  
  pinMode(12,OUTPUT);
  digitalWrite(12,LOW);
  
  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);
   
  sendData("AT+RSTrn",2000,DEBUG); 
  sendData("AT+CWMODE=2rn",1000,DEBUG); 
  sendData("AT+CIFSRrn",1000,DEBUG); 
  sendData("AT+CIPMUX=1rn",1000,DEBUG);
  sendData("AT+CIPSERVER=1,80rn",1000,DEBUG); 
}

void loop()
{
  if(esp8266.available())
  {

    
    if(esp8266.find("+IPD,"))
    {
     delay(1000); 
     int connectionId = esp8266.read()-48; 
          
     esp8266.find("pin="); 
     
     int pinNumber = (esp8266.read()-48)*10;
     pinNumber += (esp8266.read()-48);
     
     digitalWrite(pinNumber, !digitalRead(pinNumber));  
     
     String closeCommand = "AT+CIPCLOSE="; 
     closeCommand+=connectionId;
     closeCommand+="rn";
     
     sendData(closeCommand,1000,DEBUG); 
    }
  }
}
String sendData(String command, const int timeout, boolean debug)
{
    String response = "";
    
    esp8266.print(command); 
    
    long int time = millis();
    
    while( (time+timeout) > millis())
    {
      while(esp8266.available())
      {
        
        char c = esp8266.read(); 
        response+=c;
      }  
    }
    
    if(debug)
    {
      Serial.print(response);
    }
    
    return response;
}

Una vez introducido en Arduino IDE y programado a través del puerto serie, todo debería funcionar correctamente. Aunque puedes usar el monitor serie, lo adecuado sería que crees una interfaz web más sencilla o una pequeña app para iOS o Android. En el caso del código HTML es más fácil y sería algo así, de ese modo, desde tu navegador podrías manejar el encendido o apagado de los LEDs y del aparato conectado al relé:


<html>
<head>
<title>Control con Sonoff</title>
</head>
<body>
<button id="10" class="led">A</button>
<button id="11" class="led">LED AZUL</button>
<button id="12" class="led">LED VERDE</button>
<button id="13" class="led">LED ROJO</button>
<script src="jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){
$(".led").click(function(){ var p =
$(this).attr('id');
$.get("http://XXX.XXX.X.X:80/", {pin:p});
});
});
</script>
</body>
</html>

Puedes escribirlo en cualquier editor de texto, y guardalo con el nombre control.html. Recuerda que para que funcione bien, debes sustituir http://XXX.XXX.X.X:80 por la IP adecuada en tu caso, es decir, la que se le haya asignado al ESP8266 dentro de tu red WiFi… Por otro lado, si quieres sustituir la etiqueta A de aparato por el nombre del aparato que estás usando y que así sea más intuitivo, siéntete libre de hacerlo…

Control interfaz Web

Ahora, si abres este control.html con cualquier navegador web podrás manejar tu Sonoff. Pulsando sobre los botones verás cómo actúa tu circuito.

Modificar el firmware del Sonoff (Avanzado)

Otra operación que puedes hacer, aunque no es recomendable para la mayoría de usuarios por su complejidad, es modificar el firmware del sonoff de Itead. Es posible, pero implica muchos pasos y es complicado si no sabes realmente lo que haces. Para que te hagas una idea te dejo lo que necesitarías y los pasos esenciales, así como enlaces para el firmware y guías completas por si te animas después de leer los pasos esenciales…

Usando ESPurna

¿Qué necesitas?

Para usar el Itead Sonoff y programarlo, necesitarás los siguientes elementos:

  • Itead Sonoff WiFi Basic
  • Adaptador y cable FTDI o TTL (USB/Pines serie)
  • Destornillador
  • Otros elementos necesarios para tu proyecto
  • Un ordenador para la programación

Modificar el firmware Itead Sonoff WiFi Basic (Pasos básicos)

Itead sonoff circuito

Para modificar el Sonoff de Itead debes adquirir uno y seguir los siguientes pasos:

Antes de manipular el dispositivo, asegurate que está desconectado. No es recomendable manipular el relé o circuito cuando está conectado a la red, ya que estarás trabajando con AC a 220v y no se trata de un inofensivo circuito de CC que trabaja a voltajes bajos…

  1. Retirar la tapa de plástico del Sonoff para poder acceder al circuito interno. Puedes usar un destornillador para retirar las tapas laterales primero y luego hacer palanca en la junta que une las dos partes de la carcasa principal hasta que puedas extraerla.
  2. Si te fijas en el circuito que tienes delante se pueden diferenciar muy bien las partes del módulo ESP8266:
    1. Las elementos eléctricos que hay alrededor del relé son del conversor de AC/DC.
    2. El componente negro cuadrado es el relé que trabaja a 5v (parte de control) y 220v (salida).
    3. En el centro tienes unos pines de conexión serie. Puedes usarlos para programar el microcontrolador o para conectar más elementos. En el GPIO14 puedes conectar actuadores o sensores.
    4. También verás un pulsador junto a los pines. Puedes pulsarlo para cambiar los modos que puedes configurar.
    5. El LED que indica el funcionamiento y el modo o estado en el que se encuentra.
    6. Y dos conectores verdes en cada extremo del PBC. Una de ellas es una entrada y otra una salida. La más cercana al relé es la entrada AC, es decir, donde se conecta el dispositivo a la red eléctrica. El otro es la salida donde puedes conectar el aparato que quieres apagar o encender. Recuerda que admite hasta 10A, es decir, un consumo de 2,2kW para 220v.
  3. Ahora trabajarás con los pines de conexión para cargar tu programa. Para ella necesitarás el FTDI o TTL, permitiendo conectar estos pines a un USB de tu ordenador. Pero más allá de conectarlo, debes recordar que el microcontrolador integrado tiene dos modos de funcionamiento, un modo UART y otro FLASH. El modo UART te permite cargar el programa y el FLASH ejecutarlo. Para pasar al modo UART para poder escribir el programa necesitas poner los pines GPIO0 (LOW) y GPIO2 (HIGH) en unos estados determinados. La carga del programa se hará por los pines marcados como RX y TX. Por supuesto tendrás que usar también los pines de alimetnación 3v3 y GND, así como el del pulsador GPIO0, el LED o GPIO13 y el relé en el GPIO12.
  4. Una vez has realizado la conexión de forma adecuada y tienes tu cable USB para conectarlo al PC, podrás comenzar con la programación en sí. Recuerda que al FTDI debes cruzar las conexiones RX y TX, es decir, el RX del Itead al TX del FTDI y viceversa.
  5. Después, sería cuestión de usar Arduino IDE para crear el código necesario para el control que quieras hacer (debes seleccionar la placa ESP8266 como dispositivo microcontrolador a grabar). Te puede ayudar también el firmware desarrollado por Xose Pérez. Se llama ESPurna y es específico para Sonoff WiFi. Con su panel de control podrás controlar parámetros de red y seguridad.
  6. Al final, cuando ya lo tengas, puedes devolver los pines GPIO0 y GPIO2 a estados High High respectivamente para que vuelva a modo FLASH y ejecute tu programa.
  7. Una vez finalizado, ya puedes realizar las conexiones adecuadas en tu Sonoff para conectar los aparatos que quieras y darles alimentación. Desde la app podrás controlarlo todo…

Más información – Programación fácil

Usando Tasmota

Para hacerlo con Tasmota en vez de ESPurna, los pasos genéricos para hacerlo serían:

  1. Primero debes abrir la carcasa del Itead Sonoff como en el caso anterior.
  2. Luego deberías soldar el cableado o los pines para poder realizar las conexiones de alimentación y el adaptador USB a UART TTL.
  3. Ve a Arduino IDE y en Tools debes seleccionar la placa ESP8266 en vez de Arduino UNO o la que tengas por defecto. Instalas la nueva placa.
  4. Ahora descarga Tasmota e instalala de forma adecuada para integrarla con Arduino IDE.
  5. Ahora es el momento de programar y configurar tu proyecto como quieras y grabarlo en la placa…Una vez finalices ya puedes conectar los componentes al sonoff como en el caso del ESPurna.

Más información – Domotica en casa


7 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Juan M dijo

    No funciona el servidor web, no carga en el navegador.

    1.    Isaac dijo

      Hola Juan,
      Te refieres a cuando pones la IP en tu navegador web? Te has asegurado de haber puesto la IP correcta dentro de la red local? No vale la IP pública. Tiene que ser la asignada al sonoff. Además, en el código html también debes sustituir las X por la IP adecuada.
      Un saludo!

      1.    Juan dijo

        Efectivamente realice las dos cosas pero en el momento que cargo la IP en el navegador, me da conexión fallida. Además cuando ejecuto el web server, no se carga en forma de botones, sino en texto.

        1.    Isaac dijo

          Hola Juan,
          A mi me funciona correctamente, no entiendo porque te ocurre eso…
          Investigaré y si doy con el problema te informo.
          Un saludo y gracias por leernos

  2.   Joan dijo

    Hola,
    No entiendo que con las librerias que tenemos uses coódigos AT….

    Tampoco veo que uses el modo WIFI del ESP8266 que es el centro de atención de este artículo.

    Pon un ejemplo más limpio y claro y verás que el proyecto lo entenderán.

    Un saludo.

    1.    Joan dijo

      Se me olvidó,
      Si lo que quieres es un relé, el ESP8266 lo controla el solito, usa el Arduino si quieres para cargar el firmware.

      Otro Saludo.

  3.   ANDRES REMBERTO GUZMAN GALVAN dijo

    e seguido todos tus pasos y no me funciona, como saber cual es la IP que se le fue otorgada a mi ESP8266