Al final, siempre hay empresas o personas que te facilitan la vida, en este caso, encuentran huecos a la sombra de fabricantes, haciéndote la vida más fácil. Sobre todo con la domótica y Home Assistant.
Tasmota es una de ellas.
Oficialmente iniciado en 2017 por Theo Arends, no ha parado desde entonces, más de 2200 dispositivos soportados, código libre, una excelente comunidad y lo de siempre, si las cosas son fáciles, triunfan. Tasmota lo es.
Es verdad que existe mucha competencia en este mundillo, ESPHome, ESPurna, ESPEasy son quizás los más importantes ¿Cuál elegir? Podemos ir por dos caminos, yo la verdad si pruebo algo y me gusta, no le doy más vueltas, pero también hay seres humanos más inquietos.
Este artículo está enfocado a Tasmota, pero en su desarrollo he tenido en cuenta la posibilidad que parte de él, se pueda utilizar para otras pruebas que puedas hacer con ESPHome, ESPurna, ESPEasy etc.
Veremos un ejemplo simple de un sensor de temperatura conectado a un ESP8266 y enviaremos los datos vía MQTT a Home Assistant. El 50% de todo el trabajo lo haremos desde nuestro móvil.
Vamos allá.
Indice de contenidos
¿Qué es Tasmota?
Tasmota es un firmware especial para los microcontroladores fabricados por la empresa Espressif con los micros ESP8266, ESP32, ESP32-S o ESP32-C3.
Pero entonces…
¿Qué es un firmware? En este caso (varía el concepto dependiendo si hablamos de un ordenador o un móvil) el firmware es cualquier programa que un microcontrolador (ESP8266 por ejemplo), ejecuta. Es típicamente cualquier programa que tú escribes y subes a la memoria del micro.
Si has trabajado alguna vez con el IDE de Arduino, después de elegir la placa con la que vas a trabajar y escribir tu código, lo has subido a una placa ESP8266, en ese momento tú has creado un firmware, bueno, tú no, es el IDE Arduino quien junta todas las piezas y crea el firmware para posteriormente subirlo a la memoria de la placa.
Ahora que ya sabemos de qué se trata un firmware sigamos con Tasmota.
Soporta una gran cantidad de dispositivos ya fabricados en el mercado, como los de SONOFF o TUYA, también los que tú te puedas construir, por ejemplo, con un Wemos D1 Mini.
Se integra vía MQTT (MQ Telemetry Transport) con cualquier controlador, por ejemplo, Home Assistant, Jeedom, openHab. MQTT que es un protocolo muy fácil de implementar que hace que las maquina hablen entre ellas (no sé por qué me ha venido a la memoria de la pelicula «skyline» Terminator) y que es un estándar en el Internet de las Cosas (IoT).
MQTT da para un artículo el solito como esta guía de introducción a MQTT, está muy bien explicado.
Simplemente, añado esta imagen para darte una idea, si no lo conoces. Pero te animo a que accedas al enlace anterior si quieres profundizar.
Puedes pensar en MQTT como en una oficina de correos que intercambia correos indicando «enciende la luz» o «la temperatura es de 25 grados». Como en todas las cartas existe un remitente, que publica el mensaje) y la oficina de correos (el broker) lo envía a quien esté subscrito a los mensajes de ese remitente.
¿Para qué sirve Tasmota?
Las ventajas que tiene Tasmota van muy orientadas a personas que como tú quieren domotizar tu casa:
- Porque tu fuerte no es el picar código c++ o micropython.
- Porque aunque tienes experiencia en c++, vas a instalar 20 dispositivos (serán muchos más) y piensas que te vas a quitar un montón de trabajo.
- Porque quieres que prime la estética del fabricante y prefieres apoyarte en ellos, subir el firmware de Tasmota y añadirlo a estos dispositivos de estética más cuidada a tu domótica doméstica.
Para esto sirve Tasmota, para facilitarte la vida, las dos primera opciones se explican solas.
La tercera es el camino que ha seguido Tasmota para triunfar, comprarte un dispositivo de los dos mil y pico que hay en el mercado, desbloquear este dispositivo y en cierta manera liberándolo para utilizarlo para comunicarse con otros sistemas que nunca se pretendía comunicarse, es decir, con tu sistema e integrándose con todo lo que hable el protocolo MQTT, suena bien ¿No?.
Algunos ejemplos de controladores que soportan MQTT:
- Domoticz
- Home Assistant
- HomeBridge
- HomeSeer
- Mozilla Project Things
- NodeRed
- OpenHAB
- SmartThings
- Yeti
- Jeedom
Ahora bien, subir un código a dispositivos de fabricantes, si lo retuerces un poco, parece que estamos pirateando el dispositivo, aquí yo creo que se sigue una estrategia win-win, todos ganan. Por un lado, el fabricante que vende más y el consumidor consigue añadir dispositivos en su sistema domótico y así de paso, no tiene que pasar por ninguna nube de ningún fabricante.
Las malas noticias son: si subes el firmware de Tasmota o herramientas similares a cualquier dispositivo de estos, adiós a la garantía, o sea, que ya puedes afinar tu destornillador plano destripa-dispositivos y afilar tu soldador.
Modos de subir el firmware de Tasmota
Antes de entrar en el cómo, debes de entender que existen dos maneras de subir código:
- A través del aire, es decir, vía Wifi, quizás lo has hecho ya, pero no lo has interiorizado. Por ejemplo, configurar un aire acondicionado que tiene la posibilidad de manejarlo remotamente vía Wifi, lo primero que dicen las instrucciones es que mires tus redes Wifi de tu entorno a ver si hay alguna que empiece por ac03… (es un ejemplo). Esa red la anuncia el aparato de aire acondicionado, para que realices una conexión directa (como cuando vas a casa de un amigo y te conectas a su Wifi), una vez conectado, normalmente con una app del fabricante solo tienes que configurarlo.
- Conectando físicamente a tu ordenador el dispositivo ESPxx que queremos modificar, ya sea porque ese dispositivo tiene un puerto USB o si no lo tiene, utilizando los pines de TX y RX del ESPxx, pero para este último, necesitas de un adaptador que se encargue de la comunicación, el adaptador FTDI
Esto que te acabo de contar es simplemente para ponerte sobre aviso de lo que viene ahora, la realidad como verás más adelante, es que para subir el firmware de Tasmota la primera vez debes de conectar físicamente a tu ordenador y una vez configurado ya podrías utilizar la actualización vía Wifi.
Un poco más de teoría y luego vamos a la práctica.
Conexión vía Wifi
Aquí hay que distinguir dos tipos de dispositivos:
- Dispositivos de fabricante nuevos utilizando algún script y la herramienta oficial para subir código a un ESPxx esptool.py (necesitas tener python instalado). Pones el dispositivo en modo emparejamiento, que no es raro, es la ejecución normal de un proceso de alta en la nube, se suele pulsar un botón, varias veces, o solo una durante varios segundos hasta que el dispositivo queda emparejado y aparece normalmente en la app del fabricante en vuestro móvil para que puedas operar. Es justamente en ese momento, cuando se está intentando emparejar, cuando se intenta subir el firmware al dispositivo.
- Dispositivos con Tasmota instalado y que se dejan configurados para que se pueda acceder vía Wifi para cualquier actualización que necesitemos, software nuevo, claves, etc. Esto no solamente lo hace Tasmota, lo puede hacer cualquier ESPxx, ya sea a través de Tasmota (o ESPHome etc.) o a través de código subido desde tu IDE Arduino o PlatformIO con librerías tipo AsyncElegantOTA.
Conexión vía cable Adaptador FTDI o USB
Dos tipos de dispositivos:
- Adaptador FTDI – Dispositivos de fabricante nuevos aquí tenemos que abrir el dispositivo, si o si, y descubrir los pines o puntos donde están definidos las señales de TX y RX. Además, para que el dispositivo acepte el nuevo firmware, normalmente pin 0 a GND (puede cambiar en cada dispositivo). Todo esto hay que conectarlo, normalmente soldando cables conectados con tu adaptador FTDI, que se va a encargar de convertir señales serial a señales USB para poder conectarlo a vuestro PC. En este enlace puedes ver un ejemplo para conectar un FDTI para ESP32 CAM dispositivo, que no tiene puerto USB y que nos conectamos a través de un adaptador FDTI.
FTDI imprescindible para cualquier conexión en la cual no se disponga de un puerto USB (en sus distintos formatos), este dispositivo actúa de adaptador entre señales Serie y USB.
En la página de Tasmota advierten de posibles problemas si te lanzas a comprar adaptadores FTDI clónicos, yo he trabajado con los dos tipos que os muestro arriba y nunca he tenido problemas, dicho esto, Sparkfun o Adafruit siempre serán más fiables. Aparte Tasmota nos hace un par de recomendaciones Modulo CH340 y SparkFun CH340G. Todos son adaptadores USB-to-Serial.
Este es un ejemplo con Sonoff R2 Basic que es un conmutador inteligente Wifi para que veas la operativa a ejecutar.
Te identifico las tripas del conmutador una vez abierto, parte superior.
Parte posterior donde vienen perfectamente identificados los pines TX, RX y alimentación.
Diagrama de conexión con el Adaptador FTDI, donde lo más importante es ver que TX y RX van cruzados y el voltaje de alimentación 3.3 v en este caso.
Y finalmente, todo conectado.
- USB – Dispositivos tipo Wemos D1 que ya tiene un conector USB, esto es lo más sencillo, veremos un ejemplo más adelante en este artículo.
Ahora vamos a por el cómo.
Una vez conectado el dispositivo de una de las dos opciones anteriores, solo nos queda subir el firmware de Tasmota. Estas son las opciones que me parecen más útiles:
- Tasmotizer: si solo utilizas Tasmota en tu entorno esta es la opción correcta
- Backup Automático antes de subir el código, así poder restaurar el firmware original del fabricante.
- Subir imágenes .bin al dispositivo, que se descargan automáticamente
- Envío de configuración wifi, MQTT etc. Para no tener que conectarnos de nuevo al dispositivo.
- Recoger la IP del dispositivo, Tasmota avisa que esta opción depende del estado del dispositivo y que puede no funcionar.
- Para Windows existe un ejecutable, para MAC o Linux debe hacerse con Python y se instala desde el terminal.
- ESP-Flasher: herramienta multiplataforma basada en esptool.py, disponible para MAC y Windows, la puedes descargar en este enlace ESP-Flasher. Es la que voy a utilizar para este artículo, te vale para subir cualquier tipo de firmware, ya sea de Tasmota como el de tu primo. Instálatelo, lo necesitarás más adelante.
Tasmota con ESP8266 y sensor DHT22
En la introducción de este artículo comenté que mi primer interés es que lo que aquí veamos, pueda servirte para poderlo reutilizar con otras herramientas como ESPHome, ESPEasy, Espurna etc.
Por ello vamos a utilizar elemento comunes:
- Como dispositivo tipo Wemos D1 mini con un sensor de temperatura DHT22
- Para subir el firmware la herramienta multiplataforma ESP-Flasher
- Como controlador Home Assistant
- Como intermediario (broker) MQTT para recoger los datos del Wemos D1 mini, en este caso un complemento instalado en el propio Home Assistant
La práctica va a ir por este camino:
- Prototipado rápido de Wemos D1 Mini y con un zócalo (shield) DHT22.
- Instalar MQTT en Home Assistant.
- Subir el firmware de Tasmota.
- Configuración Wifi y MQTT desde el móvil.
- Descubrir el dispositivo en Home Assistant y visualizar los datos del sensor.
¿Preparado?
Paso 1. Prototipado rápido de tarjeta tipo Wemos D1 Mini Pro 4M con un zócalo (shield) DHT22
La tarjeta que voy a utilizar es un clónico de Wemos, me llamo la atención porque lleva una antena de cerámica y un conector para una antena externa.
Los clónicos de Wemos, son los que pareciéndose a Wemos, no llevan serigrafiado el logotipo de Wemos en la placa.
El DHT22 es un clásico, quizás no es el mejor sensor del mundo, pero tampoco el peor. Puedes ver aquí, que está soportado por Tasmota.
Por último, al conectar el zócalo DHT22 en el Wemos D1 Mini, el pin 2 (datos) del DHT22 quedará conectado al pin D4 GPIO2 de la tarjeta Wemos cuando se ensamble, quédate con este dato para cuando configuremos Tasmota
Para montar el prototipo solo debes de soldar los pines metálicos hembra a la tarjeta Wemos y los pines tipo macho al DHT22.
DHT22
Wemos D1 Mini Pro
Finalmente, todo soldado y ensamblado.
Si te das cuenta no he soldado todos los pines, cacharreo mucho. Así monto y desmonto más fácilmente, lógicamente si lo vas a poner en producción en vuestro entorno, suelda todos los pines.
Con los D1 Mini Shields tienes un montón de opciones para prototipar en minutos, lo que tardes en soldar 16 pines.
Paso 2. Instalar MQTT en Home Assistant
Abre tu Home Assistant y ve a Configuración + Usuarios para crearnos un usuario para segurizar la transmisión de datos entre nuestro Wemos y Home Assistant. Todos los dispositivos que quieras conectar deberán de tener este usuario y clave.
Clic en AÑADIR USUARIO y te aparece un formulario. Rellena los campos y no lo añadas al perfil de administrador, es innecesario. Finalmente clic en CREAR.
Ahora nos vamos a la tienda de complementos para instalar MQTT, clic en Supervisor y TIENDA DE COMPLEMENTOS.
Busca MQTT en la lupa de búsqueda.
Este es el resultado y clic en Mosquitto broker
Clic en INSTALAR
Marca la opción de Vigilancia y INICIAR
Te vas otra vez a Configuración e Integraciones
Y verás MQTT descubierto y listo para configurar
Te preguntan si quieres CONFIGURAR MQTT, clic en ENVIAR y si todo ha ido bien aparece esta ventana. Clic en TERMINAR
Terminada esta parte. Home Assistant está preparado para recibir mensajes MQTT.
Paso 3. Subir el firmware Tasmota
En el Paso 1 ya has preparado tu dispositivo, ahora simplemente lo conectas al puerto USB de tu ordenador, antes de arrancar el programa ESP-Flasher, nos bajamos el firmware, que es un fichero con extensión .bin.
Para esto dirígete a este enlace que te llevara a la última versión de Tasmota, clic en el enlace de la propia página en Tasmota 10.1.0 Noelle, (versión disponible durante este artículo).
En esta página descarga en tu PC el firmware tasmota.bin.gz, .gz es una extensión que indica que es un fichero comprimido, descomprímelo, el resultado es un fichero con este nombre: tasmota.bin
Ahora abre el programa ESP-Flasher, conecta el dispositivo Wemos al puerto USB y sigue estos pasos:
Si todo ha ido bien veras estos datos por la consola. La última línea nos da una pista por donde seguir
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
Using ‘/dev/cu.usbserial-14440’ as serial port. Connecting…. Detecting chip type… ESP8266 Connecting…. Chip Info: Chip Family: ESP8266 Chip Model: ESP8266EX Chip ID: 007EA5CF MAC Address: 48:3F:DA:7E:A5:CF Uploading stub… Running stub… Stub running… Changing baud rate to 460800 Changed. Flash Size: 4MB Flash Mode: dout Flash Frequency: 40MHz Erasing flash (this may take a while)… Chip erase completed successfully in 12.0s Flash will be erased from 0x00000000 to 0x0009afff… Flash params set to 0x0340 Compressed 630976 bytes to 449803… Writing at 0x00000000… (3 %) Writing at 0x00005e44… (7 %) – – – – – – -\- – – – – – – – – Writing at 0x00092364… (96 %) Writing at 0x000974c5… (100 %) Wrote 630976 bytes (449803 compressed) at 0x00000000 in 11.3 seconds (effective 448.6 kbit/s)… Hash of data verified. Leaving… Hard Resetting… Hard resetting via RTS pin… Done! Flashing is complete! Showing logs: [00:27:08] [00:27:08]00:00:00.001 HDW: ESP8266EX [00:27:08]00:00:00.017-032 CFG: Use defaults [00:27:08]00:00:00.422 QPC: Reset [00:27:08]00:00:00.433 Project tasmota – Tasmota Version 10.1.0(tasmota)-2_7_4_9(2021-12-08T14:47:33) [00:27:09]00:00:00.716 WIF: WifiManager active for 3 minutes [00:27:09]00:00:00.225 HTP: Web server active on tasmota-7EA5CF-1487 with IP address 192.168.4.1 |
HTP: Web server active on tasmota-7EA5CF-1487 with IP address 192.168.4.1
Ya tienes un servidor web accesible en tu dispositivo, parece magia ¿Eh?, pues ya verás lo que viene ahora.
Este servidor web presenta lo que se llama un portal cautivo que funciona con un Punto de Acceso Wifi (función que normalmente ofrece tu router ADSL o similar), vía wifi te vas a conectar directamente (acuérdate del ejemplo que te puse anteriormente explicando los pasos para configurar tu aire acondicionado vía Wifi), para ello sigue los siguientes pasos.
A partir de aquí solo vas a utilizar el móvil para seguir con la configuración.
Te aparece una nueva red wifi con el nombre del servidor web que has visto en el log de la consola. tasmota-7EA5CF-1487 (en tu entorno los números cambiarán), te conectas, dejas de tener la red wifi a la que estabas conectado para conectarte directamente a tu dispositivo, finalmente inicia sesión (no hay claves).
Configura tu dispositivo para que se conecte a tu red wifi de nuestra casa (personaliza con tus datos)
Vete a la consola del ESP-Flasher si todo hay ido bien debes de visualizar algo así:
1 2 3 4 5 6 7 8 |
[13:55:28]00:00:00.056 Project tasmota - Tasmota Version 10.1.0(tasmota)-2_7_4_9(2021-12-08T14:47:33) [13:55:28]00:00:00.543 WIF: Connecting to AP1 MyDeco01 in mode 11n as tasmota-7EA5CF-1487… [13:55:34]00:00:06.684 QPC: Reset [13:55:36]00:00:08.007 WIF: Connected [13:55:36]00:00:08.258 HTP: Web server active on tasmota-7EA5CF-1487 with IP address 192.168.1.36 [13:55:37]13:55:38.260 RSL: INFO1 = {"Info1":{"Module":"Sonoff Basic","Version":"10.1.0(tasmota)","FallbackTopic":"cmnd/DVES_7EA5CF_fb/","GroupTopic":"cmnd/tasmotas/"}} [13:55:37]13:55:38.265 RSL: INFO2 = {"Info2":{"WebServerMode":"Admin","Hostname":"tasmota-7EA5CF-1487","IPAddress":"192.168.1.36"}} [13:55:37]13:55:38.275 RSL: INFO3 = {«Info3»:{«RestartReason»:»Software/System restart»}} |
Lo más importante es la dirección IP que te muestra, ya es un elemento más en tu red.
Abre un navegador de tu móvil y conéctate a la IP http://192.168.1.36
Configura Tasmota para que sepa como es tu dispositivo, en este caso Wemos D1 mini + DHT22
Configura D5 con el sensor AM2301 (DHT21) y ya lo tienes, los datos del sensor de temperatura son accesibles desde una página web que Tasmota crea para ti.
Si es la primera vez te metes en estos embrollos te pondrás más contento que un chaval con zapatos nuevos.
Ahora vamos a conectarnos con Home Assistant
Vas a configurar el cliente MQTT de Tasmota para que publique mensajes, en este caso la Temperatura Humedad y Punto de rocío (Dew point)
Para los nombres de los mensajes, utilizo nombreHardware_sensor en este caso WemosD1_temperatura. Usa tu propia nomenclatura, lo que mejor te venga.
Ahora toca forzar que Home Assistant, detecte el dispositivo, para ello nos vamos a la página de inicio de Tasmota y clic en Console
Tienes una pantalla similar a esta:
Donde pone Enter command, escribe SetOption19 1, clic en la tecla ENTER/INTRO de tu teclado. Esto activa el Autodescubrimiento en tu dispositivo.
Vamos a Home Assistant y si todo ha ido bien debe de haberse descubierto 1 dispositivo y al menos 4 entidades.
Aqui lo tienes
Si haces clic en el dispositivo Tasmota verás los resultados de tu trabajo
Hemos tocado de puntillas los comandos que se pueden ejecutar desde la consola de Tasmota. Hay decenas, en este enlace (comandos Tasmota) los puedes ver. Hacen de todo, desde poner una IP estática a configurar un servidor NTP sin escribir una línea de código.
Como muestra un botón, si te has fijado en la consola de Tasmota verás que el intervalo de envío de los mensajes MQTT de temperatura y humedad es de 5 minutos (300 seg), vamos a cambiarlo a cada 30 segundos
Este es el comando que debes de introducir en la consola:
teleperiod 30
Conclusiones sobre Tasmota
Que puedo decir, me ha gustado, sencillo de utilizar, la parte de Tasmota la puedes hacer completamente desde el móvil, te lo puedes llevar a donde quieras (que exista una red wifi claro) y configurar en pocos minutos.
Con los Wemos D1 mini y los zócalos (D1 shields) tienes la posibilidad de prototipar muy rápido y a muy bajo coste. Dispositivos que con el firmware de Tasmota y sin picar una línea de código los tienes funcionando en minutos.
Que quieres lanzarte a destripar dispositivos, a por al fabricante SONOFF, los tienes de todos los colores.
En la parte de los comandos de consola puedes y debes profundizar, es una manera de escribir código por medios de comandos que al fin y al cabo es más fácil que aprender c++.
Y por último, si has decidido casarte con Tasmota hasta que la muerte os separe, Tasmota Device Manager es una herramienta imprescindible para llevar un inventario de todos vuestros cacharros y de poder administrarlos desde una única consola de administración, esta chula. Te pide conectarte a tu Intermediario MQTT (la IP de tu Home Assistant) y con el mismo usuario que hemos creado en este proyecto clientemqtt, ya estás dentro y puedes ver los datos de tus dispositivos.
Ya está bien por hoy, ciao.
Gracias a Depositphotos por la cesión de las imágenes.