¿Qué prefieres configurar o programar? Vaya pregunta, así, sin anestesia, a quemarropa. Esta y no otra es la base de este artículo sobre ESPHome y del anterior que escribí sobre Tasmota, va de justamente eso, de que tomes una decisión.
También este artículo trata, como te comenté en el artículo de Tasmota, de hacer una comparativa muy sencilla o light de como pasar de un prototipado sencillo y sin saber programar, a las posibilidades de configuración que nos ofrece Tasmota y en este caso ESPHome, no es una carrera, es más a nivel operativo, es decir, como alguien que está empezando se enfrenta a la duda de elegir uno u otro.
Veremos un ejemplo simple de un sensor de temperatura conectado a un ESP32 y enviaremos los datos vía MQTT a Home Assistant. El 90% de todo el trabajo lo haremos desde un fichero de configuración YAML.
Indice de contenidos
¿Qué es ESPHome?
Muy resumido, ESPHome es una herramienta que lee un fichero de configuración y crea un firmware personalizado que posteriormente puedes subir a tus ESP32 o ESP8266 con sus sensores conectados.
Léelo otra vez, porque eso es lo que es.
¿Qué es un fichero de configuración?
Es un fichero normal y corriente que puedes abrir con cualquier editor de texto, pero que tiene un formato especial, que se llama YAML. ¿Qué contiene? Datos serializados que un programa va a utilizar para construir algo, en nuestro caso un firmware. Si has tocado Home Assistant, sabes de lo que hablo en lo referente a YAML.
Cada dispositivo ESPHome tiene su fichero de configuración.
Ejemplo de fichero YAML
1 2 3 4 5 6 7 8 9 10 |
sensor: - platform: bme280 temperature: name: "BME280 Temperatura" pressure: name: "BME280 Presion" humidity: name: "BME280 Humedad" address: 0x77 update_interval: 60s |
¿Qué es un firmware?
Nos pasamos la vida subiendo firmware, es como se modifican los dispositivos domóticos, aunque sea una coma lo que varíe. Ya existen iniciativas para poder hacer actualizaciones, para por ejemplo, no tener que reiniciar los dispositivos y modificar solo lo que nos interesa, pero de momento, eso es el futuro.
¿Qué es lo que ESPHome puede hacer?
Hace tiempo le pregunté a un crack en estos temas y su respuesta fue: ¿Qué es lo que ESPHome no puede hacer? Queda poco margen para preguntar más. La verdad es que tiene una larga lista de sensores compatibles con ESPHome. Si haces clic en cualquier sensor, lo primero que vas a ver, es… un fichero YAML para copiar y pegar.
Y para rematar la jugada ESPHome fue adquirido por Nabu Casa que es la empresa que está detrás de Home Assistant, esto… no me mola mucho, puedes pensar que soy un poco mal pensado, pero me recuerda hace tiempo cuando Apple compró Logic (un secuenciador para música) y discontinuaron las versiones de Windows, es decir, me dejaron con el culete al aire. Veremos.
También tiene cosas buenas, la principal e innegable es que la integración con Home Assistant es perfecta y eso, los usuarios de Home Assistant lo agradecen.
¿Cómo se instala?
- Como cualquier complemento de Home Assistant.
- Nativamente a través de Python.
- Como una imagen Docker.
Las ventajas de ESPHome
Las ventajas de este tipo de herramientas es muy clara, con ESPHome no necesitas programar, no necesitas saber C++ o Python. Otras ventajas:
- Modo de trabajo local no necesitas de ningún servicio en la nube o similar. Se conecta localmente a tu controlador, por ejemplo Home Assistant o cualquier otro sistema que soporte MQTT, que es un protocolo que se ha convertido en un estándar en IoT.
- Posibilidad de modo de trabajo autónomo, puede trabajar con automatizaciones propias sin depender de un controlador como Home Assistant, como puedes intuir lo que esto provoca es, que aunque tu controlador no funcione, el dispositivo ESPHome seguirá haciendo sus funciones.
- Actualizaciones vía Wifi, en inglés over the air – OTA, esta funcionalidad viene por defecto y lo que se consigue es poder actualizar el dispositivo ESPHome en remoto desde una consola central. Imagínate que tienes 20 de estos dispositivos ESPHome y que quieres cambiarles la clave Wifi, es un verdadero atraso ir uno a uno con tu portátil a conectarte para subir un nuevo firmware.
- Soporte para una lista interminable de componentes, sensores, conmutadores, actuadores, etc.
- Muy buena documentación, aquí los desarrolladores se lo han currado y cada componente de ESPHome está perfectamente documentada.
- Es muy personalizable, no solo puedes crear tu firmware personalizado con ESPHome, puedes añadir tus propios componentes escritos en C++.
Componentes necesarios para usar ESPHome
Necesitas placas de desarrollo de la familia ESP32 y ESP8266. ESP32 es la evolución de ESP8266, duplica casi todos los valores de ESP8266, añadiendo más funcionalidades.
Comparativa:
ESP8266 | ESP32 | |
---|---|---|
MCU | Xtensa Single-core 32-bit L106 | Xtensa Dual-Core 32-bit LX6 with 600 DMIPS |
802.11 b/g/n Wi-Fi | Hasta 72,2 Mbps (2,4 Ghz) | 802.11n hasta 150 Mbps (2,4 Ghz) |
Bluetooth | X | Bluetooth 4.2 and BLE |
Typical Frequency | 80 MHz | 160 MHz |
SRAM | X | ✓ |
Flash | X | ✓ |
GPIO | 17 | 34 |
Hardware /Software PWM | No / 8 channels | No / 16 channels |
SPI/I2C/I2S/UART | 2/1/2/2 | 4/2/2/2 |
ADC | 10-bit | 12-bit |
Ethernet MAC Interface | X | ✓ |
Sensor Tactil | X | ✓ |
Sensor de Temperatura | X | ✓(old versions) |
Sensor effecto Hall | X | ✓ |
Temperatura de trabajo | -40ºC to 125ºC | -40ºC to 125ºC |
Precio | $ (3$ – $6) | $$ ($6 – $12) |
- ESP32 – en este caso el modelo exacto es ESP32-WORM-32
Como siempre tienes opciones que dependen de la prisa que tengas y lo que quieras arriesgar Amazon y AliExpress.
- Sensor de temperatura DHT22
También necesitarás algún sensor, yo te propongo el DHT22 un sensor de temperatura. En Amazon o AliExpress
Este sensor DHT22 es compatible y lo puedes ver en la web de ESPHome. Si entras puedes ver el fichero de configuración, en formato YAML claro. Tenlo a mano.
- Una placa de pruebas y unos cables.
- Y por supuesto, el controlador Home Assistant.
Se puede hacer sin Home Assistant, de manera autónoma o dependiendo del protocolo que utilices. Si es MQTT podrás conectarlo a cualquier controlador que hable este protocolo, es decir, a todos.
Ha habido muchos cambio en la integración entre ESPHome y Home Assistant. Como verás en este artículo no puede ser más fácil.
Diagrama de conexión
Instalación ESPHome en un ESP32
Para todo este proceso vas a ir de la mano de Home Assistant, más fácil imposible, de verdad.
Este va a ser tu camino:
- El ejemplo de prototipado anterior con el DHT22.
- Home Assistant instalado, no es obligatorio, puedo decir sin equivocarme que ESPHome está hecho para trabajar con Home Assistant. Os dejo un enlace para ver la instalación de Home Assistant.
- Instalación de ESPHome a través de los complementos de Home Assistant, también se puede instalar como una imagen Docker.
- Una vez instalado vamos a utilizar un panel web para crear las configuraciones y poder descargar tu firmware personalizado.
Integración en Home Assistant
Paso 1. El prototipado
Tres cables GND, 3.3 v y datos. Un cuarto que solo utilizo para trasladar la alimentación de 3.3 v
Te lo recuerdo, vamos a seguir más o menos la práctica del artículo sobre Tasmota para que te puedas hacer aunque sea a muy alto nivel una idea de ambos, y porque no, tomar una decisión de cuál elegir.
Paso 2. Instalación ESPHome en Home Assistant
Abrimos nuestro Home Assistant y a través de la Tienda de Complementos buscamos ESPHome
Clic en INSTALAR
Marcamos VIGILANCIA y MOSTRAR EN LA BARRA LATERAL. Finalmente, clic en INICIAR el complemento ESPHome
Clic en ABRIR LA INTERFAZ WEB
Se abre la pantalla de bienvenida invitándote a añadir un nuevo dispositivo, pero primero, conecta tu prototipo a tu ordenador mediante el cable USB.
Clic en NEW DEVICE
Te avisan que debes de conectar tu dispositivo a tu ordenador clic en CONTINUE
Esta pantalla es importante, defines un nombre para este dispositivo, que debe de ser algo descriptivo:
sensor_temperatura_ESP32
Y las credenciales de tu red Wifi
Clic en NEXT
En esta pantalla elegimos el tipo de placa, si haces clic en PICK SPECIFIC BOARD, verás que aparecen alrededor de 200 opciones. Opciones basadas en ESP32 y ESP8266.
De momento vas a elegir la opcion de ESP32
El panel te indica que el fichero de configuración ya está creado y te pregunta si quieres instalarlo en tu dispositivo, clic en INSTALL
En esta pantalla tienes 4 opciones, como nuestro prototipo es nuevo y lo tenemos conectado a nuestro PC, solo tenemos dos opciones recomendables.
Plug into this computer donde directamente subes desde este panel el código a tu dispositivo.
Manual download esta es la opción a la antigua usanza, te descargas el firmware a tu PC y después con alguna de las herramientas existentes en el mercado, subir el firmware a tu dispositivo. Esta opción es la que vamos a utilizar, clic en Manual download
Las distintas posibilidades:
Lo que ves en la pantalla es la compilación a partir de tu fichero de configuración y el resultado final es un fichero con el nombre que le diste a tu dispositivo sensor-temperatura-esp32.bin que se descarga automáticamente en tu PC.
Estas son todas las librerías que te instalará.
Y finaliza descargando el fichero sensor-temperatura-esp32.bin a tu PC. 890 KB de tamaño, pequeño no es.
Subimos el fichero .bin a tu ESP32 con nuestra herramienta que será la misma que utilicé en el artículo de Tasmota aqui tienes el enlace ESP-Flasher
Seleccionas el Serial Port, eliges el Firmware fichero .bin que te acabas de descargar y clic en Flash ESP
Y ya tienes conectado tu ESP32 a tu red, como puedes ver en la Consola
Si nos vamos a Home Assistant en la opción de ESPHome veremos que ya tenemos nuestro dispositivo ONLINE, recuerda el nombre que le pusimos sensor-temperatura-esp32
Si pulsas en EDIT verás el fichero YAML, que es en lo que se base el fichero sensor-temperatura-esp32.bin que hemos subido antes al ESP32
Como ves no hay que poner codigo alguno, son configuraciones que luego el sistema va a saber compilarlo en un codigo ejecutable en los ESPxx
- name: el nombre del sensor
- esp32: la placa descubierta
- logger: activación de los registros logs
- api: para que se pueda conectar con Home Assistant
- ota: funciona para actualizar vía wifi próximas actualizaciones y nos olvidamos de los cables
- wifi: la configuración wifi de nuestro entorno, no se visualiza por seguridad.
- ap: Access Point wifi local para poder conectarnos si el acceso wifi anterior no funciona
Ahora nos vamos a la página del sensor DHT22 ver en la web de ESPHome. Buscamos el fichero de configuración YAML y lo pegamos en sensor-temperatura-esp32.yaml. Aprovecho e hispanizo el título de los mensajes, la frecuencia de muestreo y el pin de datos del DHT22.
Conectando el DHT22 al ESP32 en la página clic en INSTALL
Al pulsar en INSTALL te vuelve a aparecer la pantalla de las distintas modalidades para subir un firmware a un ESP, esta vez Wireleessly (OTA vía WIFI) es nuestra opción, ya que nuestro dispositivo esta ONLINE como viste anteriormente.
Crea el fichero .bin para que con la función OTA (vía wifi) actualice tu ESP32
Si haces clic en LOGS de tu dispositivo sensor-temperatura-esp32 tienes ya a tu disposición todos los datos de temperatura y humedad
Para que nos envíe la misma información, pero vía MQTT añadimos estas líneas, acordaros que ya configuramos en el artículo de Tasmota un usuario para el envío de mensajes en Home Assistant, será el mismo: clientemqtt
Vuelve a pulsar en INSTALL para subir el nuevo el firmware con los cambios.
Una vez subido, clic en Configuración y Integraciones y ves que ahora tienes dos dispositivos MQTT descubiertos
Clic en 2 Dispositivos y ya aparece junto al anterior dispositivo del artículo de Tasmota
Clic en sensor-temperatura-esp32 y ahí lo tienes, el dispositivo con los datos de temperatura y humedad. Si quieres añadirlo a tu panel, simplemente clic en AÑADIR A LOVELACE
Conclusión sobre ESPHome
Bueno, ¿Cuál te ha parecido más interesante? ¿Tasmota o ESPHome? Interesante debate, aunque yo creo que existe otro debate anterior y es a nivel protocolo, ¿MQTT o ESPHome API?. Es complicado, pero yo no tengo dudas, prefiero MQTT, ¿por qué?
En mi caso es por estandarizar protocolos, trabajo con Z-wave, Zigbee y todo lo que se sale de esos dos protocolos es MQTT, ya sea de Tasmota, ESPHome, o una Raspberry Pi. MQTT se ha convertido en un estándar para el envío de información y órdenes en IoT.
Si entiendes y controlas este protocolo habrás dado un paso de gigante en este mundillo. Créetelo.
En el caso de ESPHome, es verdad que la API tiene más ventajas sobre MQTT. Es vuestra elección.
Con estos dos artículos he querido acercaros a estas dos herramientas, con una base similar, un ESPxx + un sensor DHT22. Espero haberlo logrado.
Muchas gracias y buena elección.
Gracias a Depositphotos por la cesión de las imágenes.