Mucha gente habla de los ESP8266 ESP32 y la domótica libre pero muy pocos saben porqué, a día de hoy, hasta mi hija de 10 años puede programar el microcontrolador que viene dentro de dispositivos domóticos como los Shelly o los Sonoff.
Y de eso es de lo que voy hablar en este artículo, de los microcontroladores y de cómo hemos llegado hasta el punto donde tú, yo o tu cuñado Mariano podemos programar o modificar el código que hay dentro de estos dispositivos domóticos.
Aunque puede que al oír la palabra microcontrolador te apetezca más conectar el cerebro a la mesilla de noche que seguir escuchando, eso no evita que en tu casa, y en la de tu cuñado Mariano, quizás haya más microcontroladores que libros.
Y esto es debido a que muchos aparatos eléctricos como el satisfyer o la tele de 55 pulgadas, utilizan uno o varios de estos chips programables para funcionar.
Son los encargados de alegrarte el día porque gracias a ellos, cuando pulsas un botón, los aparatos hacen cosas.
Y hasta no hace mucho, programar un microcontrolador era un privilegio alcance de académicos, ingenieros y mentes preclaras.
Pero todo esto cambió cuando en el 2005 irrumpió Arduino en el mercado democratizando el uso de los microcontroladores.
De cómo se pasó de Arduino a poder programar nuestros propios dispositivos domóticos utilizando los ESP8266 ESP32 es de lo que voy a hablar en este artículo.
Indice de contenidos
Orígenes del ESP8266 ESP32
Para saber lo que ocurrió hay que remontarse hasta el año 2014 porque aparte de que Don Juan Carlos I abdica, muere la Duquesa de Alba y España hizo el ridículo en el mundial de Brasil, ese mismo verano salió al mercado un módulo cuyo nombre era digno de un droide de la saga Star Wars, ESP-01.
Irrumpió en Aliexpress sin hacer mucho ruido de la mano de Ai-Thinker aunque rápidamente se hizo popular entre todos aquellos que llevábamos algún tiempo cacharreando con Arduino.
Esto fue debido a que el cerebro de ese módulo era un ESP8266, un SoC o microcontrolador fabricado por Espressif, una empresa china emergente.
Pero si se puso en el ojo de mira de muchos makers fue por una características que lo hacía totalmente diferente, la capacidad de conectarse a una red WiFi.
Porque hasta aquel entonces, gracias a Arduino pudimos hacer proyectos increíbles como robots hexápodos, estaciones metereológicas e incluso neveras capaces de seguirte como un perrito faldero.
Aunque todo se reducía a un montón de componentes conectados a un microcontrolador con la única capacidad de comunicación del puerto serie o, en el mejor de los casos, con un shield Ethernet.
A ver, poder leer un sensor de temperatura y mostrar los datos en la pantalla de un ordenador ya era algo flipante, pero hacer lo mismo y poder enviar los datos de forma inalámbrica a un servidor situado en la otra parte del planeta era algo futurista.
Y el ESP-01, la primera versión que incluía un ESP8266, era el Santo Grial de los objetos conectados, un tema que hasta entonces no daba para mucho más que charlas inspiradores sobre el IoT, casas inteligentes y ciudades conectadas.
Así que muchos decidimos adquirir nuestros primeros ESP-01, todavía lo guardo en el armario de los cacharros.
Sin embargo, existía un pequeño problema que hizo que muchos de nosotros lo dejáramos metido en un cajón durante algún tiempo.
Me refiero al hecho de la comunicación con el microcontrolador porque en las primeras versiones del módulo era necesario utilizar el conjunto de comandos Hayes también conocidos como los putos comandos AT.
Y aunque este conjunto de comandos se utilizaba desde hacía mucho tiempo y era un estándar abierto para configurar y parametrizar los antiguos módems, era de todo menos intuitivo.
A ver, si Arduino había democratizado el uso de los microcontroladores este módulo era una barrera que ha muchos nos costó cruzar.
Y así pasó, cientos de módulos cogiendo polvo en las profundidades de un cajón.
Pero, ¿Qué pasó para que todos esos ESP8266 volvieran a ver la luz?
ESP8266 ESP32 y Arduino
Después de más de un año con el ESP-01 en el mercado y el ESP8266 cogiendor fuerza, en abril de 2015 un ruso llamado Ivan Grokhotkov empezó a investigar cómo hacer que la comunicación con los ESP8266 fuera más sencilla.
A ver, que puede que pienses que los comandos AT son igual de difíciles que le Klingon y no es eso, lo que pasa es que Arduino había puesto las cosas muy fáciles y estos malditos comandos lo único que hacían era complicarnos la vida.
E Ivan se dió cuenta de esto y de ahí surgió la librería ATproto, un primer intento para que la comunicación entre un Arduino y los ESP8266 ESP32 fuera más accesible.
La función de esta librería era aportar una capa por encima donde ya no era necesario lidiar directamente con los comandos AT porque con unas simples llamadas a la librería era más que suficiente.
Eso sí, los comandos AT seguían dando por culo por debajo.
Viendo que todavía no era lo suficientemente sencillo, el siguiente paso fue desarrollar una API para por fin olvidarse de los dichosos comandos. Fue un pasito más.
Pero quizás el paso más importante que dió Ivan y por el que hoy tú, yo y tu cuñado Mariano podemos modificar el código de los dispositivos domóticos fue cuando decidió comenzar con el desarrollo de lo que hoy se conoce como ESP8266 core for Arduino.
Básicamente lo que hizo fue utilizar la misma plataforma de Arduino que ya permitía programar microcontroladores del fabricante ATmel de una forma ridículamente sencilla y adaptarlo para programar los ESP8266.
Ojo a esto que es importante, porque a partir de ese momento podías programar un microcontrolador con la capacidad de conectarse a una red WiFi como el ESP8266 utilizando el mismo código y las mismas herramientas que Arduino.
A ver, esto tiene que quedar muy claro, a grandes rasgos una placa de Arduino y una placa basada en un ESP8266 ESP32 son exactamente iguales. Si olvidamos las capacidades WiFi de esta última, las diferencias son las mismas que puede haber entre Arduino UNO, Arduino MEGA o Arduino Nano.
Me refiero a que puede variar el número de pines, la potencia de cómputo y el tamaño, pero a todos los efectos el código para encender un LED (o diez) es exactamente el mismo en un ESP8266 ESP32 y en un Arduino si no tenemos en cuenta la numeración de los pines.
Es más, gracias a esto hoy puedes utilizar el mismo entorno de desarrollo o IDE de Arduino para trabajar indistintamente con una placa u otra.
Y esto es lo que realmente hizo que las reglas del juego cambiaran por completo porque si Arduino democratizó el acceso a los microcontroladores, el ESP8266 ESP32 democratizó el campo de los objetos conectados, el IoT y la domótica.
A partir de ese momento una horda de makers se lanzaron a Aliexpress a comprar todo aquello que oliera a ESP8266 y los fabricantes, que no son tontos, comenzaron a sacar placas con este nuevo microcontrolador al mercado.
Entre ellas las dos más representativas, NodeMCU y Wemos. Sin duda alguna, los buques insignia de los ESP8266.
Fue una época donde, los que tuvimos la suerte de estar en primera fila, disfrutamos mucho porque pudimos ver proyectos de todo tipo.
Porque ahora no solo podías hacer un robot hexápodo, ahora lo podías controlar desde el móvil tumbado en la playa.
O crear una estación meteorológica para almacenar los datos en un servidor en la nube y mostrar información en tiempo real en una tablet.
O que la nevera te pudiera seguir como un perrito faldero pero que llevara un registro de la bebida y que si no queda mucha cerveza, pueda añadirla a la lista de la compra.
Cualquier cosa que necesitara enviar datos a través de Internet, a partir de ese momento, era mucho más fácil, accesible y económico.
¿Y qué tiene que ver todo esto con la domótica?
Pues ahora verás…
ESP8266 ESP32 y la domótica libre
Después de poner el cocido a hacer chup chup en el puchero con sensores, placas capaces de conectarse a las redes WiFi y la comunidad maker on fire, hubo una empresa que se percató del potencial que tenían los ESP8266 en el sector domótico.
Esta empresa se llama Itead y fue la primera, que yo sepa, en comercializar un dispositivo domótico en cuyo interior había un ESP8266.
Este dispositivo se llamaba Sonoff Basic y vio la luz en el 2016. Todavía tengo alguno funcionando en casa.
Se trataba de un dispositivo domótico muy sencillo que contaba con un relé de contacto seco conectado a un ESP8266 y al cual podías conectar fácilmente cualquier aparato eléctrico como una lámpara, una lavadora o un ventilador para controlarlo.
Y gracias a la capacidad de conexión de este microcontrolador, cualquier aparato al que estaba conectado el relé Sonoff Basic lo dotaba de conectividad inalámbrica.
Aparte, desarrollaron su propia plataforma en la nube, eWeLink, que constaba de un servidor y una aplicación móvil. Esto permitía que cualquier humanoide pudiera controlar el relé desde cualquier parte del mundo.
A ver, esto no era ninguna novedad porque por aquel entonces ya había productos que hacían lo mismo en el mercado, la novedad es que estos dispositivos utilizaban un ESP8266 ESP32 y los de Itead, que no son tontos, dejaron accesibles los pines para que cualquier tarado mental pudiera cargar su propio código.
Porque como hemos visto antes, gracias a que Ivan hizo compatible el ESP8266 con la plataforma de Arduino, cualquiera de nosotros podía cargar su propio programa a los dispositivos Sonoff y conectarlos a su propia nube o su propio servidor.
Y gracias a esto surgió lo que se conoce a día de hoy como la domótica libre, es decir, una domótica donde tus dispositivos no dependen de los fabricantes ni de sus servidores.
Porque dentro llevan un microcontrolador compatible con Arduino como los ESP8266 ESP32, este último es la siguiente versión que también es totalmente compatible con la plataforma de Arduino.
Y como viene siendo normal, la gente no se pudo quedar quieta y empezaron a surgir frameworks como ESPurna, Tasmota o ESPHome que no son más que programas o códigos escritos en el lenguaje de Arduino y que son compatibles con los ESP8266 ESP32.
La idea detrás de todos estas herramientas es que no tengas que programar nada porque los dispositivos como los Sonoff, son dispositivos cerrados, es decir, que el relé siempre está conectado al mismo pin y los pulsadores, si es que los tiene, también.
Por lo tanto, todos los Sonoff Basic del mercado utilizan el mismo pin y de esta forma se pudo estandarizar el firmware o programa para que funcione de la misma forma en todos los dispositivos.
Esta es la razón por la que cuando cargas el firmware de Tasmota tienes que configurarlo diciendo qué modelo de dispositivo estás utilizando, para indicar los pines donde está conectado el relé, el sensor o el componente que tenga dentro ese dispositivo.
Y aunque Itead fue de las primeras en poner la carne en el asador, luego vinieron otras empresas como Shelly, Tuya (en sus primeras versiones) o Athom que inundaron el mercado con dispositivos domóticos basados en el ESP8266 ESP32.
Después de esto vino Home Assistant y el resto es historia.
Dispositivos domóticos independientes
A día de hoy, si un dispositivo domótico tiene la capacidad de conectarse a la red WiFi de tu casa, la única forma de hacerlo independiente es cambiando el código que lleva dentro y sustituirlo por el de Tasmota, ESPurna o ESPHome.
Y la única posibilidad que existe es que utilice un ESP8266 ESP32. Si no utiliza uno de estos microcontroladores no vas a poder hacer que sea independiente o por lo menos, no vas a poder hacerlo utilizando estos frameworks.
Por eso es importante que antes de comprar cualquier dispositivos investigues si este puede ser independiente o no y, a día de hoy, la mejor opción es que tenga un ESP8266 ESP32 dentro.
Si tienes dudas, en la página Templates Blakadder puedes ver una recopilación de más de 2.500 dispositivos que pueden ser independientes.
Hay de todo, desde bombillas hasta enchufes pasando por estaciones metereológicas o termostatos.
Luego es cuestión de elegir entre uno de los frameworks aunque mis favoritos son Tasmota y ESPHome.