martes, 1 de marzo de 2016

Hackeando el Itead Sonoff, un interruptor WiFi de bajo coste basado en ESP8266 con muchas posibilidades

Esta entrada es un resumen de información para sacarle el máximo partido al dispositivo Sonoff de ITead. Se trata de un ESP8266 con un relé, alimentado con corriente alterna y dentro de una caja. Todo por muy poco dinero.

En el momento de escribir esto hay dos variantes de Sonoff, Sonoff, a secas, y Sonoff RF. Sonoff RF se diferencia, principalmente, por tener añadido un módulo RF 433Mhz que da la posibilidad de manejar el relé desde un mando a distancia. Parece que la versión RF tiene alguna particularidad, que la hace diferente. Por lo que lo dicho aquí no es valido para la versión RF. Cuando disponga de un Sonoff RF (está en camino) publicaré al respecto.

De fabrica viene con un software, que mediante una app, que se puede instalar en nuestro móvil (Android o iOS), permite controlar el relé.

La gracia esta en poder poner nuestro propio software y tener total libertad.

¡Advertencia!

No conectar a corriente alterna el Sonoff hasta que se haya cerrado la caja. La corriente alterna es peligrosa, además hay riesgo de destruir el dispositivo.

Soldar hilera de pines

En primer lugar habrá que soldar una hilera de pines para poder acceder mediante serial-ttl al ESP8266. Hay un espacio previsto para soldar los pines, se trata de cuatro agujeros que están junto al pulsador. Como se puede ver en las fotos, es fácil identificarlos.

Antes de soldar la hilera de pines

Con la hilera de pines ya soldada

Conectar el adaptador USB a serial-TTL

Vuelvo a repetirlo: no conectar a corriente alterna Sonoff hasta haber cerrado la caja, y mucho menos con el adaptador conectado. Conectar el adaptador USB a serial-TTL, mientras hay corriente alterna en el circuito, puede freír los componentes.

En ebay o en Aliexpress se pueden encontrar adaptadores por menos de 2€. Hay que tener en cuenta que la mayoria necesitan un cable con conector mini-USB, no nos valdrá el cable del móvil que suele ser micro-USB.

El adaptador debe trabajar a 3,3v, esto es imprescindible, ya que ESP8266 funciona a 3,3v.

La conexión se debe hacer de acuerdo a las siguientes indicaciones:

Pines de la Sonoff

Sonoff  Adaptador
3.3V  3.3V
RX TX
TX RX
GND GND

Sonoff conectado con el adaptador USB a serial-TTL


Borrar la memoria

Si no se borra la memoria el dispositivo puede tener un comportamiento extraño. Para hacerlo se puede usar esptool, arrancando en modo programación. Para arrancar el modo programación hay que mantener pulsado el pulsador antes de alimentar el Sonoff, en este caso, que usamos un conversor USB a serial-TTL, será antes de conectar el USB. En mi instalación de Linux Ubuntu lo he hecho así:

./esptool.py -p /dev/ttyUSB0 erase_flash

Lógicamente, el puerto puedo variar en cada caso.

Si tienes problemas para hacer esto desde un Linux puede ser porque el usuario no tiene permiso para acceder a los puertos USB. Para solucionarlo lee mi articulo al respecto.

Programarlo

Hay varias opciones para programar un ESP8266. Yo he optado por hacerlo con Arduino IDE.

La configuración de Arduino IDE es la siguiente:


Lo típico para probar es hacer parpadear el LED. Lo haremos con el siguiente sketch de Arduino IDE:


void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);
  delay(1000); 
  digitalWrite(13, LOW);
  delay(1000);  
}

Para ponerlo en modo programación habrá que repetir el mismo procedimiento que hicimos para borrar la memoria. Es decir, mantener pulsado el pulsador antes de alimentar el Sonoff.

Si se opta por Arduino IDE solo sería necesario usar el adaptador USB a serial-TTL la primera vez, luego se podría programar a través de actualizaciones OTA (Over The Air).

Puertos disponibles

Los puertos que tenemos disponibles son los siguientes:

Función Puerto
Pulsador  GPIO0
Relé GPIO12
LED GPIO13
RX GPIO3
TX GPIO1


Conectar a corriente alterna

Como se indica en la caja, 1 y 2 es la entrada, mientras que 3 y 4 la salida. Puede ser interesante saber que 1 y 3 siempre están conectados, el relé actúa entre 2 y 4. De esta manera, en caso de poder identificar el cable de fase y de neutro, el de neutro debería conectarse en 1 y el de fase en 2.

Conexión a corriente alterna


Enlaces de interes

Página de producto de Sonoff: https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch.html

Esquema: http://wiki.iteadstudio.com/images/6/6b/Sonoff_schmatic.pdf

Articulo de Peter Scargill (comentarios muy interesantes): http://tech.scargill.net/itead-slampher-and-sonoff/


Para cualquier cuestión no dudéis en preguntar.

Actualización 25/4/2016: ya he publicado como hackear el Sonoff RF.

54 comentarios:

  1. Hola:

    Muy bueno.

    Puedes ampliar el tutorial con más ejemplos funcionales como complemento si lo deseas para sacar el máximo partido.

    Saludos.

    ResponderEliminar
    Respuestas
    1. Si, en el futuro publicaré algún proyecto hecho a partir de Sonoff. De momento quería tener un resumen, para mi, y para quien le interese, que sirviera de punto de partida.

      Eliminar
  2. Hola Javier:

    Haz hecho un buen resumen. Como segunda entrada, en el futuro y cuando tengas más conocimiento sobre este hackeo, puedes detallar en forma de tutorial paso a paso como hace para hacjearlo realmente, sobre todo lo que explicastes arriba en resumen, pero no muestras alguna imagen.

    Por ahora está todo perfect lo que has hecho.

    Buen trabajo.

    ResponderEliminar
  3. Hola Javier, muy interesante el artículo, gracias por el aporte. Me interesaría saber si has experimentado acceder a otros puertos, como el GPIO4 o GPIO5, que según el esquemático de itead están libres. Por ejemplo, para poner una sonda de temperatura.

    Saludos,
    Atokita

    ResponderEliminar
    Respuestas
    1. Hola Atokita,

      GPIO4 y GPIO5 están tan libres que no están conectados. Para tener puerto extras se puede recurrir a RX y TX que se corresponden con GPIO3 y GPIO1.

      Parece que la última versión tiene 5 pines, en vez de 4. Con lo cual habría un puerto más, supongo.

      Para temas concretos de temperatura es interesante el próximo lanzamiento de Itead, el Sonoff TH: http://wiki.iteadstudio.com/Sonoff_TH que incorpora un DHT11 como sensor de humedad y temperatura.

      Eliminar
  4. Hola Javier,

    Gracias por la respuesta. He visto el enlace que pusiste y también el del Sonoff SV: http://wiki.iteadstudio.com/Sonoff_SV donde están accesibles los puertos 4,5, y 14. Es justo lo que necesito, pero me acaban de llegar 3 sonoff de los normalitos y me gustaría ampliar su posibilidad de conexión. Pero identificar y soldar en la placa no lo veo tan fácil.

    Saludos,
    Atokita

    ResponderEliminar
  5. Gracias por tu artículo, yo estoy interesado en su conectividad wifi, ¿seria posible encender y apagar sin la aplicacion movil, desde un ordenador o interfaz? También sería interesante la versión con temperatura, recibir esos datos en un navegador.

    ResponderEliminar
    Respuestas
    1. Hola,

      Claro, una vez abierta la posibilidad de programarlo, puedes hacer lo que quieras, todo es cuestión de ponerse.

      Eliminar
  6. Buenas:

    ¿Harán algún experimento funcional como ejemplo?
    Aunque sea muy básico.

    Saludos.

    ResponderEliminar
    Respuestas
    1. Ya tengo cosas funcionando. Ahora es cuestión de encontrar tiempo para documentarlo.

      Eliminar
  7. Por algo se empieza y tienes hecho. Cuando puedas, ánimos y adelante. ;)

    ResponderEliminar
  8. hola
    tengo un sonoff y quiero instalarlo en una llave de luz. por lo tanto no lo puedo conectar a la salida de 220, sino que quiero conectar el retorno al relay. se podria hacer eso?

    ResponderEliminar
    Respuestas
    1. La función del Sonoff es actuar como interruptor, que es lo que pretendes, por lo que no habría ningún problema.

      Lo de conectar el retorno al relay no acabo de entenderlo.

      Eliminar
  9. Tengo una broadlink rm2 pro y no me reconoce el sonoff. con este cambio lo reconoceria?

    ResponderEliminar
    Respuestas
    1. No conozco el broadlink rm2 pro, pero parece que sirve para controlar dispositivos por IR y RF. Si estamos hablando de un Sonoff RF pienso que debería funcionar tal y como viene.

      Eliminar
    2. Si, es cierto. La mia es wireless no rf.
      UPSS

      Eliminar
  10. Hola. Podrias explicar que más se consigue. Que no haga la aplicación existente??. Yo de momento con un rele temporizado y un contactor manejo las luces exteriores y la puerta automática de mi casa de campo!!!

    ResponderEliminar
    Respuestas
    1. Hola Carlos, pues eso ya depende de cada uno. En mi caso, la motivación principal es utilizar Blynk, para otros será el soporte para MQTT. La gracia es convertir un dispositivo cerrado en uno abierto.

      Eliminar
    2. Hola Carlos Alemany, tengo intención de abrir y cerrar una puerta de corredera de mi casa haciendo uso del sonoff, veo que tu ya lo has hecho, podrías indicarme como, actualmente lo hago con el mando de la puerta, pero me gustaría hacerlo con el movil exitando el SONOFF como si fuese un simple pulsador ya que el mecanismo de la puerta admite usar un pulsador para abrir y cerrar.

      Muchas gracias de antemano.

      Eliminar
  11. Hola soy usuario de varios dispositivos sonoff y estoy muy contento con ellos pero me falta saber porque no funcionan con wifi pero sin conexion a internet, me puden ayudar?

    ResponderEliminar
    Respuestas
    1. Hola. Imagino que los usas con el firmware original. La conexión no es directa app-SonOff, pasa por un servidor app-servidor-SonOff, por lo que necesitas Internet para acceder al servidor.

      Eliminar
    2. con la ultima actualización se puede controlar por LAN (app-sonoff) directamente cundo no haya conexión a Internet!

      Eliminar
  12. Hola! una consulta, al reemplazar el firmware original del sonoff se pierde la vinculación con el servidor y la posibilidad de controlarlo con EWELINK?
    muchas gracias!

    ResponderEliminar
  13. Sería posible alimentar el sonoff con una fuente externa (5v o 12V) para usarlo como relé de control. Seguro que hay otras opciones pero ya tengo los sonoff, y pretendo usarlo con la APP.

    ResponderEliminar
  14. Buenas,
    Se puede conmutar con un conmutador físico normal? De esta forma se podria (encender/apagar una luz) tanto des del móbil como físicamente.

    Gracias

    ResponderEliminar
    Respuestas
    1. Para poder encender o apagar manualmente el dispositivo que conectamos al Sonoff este dispone de un pulsador

      Eliminar
  15. Hola como podria contactarte para que nos apoyes en un proyecto de la empresa? Saber cuantos nos cobras por asesorarnos y desarrollarlo. Saludos

    ResponderEliminar
    Respuestas
    1. Decime que es lo que queres hacer, capaz yo puedo ayudarte.

      Eliminar
  16. Hola. Sabes si puedo programarlo con la corriente alterna conectada al sonoff.
    Muchas gracias

    ResponderEliminar
    Respuestas
    1. No! nunca se debe programar conectado a la corriente.

      Eliminar
  17. Buenos dias, Se puede conectar un apagador manual al sonoff para tener una alternativa en caso de no haber internet, saludos.

    ResponderEliminar
  18. Buenos dias Javier,
    el pulsador que lleva el sonoff, permite para encender/apagar manualmente? De ser así, se podria soldar otro pulsador (mas agradable) en paralelo y scarlo de la caja, no?

    La idea principal es poder encender/apagar tanto a través de wifi como a través de un conmutador físico.

    Gracias,

    ResponderEliminar
    Respuestas
    1. Si se puede, pero porque no usas este?
      https://www.itead.cc/sonoff-touch.html

      Eliminar
  19. Hola amigo espero puedas responder mi pregunta , cuando hago el procedimiento de emparejamiento me aparece
    EL DISPOSITIVO PERTENECE A OTRO USUARIO y de hecho son casi nuevos una vez los probaron pero no pudieron emparejarlos , pero hay alguna forma de restaurar para que no aparezca esto amigo ?

    ResponderEliminar
  20. hola estimados tengo una consulta puedo usar mi esp-01 con la aplicación ewelink, me refiero a comprarme mi esp y programarlo para poder acceder a la plataforma de ewelink y usar mi esp -01 con la plataforma ewelink

    ResponderEliminar
    Respuestas
    1. Las comunicaciones con el servidor de Ewelink van encriptadas por lo que creo que no vas a poder.

      Eliminar
  21. hola, los sonoff puedo controlarlos desde otras APP, también en español?

    ResponderEliminar
    Respuestas
    1. Estoy intentádolo, usando domoticz o home assistant. Por ahora no pude, tampoco le pude dedicar mucho tiempo porque estoy con mucho trabajo. Si llego a poder te aviso.

      Eliminar
    2. Hola. Yo si eh utilizo el asistente de Google para controlar los sonoff que tengo, pero deben tener instalada ewlink y desde el home asistent se logra controlar

      Eliminar
  22. Hola, me podríais decir si se puede conseguir el Sketch original del sonoff? Es que me gustaría implementarlo en otro tipo de módulos basados en el ESP8266 cambiándole algunos parámetros y poder usarlo con EWeLink gracias y saludos

    ResponderEliminar
  23. Hola quisiera averiguar como conecto el usb-ttl al ordenador o al usb de arduino, he probado a los dos sitios y no me carga el program, gracias

    ResponderEliminar
  24. Hola, parece que aqui no contesta nadie. El problema que tenia esta solucionado, el usb-ttl hay que conectarlo al ordenadoe y el arduino tambien a otro usb.
    El probma que tengo ahora es que cuando conecto el usb-ttl con el sonoff si utilizo la placa ESP8266 dice none en com1 por ej. si selecciono ESP8285 si dice que esta en com1. En cualquiera de los dos casos conecto el sonoff con usb-ttl sin alimentacion pulso el pulsador, doy alimentacion y se queda apagado y no parpadea el led Si intento subir el programa da error

    ResponderEliminar
  25. Como puedo programar eventos que tengan retardos en segundos y no solamente en minutos? me interesa tambien poder crear mas de 8 eventos por dia

    ResponderEliminar
  26. Siento no poder ayudarte. Nunca he tenido un Sonoff G1.

    ResponderEliminar
  27. Hola, una consulta.
    Alguien pudo hacerlo funcionar con solo wifi...sin la nube ??
    Agradezco la informacion.
    Muchas gracias

    ResponderEliminar
    Respuestas
    1. Por ahí alguien comentó que se debe actualizar

      Eliminar
  28. Tengo un interruptor wifi Teckin SP22 y no hay forma de conectarlo
    con dos programas diferentes,eWelink y Smart Life,a ver si alguien me da una idea de como hacerlo funcionar.Gracias y un saldo.

    ResponderEliminar
    Respuestas
    1. Hola:

      ¿Haz probado con su programa?
      No el de terceros.

      Al menos averigua desde el fabricante que te den los códigos AT. Con ello puedes crear tu propio programa.

      Saludos.

      Eliminar
    2. Hola

      Gracias por la info, ¿qué son los códigos AT? Quiero controlar un smart plug desde distintas aplicaciones, desde por ejemplo una CGI y no manualmente desde la APP

      Gracias de nuevo

      Eliminar
  29. Buenas tardes. A mi me gustaría saber cómo puedo actuar sobre el relé de manera física. Con el fin de actuar sobre el sonoff desde app y desde el interruptor de pared. Así podré apagar y encender las luces con instrucciones vía Alexa y/o de manera convencional.

    Gracias.

    ResponderEliminar
  30. Hola, enhorabuena por el trabajo tan bien elaborado y explicado, yo quería hacerte una pregunta, ya que no dispongo de Linux : ¿ se podría borrar la memoria del sonoff desde el IDE de Arduino con la pestaña > Herramientas> Erase Flash> All Flash contents. ? Gracias de antemano.

    ResponderEliminar
  31. Sonoff no es compatible con 5G, alguna app que reemplace a eWeLink ?

    ResponderEliminar