Todos hemos pensado alguna vez en utilizar la domótica en nuestras casas. El mayor inconveniente es el precio y la complejidad. Sin embargo, hoy te voy a hablar del relé Sonoff WiFi, un dispositivo de la empresa Itead muy económico y sencillo de usar.
No lo vamos a hacer por el método tradicional, donde configuramos la aplicación, dispositivo y a trabajar. Este tutorial te enseñará a destripar un relé Sonoff WiFi para hackearlo y luego cargar el firmware de código abierto de Xose Pérez, ESPurna.
Va a ser un camino largo, con muchos conceptos y cosas nuevas pero el resultado merece la pena. Al finalizar el tutorial podrás tener un dispositivo totalmente configurable para que se adapte a tus necesidades y no alrevés.
No tendrás límite a la hora de crear tu sistema basado en la domótica a un precio muy reducido.
Ponte cómodo, prepara una buena taza de café y adelante con el tutorial del relé Sonoff Wifi, ESPurna y domótica.
Indice de contenidos
- 1 Itead la empresa de domótica Maker
- 2 Relé Sonoff WiFi Basic para la domótica
- 3 ESPurna el firmware para Sonoff WiFi
- 4 Configuración del sistema para ESPurna
- 5 Instalar ESPurna en un relé Sonoff WiFi Basic
- 6 Configurar proyecto de domótica con ESPurna
- 7 Panel de control ESPurna
- 8 Conclusiones relé Sonoff WiFi para domótica
Itead la empresa de domótica Maker
Itead es una empresa ubicada en China, en la ciudad de Shenzhen, de donde salen muchos de los productos tecnológicos que se venden en todo el mundo. La característica principal de sus productos y dispositivos es que están enfocados a los hogares inteligentes, la domótica y la automatización del hogar.
Estamos acostumbrados a trabajar con cajas negras por ejemplo, cuando compras un móvil no es sencillo modificarlo. Básicamente porque no tenemos acceso a la documentación técnica como esquemas eléctricos o el código.
Así es imposible su modificación o hackeo. Sin embargo, hemos visto cómo las tecnologías libres nos ayudan en este sentido, compartiendo el conocimiento con la comunidad. Esto nos brinda muchas posibilidades ya que podemos adaptar los dispositivos a nuestros requerimientos y no al contrario.
Itead a puesto el foco en esto. Por un lado nos ofrece productos finales que incluyen el dispositivo y una plataforma en la nube para que fácilmente podamos utilizarlos en nuestros sistemas para domótica o automatización del hogar.
Pero por otro lado, nos ofrece la posibilidad de hackear y modificar sus dispositivos para utilizar nuestra propia plataforma o sistema. Esta dualidad ha hecho que sus productos se hayan extendido rápidamente entre la comunidad Maker.
Todo esto es gracias al microcontrolador o SoC que viene integrado en todos sus productos: el ESP8266.
En este tutorial voy a enseñarte a hackear uno de sus productos más famosos, el relé Sonoff WiFi. Se trata de una placa electrónica que nos permite controlar corrientes alternas a través de la WiFi y gracias al ESP8266.
Verás cómo modificar el hardware para que puedas cargar tus propios programas desde el IDE de Arduino para la domótica o automatización del hogar. Pero esto no sólo sirve para este dispositivo, también lo podrás utilizar para hackear la amplia gama de productos que nos ofrece Itead.
Productos de Itead para la domótica
Sólo tienes que entrar a la página web de Itead y comprobar la amplia gama de productos que nos ofrecen. Voy a centrarme sólo en la parte de Smart Home o casa inteligente. Ideales para la domótica y la automatización del hogar.
Relés Sonoff WiFi y RF
Los relés que nos ofrece Itead son los productos más básicos. Sirven para controlar la alimentación de aparatos eléctricos que funcionan con corriente alterna. Hay varios modelos y elegir uno u otro dependerá de cada proyecto.
El relé Sonoff WiFi TH10/TH16 es una versión mejorada del relé Sonoff WiFi Basic. Nos permite controlar corrientes de entre 10A y 16A e incluso nos da la posibilidad de incorporar un sensor de temperatura y humedad sin tener que modificar el hardware.
El Sonoff WiFi Dual es un relé cuya máxima corriente es de 16A y puede controlar hasta dos dispositivos.
El Sonoff WiFi Basic es un clásico de Itead y es con el que vamos a trabajar en este tutorial. La corriente máxima que permite es de 10A y sólo permite controlar un aparato eléctrico.
También hay una versión del Sonoff WiFi Basic que puede ser controlado por radiofrecuencia, el Sonoff RF.
Si además queremos medir el consumo eléctrico, podemos hacerlo utilizando el Sonoff Pow. Ya hablé en un artículo de lo útil que podría resultar este aparato para saber si están llamando al timbre de casa.
Pero si queremos controlar un aparato eléctrico donde no tenemos Internet, tenemos la posibilidad de controlarlo a través de GSM gracias al Sonoff G1. Incorpora un módulo relé GSM/GPRS con una única salida.
Por último, para controlar hasta cuatro salidas del relé WiFi, podemos optar por el Sonoff 4CH o el Sonoff 4CH Pro. El primero sólo incorpora el módulo WiFi y el segundo también incorpora un módulo de RF a 433 MHz.
Como ves, la gama de relés Sonoff WiFi y RF es bastante amplia. Lo bueno es que todos se pueden hackear de una forma muy sencilla debido a que llevan incorporado un microcontrolador ESP8266.
Esto nos permitirá adaptar estos dispositivos a nuestro proyecto para la domótica.
Otros productos de Itead
Además, tenemos a nuestra disposición interruptores de pared como el Sonoff Touch, un casquillo de bombilla Sonoff Slampher, S20 Smart Plug que son enchufes controlados por WiFi o la bombilla LED de colores Sonoff B1.
Si lo que quieres es mostrar información en una pantalla, puedes utilizar las pantallas LCD TFT HMI Nextion. Incluye un software para la edición de las pantallas y poder crear nuestras propias interfaces de una forma muy simple.
Como ves, podemos crear nuestros propio sistema de automatización del hogar o para la domótica de una forma muy económica. Pero lo más importante es que lo podemos adaptar a nuestras necesidades ya que, fácilmente, podemos modificar cualquier producto y cargar nuestro propio programa al ESP8266 que tienen integrado.
Ahora vamos a centrarnos en el relé Sonoff Wifi Basic para ver paso a paso cómo hackear este dispositivo desde el IDE de Arduino.
Relé Sonoff WiFi Basic para la domótica
Ya hemos visto los diferentes productos Sonoff WiFi. Podemos elegir cualquiera de ellos para integrarlos dentro de nuestro sistema de automatización del hogar o domótica. Yo me voy a centrar en el relé Sonoff WiFi Basic.
Antes de empezar quiero que sepas que muchos de los productos de Itead pueden ser hackeados o modificados siguiendo el proceso que te voy a detallar en este tutorial. Esto quiere decir que no sólo podrás integrar el relé Sonoff WiFi en tu proyecto de domótica, podrás hacerlo con cualquiera de ellos.
Este tutorial se basa en la modificación tanto a nivel de software como de hardware del relé Sonoff WiFi. Esto puede conllevar riesgos. La última responsabilidad es tuya. Si no te ves capaz de mantener unos niveles mínimos de seguridad no lo hagas. Recuerda que vamos a trabajar con la red eléctrica de tu casa, extrema las precauciones.
Circuito eléctrico del Sonoff WiFi
Cuando recibes el relé Sonoff WiFi en tu casa, todo viene dentro de una caja. Lo normal es que venga el relé Sonoff WiFi con unas tapas, una bolsa con tornillos y unas instrucciones para configurar el dispositivo con la plataforma Itead Cloud.
De momento no tienes que conectar el relé Sonoff WiFi a la red eléctrica. Cuando tengas que hacerlo te avisaré. Para acceder a la placa electrónica lo primero que tienes que hacer es quitar las tapas de los conectores de la red eléctrica.
Luego quita la carcasa que protege el circuito eléctrico. En uno de los laterales hay una pegatina o precinto. Al abrir el relé Sonoff WiFi estarás perdiendo la garantía del producto. Es lo mismo que ocurre con cualquier otro aparato eléctrico.
Con un destornillador podrás quitar la carcasa y ver el circuito eléctrico.
Esto deja al descubierto el circuito eléctrico. De momento no tenemos conectado el relé Sonoff WiFi a la red eléctrica de nuestra casa y no hay peligro.
Nunca quites la carcasa del relé Sonoff WiFi si está conectado a la red eléctrica, puede ser muy peligroso.
Ahora saca la placa electrónica. Vamos a ir viendo los diferentes componentes que hay en cada lado de del circuito impreso.
- Entrada AC: por donde conectamos el dispositivo a la red eléctrica.
- Salida AC Max 10A: por donde conectamos el aparato eléctrico que queremos controlar. Admite un máximo de 10A de consumo que equivalen a 2,2 kW si la red eléctrica es de 220V.
- Pulsador: lo podemos utilizar para cambiar de modos o para configurar el dispositivo.
- LED: útil para saber qué está haciendo y en qué modo o estado se encuentra.
- Pines y comunicación serie: esta parte nos permite cargar el programa al microcontrolador e incluso conectar más componentes a la placa.
- Relé 5V: es el propio relé que trabaja con 5V.
- Conversor AC-DC: este componente convierte la corriente alterna (AC) en corriente continua (DC). Nos permite alimentar los componentes como el ESP8266 o el relé.
Si le das la vuelta verás el famoso ESP8266 y la antena WiFi.
De todo este circuito las partes más importantes son la entrada y salida de AC, el pulsador, el LED, los pines y la comunicación serie. A continuación veremos cómo podemos cargar un programa gracias a estos componentes.
Vuelvo a repetir que es importante que extremes la seguridad en cualquier proyecto de domótica. Estamos trabajando con una corriente que puede ser muy peligrosa.
Accediendo a los pines del relé WiFi Sonoff
Para que te hagas una idea, vamos a trabajar con el relé Sonoff WiFi como si fuera un módulo ESP-01. Las ideas principales con las que te tienes que quedar son las siguientes:
- Para cargar un programa necesitamos un adaptador USB a serie también llamado FTDI o TTL.
- Un microcontrolador tiene dos modos de funcionamiento: modo UART o modo FLASH. El modo UART nos permite cargar un programa y el modo FLASH nos permite ejecutar un programa.
- Para entrar en un modo u otro necesitamos poner dos de los pines del ESP8266 (GPIO0 y GPIO2) en estados específicos que veremos luego.
Dicho esto vamos a empezar a modificar el hardware. Para cargar el programa tendrás que hacerlo por los pines RX y TX del ESP8266. Esto quiere decir que necesitarás acceder a esos pines.
También tendrás que acceder a los pines de alimentación 3V3 y GND, al pulsador que está conectado al pin GPIO0, al LED conectado al pin GPIO13 y al relé que está conectado al pin GPIO12.
Además, tendrás acceso a un pin extra, el GPIO14, donde puedes conectar cualquier componente ya sea un sensor o un actuador. En este tutorial no voy a conectar nada pero lo dejaré preparado para un uso futuro.
Por lo tanto, tienes que ser capaz de conectar unos cables a los pines 3V3, RX, TX, GND y GPIO14. La forma más segura y sencilla es soldando unos pines hembra en los huecos de los pines. En total necesitarás un slot de 5 pines hembra. Si tienes dificultades para soldar te recomiendo este tutorial de Adafruit.
También te recomiendo que te hagas con un soporte para soldaduras que no cuesta mucho y es muy útil para estos casos.
Al final, el resultado tiene que ser algo parecido a lo que te muestro en la siguiente imagen.
Con esto ya estamos seguros de poder conectar el relé Sonoff WiFi a un adaptador USB a serie y programar de forma sencilla el ESP8266. Este debe ser el primer paso que tienes que dar con cualquier dispositivo de Itead para la domótica.
Programar relé Sonoff WiFi con un adaptador USB a serie
El siguiente paso es conectar el adaptador USB a serie, FTDI o TTL al relé Sonoff WiFi. Estamos acostumbrados a conectar nuestras placas, ya sea un Arduino MKR1000 o un NodeMCU, al ordenador y empezar a programar. Sin preocuparnos de nada más.
Esto es debido a que este tipo de placas ya tienen integrado dentro del circuito eléctrico un adaptador USB a serie facilitando así la tarea de programar el microcontrolador. Pero hay otro tipo de placas como el módulo ESP-01 o Lilypad que no traen este adaptador.
La solución, comprar un adaptador en cualquier tienda de electrónica. Para cargar un programa en el relé Sonoff WiFi este adaptador tiene que ser compatible con 3,3 V. Asegúrate de esto antes de comprar un adaptador USB a srie.
Puedes comprarlo en Amazon por 8€. El que utilizo yo es compatible con 3,3 V y con 5 V.
Todos funcionan de la misma forma. Vamos a tener 4 pines: la toma de tierra (GND), alimentación (3V3), transmisión de datos (TXD) y recepción de datos (RXD).
Como hemos visto en el circuito del relé Sonoff Wifi, tenemos estos cuatro pines. Así que todo empieza a encajar pero ojo, hay que hacer un cambio en la conexión. Para que un transmisor pueda enviar un mensaje, en el otro lado tiene que haber un receptor y para recibir tiene que haber un emisor.
¿Pillas por donde voy? No te preocupes, ahora te lo explico.
El esquema de la conexión sería como te indico en la siguiente imagen.
Como ves, se cruzan los cables de RXD y TXD. Es muy sencilla la conexión gracias a que hemos soldado los pines hembra en el relé Sonoff WiFi. Ahora sólo queda conectar los cables.
Con esto ya terminamos la parte del hacking del hardware, ahora sólo nos queda el software. Toda esta parte la veremos a continuación.
Cómo cargar un programa al relé Sonoff WiFi
Ya he hablado de los dos modos en los que puede trabajar un microcontrolador como el ESP8266: UART y FLASH. El que nos interesa ahora mismo es el modo UART que nos permite cargar un programa al ESP8266.
Para entrar en uno de estos dos modos hay que poner los pines GPIO0 y GPIO2 en un estado concreto. En la siguiente tabla tienes un resumen de esos estados.
Modo | GPIO0 | GPIO2 |
---|---|---|
UART | LOW | HIGH |
FLASH | HIGH | HIGH |
El modo por defecto siempre es el modo FLASH. Esto quiere decir que si conectamos el adaptador USB a serie al ordenador, comenzará a ejecutarse el programa que hay cargado en el ESP8266. Nuestro objetivo es conseguir entrar en el modo UART para cargar un programa.
Antes de continuar debes saber que los pines GPIO0 y GPIO2 tienen conectada una resistencia en configuración pull-up. Por este motivo el modo por defecto es el modo FLASH. Cuando el pin está al aire a la entrada tenemos un estado HIGH.
A efectos prácticos para nosotros tenemos que asociar que si no tocamos nada y conectamos el adaptador USB a serie a un puerto de nuestro ordenador, estará en modo FLASH y hará correr el programa.
En el que caso de que quieras poner el ESP8266 en modo UART, tendrás que seguir estos 3 pasos.
- Aprieta el pulsador de la placa electrónica conectado al pin GPIO0.
- Sin dejar de apretar, conecta el adaptador USB a serie al ordenador.
- Carga el programa.
Ahora creo que entiendes porqué está conectado el pulsador al pin GPIO0. Es que esta gente de Itead piensa en todos los Makers :)
Para que quede más claro, aquí te dejo una imagen donde puedes ver los pasos bien detallados.
Antes de cargar el firmware ESPurna para proyectos de automatización del hogar y domótica, vamos a cargar un programa muy simple. Esto te ayudará a familiarizarte con la carga de un programa al relé WiFi Sonoff.
Pero esto implica que se borrará el que ya hay dentro y no podrás recuperarlo. De fábrica viene cargado el firmware o programa de Itead. Si quieres conservar este firmware original tendrás que hacer un backup.
Esto te lo explico más adelante, puedes avanzar hasta esa parte, hacer el backup y continuar por aquí. Eso ya lo dejo a tu elección.
Ahora sí, vamos a cargar el primer programa al relé Sonoff WiFi.
Relé Sonoff WiFi y el IDE de Arduino
Antes de cargar el programa tienes que preparar el IDE de Arduino. En principio, si estás trabajando con la versión 1.8 o superior del IDE de Arduino no hay que hacer gran cosa. Eso sí, si todavía no has configurado el entorno de desarrollo para trabajar con un ESP8266 tendrás que hacerlo antes.
En el tutorial Cómo programar NodeMCU con el IDE de Arduino Germán te explica qué pasos tienes que dar para configurar el entorno de desarrollo. Una vez lo tengas, ya puedes continuar con este tutorial.
Sólo tienes que seleccionar el puerto donde está conectado el relé Sonoff WiFi y el tipo de placa Generic ESP8266.
El resto de parámetros los puedes dejar como están. Es importante recalcar que la velocidad de subida (Upload Speed) dependerá de muchos factores. Prueba con una velocidad alta y ves bajando hasta que consigas cargar el programa.
Recuerda los pasos que hay que seguir para poner el ESP8266 en modo UART:
- Aprieta el pulsador
- Sin dejar de apretar el pulsador conecta el adaptador al ordenador
- Sube el código a la placa
Puedes probar a subir un programa vació para comprobar que todo está correcto.
Por último una advertencia. En muchas ocasiones aparecerá un error de este tipo.
A mi me sucede muy a menudo. La solución es desconectar el relé Sonoff WiFi del ordenador y volver a hacer la misma secuencia para probar a subir el código. No te desesperes, en alguna ocasión he tenido que hacer el procedimiento más de 5 veces :/
Relé Sonoff WiFi y su primer programa
Vamos a cargar un programa muy sencillo. Lo único que hará es encender o apagar el LED integrado dentro de la placa cuando aprietes el pulsador. No es nada del otro mundo pero es un ejemplo para practicar a la hora de subir un nuevo firmware al Sonoff WiFi.
Más adelante veremos cómo podemos cargar un firmware más complejo como ESPurna destinado a la automatización del hogar y domótica. Por el momento este es el código que vamos a utilizar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
/* Hola mundo con relé Sonoff WiFi */ // Declaración de variables pines const byte pinLed = 13; const byte pinPulsador = 0; // Estado LED boolean estadoLed = true; void setup() { // Modo de los pines pinMode(pinLed, OUTPUT); pinMode(pinPulsador, INPUT); } void loop() { // Comprobamos que esté apretado el pulsador if (!digitalRead(pinPulsador)) { // Cambiamos el estado estadoLed = !estadoLed; delay(500); } digitalWrite(pinLed, estadoLed); } |
Vuelvo a recordarte los pasos. Sí, lo sé, soy muy pesado pero es fundamental mecanizar el procedimiento repitiendo una y otra vez:
- Aprieta el pulsador
- Sin dejar de apretar el pulsador conecta el adaptador al ordenador
- Sube el código a la placa
Una vez que ha cargado el programa, automáticamente entra en modo FLASH y ejecuta el código que hay cargado en el ESP8266. Por defecto el LED verde integrado en la placa aparecerá apagado.
Ahora si aprietas el pulsador, verás como se enciende el LED.
¿Has visto que fácil es hackear un relé Sonoff WiFi? Objetivo conseguido ;)
Pero claro, no vamos a tener un dispositivo como este para que sólo nos permita encender y apagar un LED, no tiene sentido. A continuación vamos a introducirnos en el firmware desarrollado por Xose Pérez, ESPurna.
Este firmware nos permitirá desarrollar proyectos para la domótica muy fácilmente.
ESPurna el firmware para Sonoff WiFi
Podemos decir que ESPurna es un programa o firmware que nos permite controlar y conectar un ESP8266 a un sistema de automatización del hogar o de domótica. Para que te hagas una idea, no es más que un programa que podemos cargar desde el IDE de Arduino.
La diferencia con los programas que solemos hacer en este blog o para proyectos más pequeños es que ESPurna es un programa muy muy grande. ¿A qué es debido esto? Sobre todo a que es compatible con muchos dispositivos que llevan integrado un ESP8266.
Xose Peréz, el creador de ESPurna, desarrollo este firmware para controlar un relé Sonoff WiFi sin tener que pasar por la plataforma Itead Cloud. En muchas ocasiones no tiene mucho sentido tener que pasar por servidores a miles de kilómetros de nuestra casa para encender una luz o controlar nuestros sistema de domótica.
Eso mismo es lo que pensó en su día Xose. En la actualidad, ESPurna ya no sólo es compatible con dispositivos Sonoff, también es compatible con productos de AI-Thinker, Xenon, Open Energy Monitor o Electrodragon.
Está abierto a que cualquier placa desarrollada por la comunidad y utilice un ESP8266 pueda integrarse dentro de ESPurna. Además, Xose está trabajando en exportar el código para que funcione con el nuevo model de Espressif el ESP32.
Puedes seguir toda la evolución en la web del proyecto en GitHub.
Si quieres profundizar en el funcionamiento de GitHub entra aquí.
Xose Pérez el creador de ESPurna
Xose es una persona bastante inquieta. Al igual que yo, cree en el karma digital es decir, comparte todo lo que puedas que tarde o temprano será devuelto de una manera u otra.
La vida da muchas vueltas, un claro ejemplo lo tenemos en Xose. Estudió Astrofísica y ha terminado haciendo proyectos con ESP8266 y tecnologías libres. Parte de todo esto es gracias a ESPurna. Este firmware ha permitido que las empresas conozcan su trabajo y puedan contratar sus servicios.
Y ya no sólo es ESPurna. En su maravilloso blog Tinkerman, encontrarás muchas cosas relacionadas con la electrónica, el hacking de dispositivos y la programación de electrónica con ESP8266 y Arduino.
Te recomiendo que no pierdas de vista a Xose ya que es una persona que aporta mucho conocimiento al movimiento Maker y además, es un gran tipo :). Gracias Xose por este maravilloso firmware para nuestros dispositivos Sonoff WiFi.
Qué nos aporta ESPurna
Seguramente te estés preguntando ¿para qué sirve ESPurna? Principalmente nos va a permitir ahorrar mucho tiempo. Como ya te he dicho se trata de un programa o firmware muy completo y tiene muchas posibilidades.
Estas serían las características más importantes de ESPurna:
- Soporta muchas marcas y modelos de placas basadas en ESP8266 (ver lista)
- Opciones para ahorro de energía
- Configuración a través de punto de acceso o AP (del inglés Access Point)
- Diferentes modos de control de interruptores/relés
- Compatibilidad con MQTT
- Programación automática de encendido y apagado de interruptores/relés
- Integración con Alexa
- Integración con Google Assistant
- Integración con InfluxDB
- Integración con ThingSpeak
- Soporte para diferentes sensores: DHT11, DHT22, BMP280, DS18B20, BH1750, etc…
- Soporte para medidores de consumo
- Compatible con con luces LED
- Integración con servicio REST API
- Actualización OTA (del inglés Over The Air)
- Control a través de pulsador integrado en la placa
Esto son sólo las características más importantes. Puedes ver el listado completo en la página web de ESPurna en GitHub.
Todo esto lo tenemos a nuestra disposición para su uso y disfrute. ESPurna es un software libre bajo licencia GNU GPL v3.0. Si quieres saber más sobre esta licencia no te pierdas el artículo del blog Error 500.
Una vez que sabemos qué es ESPurna, vamos a pasar a instalarlo. Podemos hacerlo de dos formas. Ya te he dicho que es un programa como otro cualquiera y por lo tanto, lo podríamos cargar a través del IDE de Arduino.
Esto implica que tenemos que instalar todas las dependencias del proyecto en nuestro ordenador. No aconsejo hacer esto a no ser que estés muy familiarizado con la programación de Arduino y ESP8266. Aún así si te animas, Xose tiene un estupendo tutorial en la web de ESPurna en GitHub.
Yo voy a explicar la otra manera de instalar ESPurna en un Sonoff WiFi, a través de los binarios precompilados. También puedes encontrar el tutorial en el GitHub de ESPurna.
Así que prepara el relé Sonoff WiFi, una buena taza de café y los ojos bien abiertos :)
Configuración del sistema para ESPurna
Vamos a partir de los binarios precompilados que Xose nos facilita en la web en GitHub de ESPurna. Cuando entras en el listado, tienes que buscar el que pone espurna-x.x.x-itead-sonoff-basic.bin.
Haces click sobre el enlace y lo descargas. Acuérdate dónde lo has descargado ya que luego nos hará falta. Este listado también puede servir para cargar ESPurna en otros dispositivos.
Los pasos que vamos a seguir son los siguientes:
- Backup del firmware del relé Sonoff WiFi
- Eliminar el firmware del relé Sonoff WiFi
- Cargar el firmware ESPurna en el relé Sonoff WiFi
Pero para poder seguir estos tres pasos vamos a utilizar tres herramientas: Python, gestor de paquetes pip y esptool.
A continuación te dejo un pequeño tutorial para instalar cada una de ellas.
Instalación de Python
Es necesario tener instalado Python con la versión 2.7 o superior o la 3.4 o superior.
Todas estas versiones las puedes encontrar en la web oficial de Python en la sección de download si utilizas Windows, a través del gestor apt-get en Linux o siguiendo estas instrucciones para Mac. En este último sistema, a partir de la versión 10.8 viene preinstalada la versión 2.7 de Python.
Puedes comprobar qué versión hay en tu sistema operativo ejecutando el siguiente comando en una terminal o línea de comandos.
1 |
python --version |
El resultado tiene que ser algo parecido a esto.
Instalación del gestor de paquetes pip
También vas a necesitar el gestor de paquetes de Python pip. Si estás utilizando cualquier versión de Python 2 o Python 3 ya vendrá instalada. Puedes comprobar la versión si ejecutas el siguiente comando.
1 |
pip --version |
Obtendrás un resultado parecido a esto.
Instalación esptool.py
Ahora sólo nos queda un paso para empezar a instalar ESPurna y empezar a utilizar domótica Maker en casa. Hay que instalar esptool.py.
Se trata de una herramienta (de aquí el nombre, tool en inglés significa herramienta) de código abierto que nos permite cargar y comunicar con un ESP8266 y ESP32.
Está escrita en Python y por eso tenemos que tener instalado este lenguaje de programación y el gestor de paquetes pip.
Para instalar esptool es muy sencillo. Sólo tienes que ejecutar el siguiente comando
1 |
pip install --upgrade esptool |
Obtendrás un resultado parecido al siguiente.
Para comprobar que está todo bien instalado, tienes que ir a la carpeta de ejecutables de Python donde se ha instalado esptool. En mi caso, como se ve en la imagen anterior, está instalado en C:\programdata\anaconda3\lib\site-packages.
Una vez estés dentro de la carpeta ejecuta el siguiente comando.
1 |
esptool.py -h |
Obtendrás un resultado parecido a esto.
Perfecto, ahora ya estamos listo para empezar la instalación de ESPurna en un Sonoff WiFi. Este es el principio para nuestro pequeño proyecto de domótica o automatización del hogar.
Instalar ESPurna en un relé Sonoff WiFi Basic
Vamos a seguir estos pasos y eso nos permitirá ir sobre seguro.
- Backup firmware
- Eliminar firmware
- Cargar binarios
Como ya te he dicho, esptool es una herramienta que nos permite cargar los binarios precompilados directamente a la memoria del ESP8266. Pero antes es conveniente hacer una copia de seguridad del firmware que viene precargado de fábrica.
Backup firmware Sonoff WiFi
Según nos cuenta Xose en la documentación oficial de ESPurna, es recomendable hacer una copia de seguridad del firmware. Voy a seguir los mismos pasos que detalla el en su tutorial para hacer el backup.
Lo primero es poner el ESP8266 en modo UART es decir, como si fueras a cargar un programa. Recuerda los pasos.
- Aprieta el pulsador
- Sin dejar de apretar el pulsador conecta el adaptador al ordenador
- Sube el código a la placa
Una vez esté conectado al ordenador, te recomiendo que abras el IDE de Arduino y compruebes el puerto serie que tiene asignado. Variará dependiendo de si es Windows, Linux o Mac. En mi caso tengo el puerto COM19.
Ahora abre una línea de comandos, accede a la carpeta donde está instalado esptool y escribe el siguiente comando. Sustituye COM19 por tu puerto de comunicaciones.
1 |
esptool.py --port COM19 --baud 115200 read_flash 0x00000 0x100000 sonoff-backup.bin |
Esto hará una copia de seguridad en el fichero sonoff-backup.bin. Ten paciencia ya que tardará un poco.
Al final obtendrás un resultado parecido a este.
Cuando termine, puedes comprobar en la carpeta que hay un fichero con el nombre sonoff-backup.bin.
Si por algún motivo tienes que restaurar la copia, puedes utilizar este comando desde la carpeta donde está el archivo sonoff-backup.bin.
1 |
esptool.py --port COM19 --baud 115200 write_flash -fs 1MB -fm dio 0x00000 sonoff-backup.bin |
Ahora ya podemos trabajar con total seguridad y cargar el firmware ESPurna al relé Sonoff WiFi.
Eliminar firmware Sonoff WiFi
Se recomienda siempre eliminar un firmware antes de cargar uno nuevo. De lo contrario, puede que el ESP8266 se comporte de manera inestable.
Vuelve a conectar el relé Sonoff WiFi para que entre en modo UART. Recuerda apretar el pulsador y conectar sin dejar de apretar.
Para eliminar un firmware escribe este comando en una terminal. No te olvides de sustituir COM19 por tu puerto de comunicaciones.
1 |
esptool.py --port COM19 --baud 115200 erase_flash |
Obtendrás algo parecido a la siguiente imagen donde nos informa que se ha eliminado el firmware con éxito.
Ahora sólo queda cargar el firmware ESPurna para configurar nuestro sistema de automatización del hogar o domótica.
Cargar el firmware ESPurna al relé Sonoff WiFi
¿Recuerdas dónde has guardado el archivo con el binario precompilado de ESPurna? Ahora es el momento de utilizarlo.
Escribe el siguiente comando sustituyendo el COM19 por tu puerto y también sustituye la ruta del archivo binario por la ruta donde hayas guardado el .bin. En mi caso lo he cambiado de nombre para que sea más fácil escribir, ahora se llama espurna.bin.
Como siempre, debes poner el ESP8266 en modo UART siguiendo los pasos. Pulsador y conectar.
1 |
esptool.py --port COM19 --baud 115200 write_flash -fs detect -fm dout 0x00000 C:\Users\Luis\Downloads\espurna.bin |
Si todo ha ido bien, tendrás algo parecido a esto.
Ahora si conectas y desconectas el adaptador USB, verás como empieza a parpadear el LED verde integrado en el circuito. Eso quiere decir que ESPurna ya ha empezado a funcionar.
Con esto ya hemos terminado así que ya podemos pasar a la configuración de ESPurna para crear un proyecto de domótica con Arduino.
Configurar proyecto de domótica con ESPurna
Para configurar el relé Sonoff WiFi y empezar con el primer proyecto de domótica, tienes que tener o un ordenador con conexión WiFi o un móvil. Yo recomiendo un ordenador ya que es mucho más práctico a la hora de configurar ESPurna.
¿Cómo funciona el firmware de ESPurna? Bueno, la idea es que el ESP8266 que hay integrado dentro del relé Sonoff WiFi se comporte como un punto de acceso es decir, como si fuera un router.
Pero además también se va a comportar como un servidor web. En su memoria está cargada una aplicación web (no es más que archivos HTML, CSS y JavaScript) a la que podemos acceder a través de una IP.
Esta web nos va a facilitar la configuración el relé Sonoff WiFi con ESPurna sin tener que volver a cargar el firmware ESPurna. Ahora te estarás dando cuenta de lo potente que es. Esto nos permite una gran flexibilidad a la hora de crear proyectos de domótica o automatización del hogar.
En este apartado vamos a seguir estos pasos para empezar a configurar ESPurna:
- Conectar el relé Sonoff WiFi a la red eléctrica
- Acceso AP
- Cambiar contraseña
- Acceso panel de control ESPurna
Esto sólo lo haremos una vez. Cuando tengamos configurada nuestra contraseña, el resto de configuración la haremos a través del panel de control web. Vuelvo a repetir que es muy sencillo crear un sistema para domótica sin tener que cargar una y otra vez una versión del firmware :)
Conectar relé Sonoff WiFi a la red eléctrica
Aquí empieza una de las fases más peligrosas. Entiéndeme, hasta ahora el voltaje con el que trabajamos era o 3,3V o 5V con una corriente de no más de 2A. Sin embargo, la red eléctrica funciona 220V/230V (en España) y la corriente dependerá del dispositivo.
El relé Sonoff WiFi puede controlar hasta 10A en teoría. Se recomienda por los expertos como Xose Pérez, que no se conecten aparatos que consuman más de 5A es decir, unos 1.200W o 1,2kW.
Toma todas las medidas de seguridad posibles. Tu eres el responsable de tus proyectos de domótica y debes ser consciente de los peligros que puede acarrear no hacer las cosas bien y con seguridad.
Dicho todo esto, vamos a conectar el relé a la red eléctrica de nuestra casa. Para empezar y hacer pruebas, lo mejor es hacerse con un enchufe hembra y otro macho. También necesitarás un trozo de cable de buena calidad.
Coge algún desecho que tengas por casa. La idea es conectar un extremo del cable a la entrada o INPUT y otro extemo a la salida OUTPUT. pero ¿cómo sabemos qué es la entrada y qué es la salida? Sencillo, lo indica en la propia carcasa.
Por lo tanto, tienes que conectar el extremo que va conectado a algún enchufe de tu casa en el Input y el extremo que va conectado a un aparato eléctrico (una lámpara por ejemplo) en el Output. Para conectarlos tienes unos tornillos en unos conectores verdes.
Otra pregunta que te puedes estar haciendo es ¿da lo mismo el orden de los cables? ¿cuál es la tierra y cuál la alimentación? Bueno, lo primero que hay que decir es que la corriente alterna no tiene polaridad es decir, no hay GND y VCC.
En la propia carcasa viene especificado donde tiene que ir la fase con la letra L (del inglés Line) y el neutro con la letra N (del inglés Nothing Line o Neutral). Si no respetas la polaridad, no notarás ninguna diferencia funcional es decir, todo funcionará igual.
Sin embargo, por motivos de seguridad se recomienda tener en cuenta la fase y el neutro a la hora de conectar ya que la fase puede presentar un voltaje importante con respecto a tierra. Siempre que sea posible intenta respetar la fase y el neutro.
Si no lo respetas, ten en cuenta que aunque el dispositivo no esté activado puede haber diferencia de potencial en la línea eléctrica. Extrema todas las medidas de seguridad en tus sistemas de domótica.
Al final te tiene que quedar algo parecido a esto. Antes de conectar el relé Sonoff WiFi a cualquier enchufe pon la carcasa y las tapas. No trabajes sin estas protecciones, puede ser muy peligroso.
Ahora prueba a conectar el relé Sonoff WiFi a la red eléctrica. Verás como el LED empieza a parpadear de forma rápida. Esto significa que ha iniciado un punto de acceso y que está listo para empezar a ser configurado.
Punto de acceso AP de ESP8266
El punto de acceso o AP (del inglés Access Point) es el eje central de una red de datos con comunicación inalámbrica. Podemos decir que hace las mismas funciones que el router WiFi de tu casa.
Un ESP8266 se puede comportar como un AP o como un cliente que se conecta a un AP. En este caso, para configurar ESPurna el ESP8266 se comporta como un AP. La idea es conectarnos a la red que ha creado y configurar ESPurna.
Pero ¿cómo lo hacemos? Pues como lo harías con cualquier otro router. Buscas la red WiFi que ha creado y te conectas a ella :) El nombre o SSID (del inglés Service Set Identifier) dependerá de cada dispositivo pero en la primera configuración, todos empiezan igual ESPURNA_XXXXXX.
Por ejemplo, con mi móvil encuentro todas estas redes y entre ellas está ESPURNA_9774F9. Esos últimos números y letras son parte de la dirección MAC de cada dispositivo.
Esa es la red a la que me tengo que conectar. Ahora voy a seguir desde el portatil ya que así es mucho más práctico y fácil.
Si intentas conectarte, te pedirá una contraseña. La contraseña por defecto es fibonacci.
Una vez que se valida la contraseña, ya estás conectado al ESP8266.
Cambiar contraseña
Para cambiar la contraseña tienes que acceder a la IP http://192.168.4.1 desde el ordenador que se ha conectado al ESP8266. Te pedirá un usuario y contraseña. Tienes que poner admin como usuario y como contraseña fibonacci.
Luego haces click sobre Iniciar sesión. Automáticamente se abre una web donde pone en grande SECURITY.
Básicamente nos está diciendo que tenemos que cambiar la contraseña por defecto del usuario admin. Esta contraseña es la que nos permitirá acceder en el futuro si queremos cambiar algo en la configuración.
La contraseña tiene que seguir unas normas mínimas de seguridad. Xose hace mucho hincapié en temas de seguridad y eso me gusta :)
- La contraseña tiene que tener como mínimo 5 caracteres.
- Tienen que ser letras, números y algún carácter especial (@#$%&^(){}[]…)
- Al menos una letra tiene que ser mayúscula y otra minúscula.
- Tiene que contener al menos un número.
Vamos, lo típico de las contraseñas. Una vez tienes decidido cuál utilizar la debes escribir dos veces para confirmar y ya estaría listo. Haces click en el botón que pone Update y ya puedes empezar a configurar ESPurna.
Aparecerá un mensaje que dice que se han guardado los datos.
Cuando cambias la contraseña, se modifica tanto para el panel de control web como para el punto de acceso. Por lo tanto, tienes que volver a realizar el proceso de conectarte al punto de acceso que crea el ESP8266 con la nueva contraseña.
Acceder al panel de control de ESPurna
Para acceder al panel de control tienes que ir a la IP que te he mencionado antes, http://192.168.4.1. Ahora tienes que poner como usuario admin (es el mismo) y como contraseña la que hayas puesto en el paso anterior.
Si todo ha ido bien entrarás en el panel de control que tiene este aspecto.
Las opciones del panel de control irán variando ya que es un firmware que está en constante actualización. Además dependerán del tipo dispositivo Sonoff WiFi que estés utilizando para tu sistema de domótica.
Panel de control ESPurna
El panel de control de ESPurna nos permitirá configurar el relé Sonoff WiFi para integrarlo en un proyecto de domótica o automatización del hogar. Podemos modificar datos como las redes WiFi, broker MQTT y topic, integración con plataformas para la domótica como Domoticz, etc…
Todo esto es lo que iremos viendo a continuación. Pero antes un vistazo rápido por las opciones principales del del panel de control.
- En la parte de arriba tenemos el nombre del punto de acceso o AP.
- Justo debajo podemos ver la versión de ESPurna que tiene cargado el dispositivo.
- Luego el menú para poder configurar las diferentes opciones.
- Abajo los botones Save, Reconnect y Reboot para guardar, reconectar o reiniciar el dispositivo.
- En el centro mostrará información dependiendo de la opción del menú seleccionada. Desde aquí podremos configurar cada apartado de ESPurna.
Vamos a ir viendo cada una de estas opciones poco a poco para saber cómo configurar el sistema de domótica de nuestra casa.
Status
La opción STATUS nos da una visión general del dispositivo. Es la página que se carga cuando entramos al panel de control.
Además de facilitarnos la información del dispositivo, en la parte de arriba nos permite encender y apagar el relé a través de un switch.
Es una manera rápida para comprobar que tenemos control sobre el dispositivo del sistema de domótica.
General
La opción General nos permite modificar 4 parámetros de la configuración de ESPurna: Hostname, el tiempo para detectar un doble click (Double click delay), el modo del LED (LED mode) y la integración con Alexa.
- Hostname: el el nombre con el que vamos a identificar el dispositivo en nuestros sistema de domótica. Para que se guarden los datos tienes que cambiar el nombre y pulsar el botón Reconnect.
- Double click delay: es el tiempo en milisegundos para detectar un doble click en el pulsador. Por ejemplo, el valor por defecto son 500 ms lo que quiere decir que tenemos que dar dos veces al pulsador antes de que transcurra este tiempo para detectar la doble pulsación. Detectar esto nos servirá para poner el relé Sonoff WiFi en modo AP, luego veremos cómo.
- LED mode: podemos elegir entre varios modos que se nos muestran a través de un menú desplegable. El modo del LED nos informa qué está sucediendo dentro del relé Sonoff WiFi sin tener que conectarnos. Por defecto está seleccionado el modo Wifi status que nos informa en qué estado está el dispositivo con respecto a la conexión WiFi.
- Alexa integration: si activas esta opción te permitirá integrar el dispositivo dentro de Alexa.
Al finalizar debes pulsar el botón de Save para que las modificaciones se guarden.
WiFi
La opción WiFi nos permite configurar la red o redes WiFi a la que se va a conectar el relé Sonoff WiFi. Cuando estamos diseñando o creando un sistema para la automatización del hogar o domótica, podemos tener varias redes WiFi a la que se conectará cada dispositivo.
Para configurar una nueva red WiFi sólo tienes que hacer click en el botón Add network y rellenar los campos obligatorios Network SSID y Password.
Intenta configurar todas las redes WiFi de tu casa, así te evitarás que hacer este paso más adelante. Yo por ejemplo tengo dos redes WiFi configuradas.
Al finalizar debes pulsar el botón de Save para que las modificaciones se guarden.
MQTT
La opción MQTT nos permite configurar el protocolo de comunicaciones MQTT del dispositivo. Para utilizar esta opción tienes que tener una red MQTT instalada para tu sistema de domótica. El relé Sonoff WiFi se comportará como un cliente dentro de la red MQTT.
ESPurna nos permite configurar los parámetros necesarios para que poder conectar el dispositivo a la red. Vamos a ver cada uno de ellos.
- Enable MQTT: podemos deshabilitar el protocolo MQTT a través de este switch.
- MQTT Broker: en esta opción debemos indicar la IP del Broker o servidor MQTT.
- MQTT Port: indica el puerto utilizado por el Broker MQTT. Por defecto siempre se utiliza el 1883.
- MQTT User: sólo rellenar en el caso de que hayamos configurado el protocolo en el Broker un usuario y contraseña para enviar mensajes.
- MQTT Password: sólo rellenar en el caso de que hayamos configurado el protocolo en el Broker un usuario y contraseña para enviar mensajes.
- MQTT Client ID: es el identificador del dispositivo dentro de la red MQTT.
- MQTT QoS: calidad del servicio MQTT.
- MQTT Retain: indica si el Broker MQTT retiene el mensaje hasta que lo pueda entregar en el destino.
- MQTT Keep Alive: indica cada cuanto tiempo (segundos) se envía un mensaje para saber si la conexión con el Broker está abierta, Keep Alive.
- MQTT Root Topic: es la raíz del topic MQTT. Todos los mensajes que publica ESPurna comienzan con el Root Topic. Luego veremos cuales son esos mensajes.
- Use JSON payload: si lo habilitas enviará los datos en formato JSON. En principio no hace falta activarlo.
Al finalizar debes pulsar el botón de Save para que las modificaciones se guarden.
La interoperabilidad entre los dispositivos es muy importante en un proyecto de domótica. ESPurna lo gestiona de una forma muy eficiente gracias al protocolo MQTT. Por un lado tenemos los mensajes Heartbeat que proporcionan información del estado del dispositivo.
Topic | Carga útil | Descripción |
---|---|---|
{root topic}/status | 1 o 0 | Indica si el dispositivo está conectado y activo (1) o no (0). |
{root topic}/app | ESPURNA | El tipo de aplicación que está ejecutando |
{root topic}/version | 1.12.4 | Indica la versión del firmware que está utilizando |
{root topic}/hostname | LAMPARA_SALON | Envía el nombre del hostname |
{root topic}/ip | 192.168.0.67 | Indica la IP asignada al dispositivo |
{root topic}/mac | 21:11:56:88:47:77 | Indica la MAC del dispositivo |
{root topic}/datetime | 2018-01-04 14:03:54 | Indica la fecha y hora siempre que se configure NTP |
Esto mensajes se envían desde el relé Sonoff WiFi cada 5 minutos. Podemos verlos desde otro cliente para saber el estado en el que se encuentra el dispositivo por ejemplo. Se debe sustituir {root topic} por el que hayamos puesto en la configuración.
Por ejemplo, yo he puesto en el root topic casa/salon/lampara. Por lo tanto, desde mi Raspberry Pi me puedo suscribir al topic casa/salon/lampara/status para saber su estado.
Luego están los mensajes que se envían desde el dispositivo para informar del estado del relé. Esto se hace a través del topic {root topic}/relay/0. El cero final sirve para identificar a cada relé dentro de un sistema de domótica.
Imagínate que tienes 2 relés, el primero publicará en el topic {root topic}/relay/0 y el segundo en el topic {root topic}/relay/1. Esto nos servirá para actualizar la app o panel de control del sistema de domótica.
La carga útil de este topic será 1 si está encendido o 0 si está apagado el relé.
Por último podemos cambiar el estado del relé para apagar o encender. Sólo tenemos que publicar en el topic {root topic}/relay/0/set. Como ocurre con el mensaje de estado, el 0 variará dependiendo de cuantos relés tengamos configurados.
Este topic admite 3 cargas útiles:
- Carga útil 0: apaga el relé.
- Carga útil 1: enciende el relé.
- Carga útil 2: conmuta el relé es decir, si está apagado lo enciende y si está encendido lo apaga.
Como ves es muy importante conocer el protocolo MQTT ya que nos da mucha flexibilidad a la hora de configurar nuestros sistema basado en la domótica. Este sería el primer paso para empezar a comunicar los dispositivos en tiempo real.
NTP
En la opción NTP vamos a poder configurar el Protocolo de Internet para sincronización o NTP (del inglés Network Time Protocol). Básicamente lo que nos permite es tener una referencia temporal dentro del dispositivo.
Muy útil si por ejemplo queremos apagar o encender el relé a una determinada hora. La configuración es muy sencilla, sólo tenemos que indicar el servidor NTP, la zona horaria y habilitarlo con el switch.
Al finalizar debes pulsar el botón de Save para que las modificaciones se guarden.
Schedule
La última opción que vamos a ver es el Schedule. Se trata de un programador que nos permite configurar diferentes procesos para apagar o encender de forma automática el relé a una determinada hora.
Imagínate que quieres encender la luz del jardín o de la entrada a casa a una hora y que se apague a otra hora. Esta opción te permitirá hacer esto mismo. Para configurar una acción tienes que pulsar el botón Add schedule
Esto habilita los campos necesarios para configurar una programación automática por tiempo.
- When time is: en estos dos campos debemos poner la hora (en formato 24 horas) y los minutos.
- And weekday is on of: aquí indicamos los días de la semana que queremos que se active el relé en número. El lunes sería el 1, el martes el 2 y así sucesivamente hasta el domingo que sería el 7. Deben ir separados por comas.
- Action: indicamos si se apaga a esa hora (Turn Off) o se enciende (Turn On).
- Enabled: para habilitar o deshabilitar el relé.
- Delete schedule: si queremos borrar la programación
Podemos tener tantas programaciones como queramos en nuestro sistema basado en domótica.
Otras opciones
El resto de las opciones de ESPurna nos permiten configurar el relé Sonoff WiFi para integrarlo dentro de plataformas para la domótica como Domoticz o Home Assistant. También hay una opción para integrarlo dentro de ThingSpeak.
Según conversaciones con Xose, se está trabajando en sacar una nueva versión que corrige algunos errores y aporta nuevas funcionalidades. Iré actualizando este tutorial según se vayan incorporando estas mejoras.
Conclusiones relé Sonoff WiFi para domótica
A lo largo de este tutorial hemos visto cómo podemos hackear y configurar un relé Sonoff WiFi para usarlo en nuestros proyectos basados en domótica. Itead nos ofrece una amplia gama de productos totalmente configurables.
Podemos hacerlo de dos formas, utilizando las herramientas propietarias que nos ofrece el fabricante o utilizando tecnologías abiertas. Da lo mismo si utilizas una forma u otra, lo importante es que podemos elegir.
Para poder utilizar tu propio sistema o cualquier otro de código abierto, tendrás que abrir el relé Sonoff WiFi y soldar unos pines hembra a la placa. Esto nos permitirá conectar un adaptador USB a serie para poder cargar programas al ESP8266.
Una vez tengamos esto, ya podemos probar un programa simple para ver que todo funciona correctamente. Pero si realmente quieres sacar jugo a este dispositivo, te recomiendo que instales ESPurna, el firmware de código abierto para la domótica con Sonoff.
Ha sido un tutorial largo y en algunos pasos, complejo. Sin embargo queda demostrado que todo es posible. Sólo hace falta tener unos conocimientos básicos y muchas ganas de aprender.
Ahora ya sí me despido y recuerda, cualquier duda o sugerencia en los comentarios de este artículo :)