Poniendo Tasmota en un SonOff con una Raspberry Pi
Bueno tras un tiempo cacharreando con estos maravillosos dispositivos os quería compartir unos pasos que quizá necesitéis. Los SonOff son unos pequeños modulos Wifi basados en ESP8266 con relé. Ideales para controlar de forma remota una lampara… o lo que necesitemos apagar y encender de manera remota. En este post veremos cómo flashearlos y cambiarles el firmware e instalar Tasmota con una Raspberry Pi; sinceramente, me ha parecido la opción más sencilla de todas las que probé y funciona con todos los SonOff.
Para todos los que no conozcáis los SonOff, en resumidas cuentas, es un relé Wifi, un interruptor que nos permitirá controlar el dispositivo que le conectemos, sean lámparas, luces, puertas de garaje… todo lo que no supere los 10A. Mi necesidad es poder controlarlos desde una Rasperry Pi o un equipo con linux que tengo como controlador de mi casa, para luego eso, desde el móvil, desde donde sea poder encender/apagar. Si no queremos usar el software propietario que no nos da esta flexibilidad, podremos flashearlas y cambiarles el firm. Tenemos otras maneras de flashearlos, la tradicional con un dispositivo USB-TTL o con Wifi directamente conectado a un portátil/PC, pero a partir del firmware 1.6 esto empezó a complicarse. Algo que siempre me ha ido genial es hacerlo con una Raspberry Pi, ¿quien no tiene una a mano?
Vamos a dejar lista la Raspberry Pi para poder conectarnos con ella al ESP8266 y poder cambiarle el firmware. Si tenemos una Raspberry Pi recién instalada lo más seguro que tengamos que instalar pip:
[sourcecode]curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && sudo python get-pip.py[/sourcecode]
Instalamos Esptool, una herramienta de python necesaria para cargarle la ROM al ESP8266:
[sourcecode]sudo pip install esptool[/sourcecode]
Debemos parar y deshabilitar Getty:
[sourcecode]sudo systemctl stop
se**********@tt***.service
sudo systemctl disable
se**********@tt***.service
[/sourcecode]
Eliminamos el comando que hace cargar el TTL, borramos el texto “console=serial0,115200′ del fichero “/boot/cmdline.txt”
Por último, habilitamos el terminal Serie editando el fichero ”boot/config.txt’, añadimos al final: “enable_uart=1” y apagamos la Raspberry:
[sourcecode]sudo shutdown -h now[/sourcecode]
Bien, ahora toca algo sencillo, será abrir el dispositivo SonOff con cuidado (obviamente desconectado de la corriente), y colocar 4 cables a los GPIO de la Raspberry Pi de la siguiente manera:
El cable de la alimentación que va a los 3,3v de la Raspberry Pi tendremos que poder conectarlo y desconectarlo cómodamente, ya que será necesario cuando queramos encender o apagar el SonOff. Bien arrancamos de nuevo la Pi cuando esté todo conectado (excepto el de 3,3v).
Descargamos el firmware de Tasmota con:
[sourcecode]wget https://github.com/arendst/Sonoff-Tasmota/releases/download/v6.2.1/sonoff.bin[/sourcecode]
Lo primero que haremos y sin miedo, será borrar la memoria del ESP8266 del Sonoff, tendremos que mantener pulsado el botón del switch del SonOff unos 7 segundos mientras conectamos el cable de 3,3v a la Pi. Y ejecutaremos:
[sourcecode]Si usamos una Pi1 o Pi2: esptool.py –port /dev/ttyAMA0 erase_flash
Si usamos una Pi3: esptool.py –port /dev/ttyS0 erase_flash[/sourcecode]
Cuando finalice el proceso, desconectaremos el cable de 3,3v de la Raspberry, esperamos un par de segundos y volvemos a realizar el proceso, conectamos el 3,3v y pulsamos el botón del switch del SonOff durante unos 7 segundos. Ahora le instalaremos el firmware que nos acabamos de descartar de Tasmota:
[sourcecode]Si usamos una Pi1 o Pi2: esptool.py –port /dev/ttyAMA0 write_flash -fm dout 0x0 /home/pi/sonoff.bin
Si usamos una Pi3: esptool.py –port /dev/ttyS0 write_flash -fm dout 0x0 /home/pi/sonoff.bin[/sourcecode]
Una vez instalado el nuevo firmware, desconectamos el cable de 3,3v y lo volvemos a conectar, una vez haya arrancado nos conectaremos a él y le configuraremos el acceso Wifi.
[sourcecode]Si usamos una Pi1 o Pi2: miniterm.py /dev/ttyAMA0 115200 -e
Si usamos una Pi3: miniterm.py /dev/ttyS0 115200 -e[/sourcecode]
Creará un punto de acceso, al conectarnos a su Wifi nos abrirá el navegador directamente contra la dirección IP del dispositivo.
Sencillamente podremos configura los parámetros de red, indicamos el nombre de nuestra red Wifi de casa o de la oficina y la contraseña. Ojo deberá ser WiFi 2.4GHz y no 5GHz que no está soportada. Grabamos y listo! Podremos ya reiniciar de nuevo el dispositivo SonOff y ver que se conecta perfectamente a nuestra red Wifi.
Podremos abrir un navegador contra la dirección IP que haya cogido del DHCP y tendremos Tasmota, podremos utilizarlo para lo que sea. En otros posts veremos otros firmwares, pero esta a mí me sirve perfectamente para activar o desactivar el SonOff remotamente con Raspberry Pi o cualquier linux.
Si queremos configurar una dirección IP en Tasmota, deberemos realizarlo mediante el navegador, indicando la siguiente URL:
[sourcecode]http://DIRECCION_IP_ACTUAL/cm?cmnd=IPAddress1%20DIRECCION_IP:DESEADA&cmnd=IPAddress2%20PUERTA_DE_ENLACE&cmnd=IPAddress3%20MASCARA_SUBRED&cmnd=IPAddress4%20DIRECCION_IP_DNS[/sourcecode]
Y por ejemplo con este comando le pasaríamos la señal al SonOff para que apague el switch (la lámpara, tele, portón garaje… lo que tengamos conectado), desde un navegador:
[sourcecode]http://DIRECCION_IP/cm?cmnd=Power%20Off[/sourcecode]
Y directamente si hacemos un script en bash con esta línea, al ejecutarlo pues haríamos lo mismo que en el paso anterior, que sencillo con curl:
[sourcecode]curl http://DIRECCION_IP/cm?cmnd=Power%20Off[/sourcecode]
Si te da la curiosidad, aquí tienes todos los comandos que puedes usar: https://github.com/arendst/Sonoff-Tasmota/wiki/Commands