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.

30 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
  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
  16. Hola. Sabes si puedo programarlo con la corriente alterna conectada al sonoff.
    Muchas gracias

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

    ResponderEliminar