Posant Tasmota en un SonOff amb una Raspberry Pi

Bo després d'un temps catxant amb aquests marrecs dispositius us volia compartir uns passos que potser necessiteu. Els SonOff són uns petits moduls Wifi basats en ESP8266 amb relé. Ideals per controlar de forma remota una llampec… o el que necessitem apagar i encendre de manera remota. En aquest post veurem com flashear-los i canviar-los el firmware i instal·lar Tasmota amb una Raspberry Pi; sincerament, m'ha semblat l'opció més senzilla de totes les que prova i funciona amb tots els 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 connectem, sean lámparas, luces, portes de garaje… tot el que no supere els 10A. Mi necessito es poder controlar des d'una Rasperry Pi o un equip amb Linux que tengo com a controlador de casa meva, per després això, desde el mòbil, desde donde sea poder encender/apagar. Si no volem usar el software propietario que no nos da esta flexibilitat, podremos flashearlas y cambiarles el firm. Tenemos otras maneres de flashearlos, la tradicional con un dispositivo USB-TTL o amb Wifi directament connectat 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?

 

Anem a deixar la llista de la Raspberry Pi per poder connectar-nos amb ella al ESP8266 i poder canviar el firmware. Si tenemos una Raspberry Pi recentment instalada lo más segur que tengamos que instal·lar 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 necessària per carregar la ROM al ESP8266:

[sourcecode]sudo pip install esptool[/sourcecode]

 

Debemos parar y deshabilitar Getty:

[sourcecode]sudo systemctl stop es**********@***S0.service
sudo systemctl disable es**********@***S0.service[/sourcecode]

 

Eliminamos el comandament que hace cargar el TTL, borramos el texto “console=serial0,115200′ del fichero “/boot/cmdline.txt”

Finalment, 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]

 

Bé, ara 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 fem servir una Pi3: esptool.py –port /dev/ttyS0 erase_flash[/sourcecode]

 

Quan finalitzi el procés, desconnectarem el cable de 3,3v de la Raspberry, esperem un parell de segons i tornem a realitzar el procés, connectem el 3,3v i premem el botó del switch del SonOff durant uns 7 segons. Ara li instal·larem el firmware que acabem de descarregar de Tasmota:

[sourcecode]Si usamos una Pi1 o Pi2: esptool.py –port /dev/ttyAMA0 write_flash -fm dout 0x0 /home/pi/sonoff.bin
Si fem servir una Pi3: esptool.py –port /dev/ttyS0 write_flash -fm dout 0x0 /home/pi/sonoff.bin[/sourcecode]

 

Una vegada instal·lat el nou firmware, desconnectem el cable de 3,3v i el tornem a connectar, una vegada hagi arrencat ens connectarem a ell i li configurarem l’accés Wifi.

[sourcecode]Si usamos una Pi1 o Pi2: miniterm.py /dev/ttyAMA0 115200 -e
Si fem servir una Pi3: miniterm.py /dev/ttyS0 115200 -e[/sourcecode]

 

Crearà un punt d'accés, en connectar-nos al seu Wifi ens obrirà el navegador directament contra l'adreça IP del dispositiu.

 

 

Simplement podrem configurar els paràmetres de xarxa, indiquem el nom de la nostra xarxa Wifi de casa o de l'oficina i la contrasenya. Compte, ha de ser WiFi 2.4GHz i no 5GHz perquè no està suportat. Gravem i llest! Podrem tornar a reiniciar el dispositiu SonOff i veure que es connecta perfectament a la nostra xarxa Wifi.

Podrem obrir un navegador a la direcció IP que hagi obtingut del DHCP i tindrem Tasmota, podrem utilitzar-lo per a qualsevol cosa. En altres publicacions veurem altres firmwares, però aquest a mi em serveix perfectament per activar o desactivar el SonOff remotament amb Raspberry Pi o qualsevol linux.

 

Si volem configurar una adreça IP en Tasmota, haurem de fer-ho mitjançant el navegador, indiquant la següent URL:

[sourcecode]http://DIRECCION_IP_ACTUAL/cm?cmnd = IPAddress1% 20DIRECCION_IP:DESITJADA&cmnd = IPAddress2% 20PUERTA_DE_ENLACE&cmnd = IPAddress3% 20MASCARA_SUBRED&cmnd = IPAddress4% 20DIRECCION_IP_DNS[/sourcecode]

 

I per exemple amb aquest comandament les passarem la senyal 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 Off[/sourcecode]

 

Y directament si facem un script en bash amb esta línia, al executarlo pues haríamos lo mateix que en el pas anterior, que sencillo con curl:

[sourcecode]curl http://DIRECCION_IP/cm?cmnd=Power Off[/sourcecode]

 

Si te da la curiosidad, aquí tienes todos los comandos que pots usar: https://github.com/arendst/Sonoff-Tasmota/wiki/Commands

 

Posts recomanats

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dubtis a contactar amb mi, us intentareu ajudar sempre que pugui, compartir és viure ;) . Gaudir dels documents!!!