Una de las primeras decisiones de un proyecto con varios ESP32 es cómo van a hablar entre ellos y con el mundo. Cada uno a internet por Wi-Fi, todos a un servidor por MQTT, entre ellos por ESP-NOW o por Bluetooth con el celular. La elección cambia el costo, el consumo, la fiabilidad y la complejidad de todo lo demás.
En esta guía te explico las opciones, qué es cada una y cuándo conviene, con ejemplos de cómo se combinan en un proyecto de domótica.
Dos preguntas distintas
Antes de comparar, separa dos cosas que suelen mezclarse:
- El medio: cómo viajan los bits por el aire. Wi-Fi, ESP-NOW, Bluetooth LE, Thread.
- El protocolo de mensajes: cómo se organizan los mensajes encima de ese medio. MQTT, HTTP, WebSocket o un formato propio.
MQTT no compite con ESP-NOW: MQTT funciona encima de una conexión de red (TCP/IP), normalmente por Wi-Fi. ESP-NOW es un medio con su propio formato de paquetes, sin TCP/IP. Por eso se pueden combinar, como verás más abajo.
Wi-Fi: para llegar a internet
El ESP32 se conecta a tu router como cualquier dispositivo. A partir de ahí puede hacer peticiones HTTP, abrir conexiones MQTT o WebSocket y hablar con cualquier servicio en la nube.
- A favor: llega a internet; usa protocolos estándar; el alcance es el de tu red.
- En contra: cada dispositivo necesita la contraseña de la red y ocupa un lugar en el router; conectar y mantener la conexión consume bastante energía; si usas TLS, cada conexión consume memoria.
ESP-NOW: de ESP32 a ESP32, sin router
ESP-NOW es un protocolo de Espressif para enviar mensajes cortos directamente entre ESP32, usando la radio Wi-Fi pero sin conectarse a ninguna red. Cada dispositivo se identifica por su dirección MAC.
- A favor: no necesita router ni contraseña; latencia de milisegundos; consumo bajo porque no hay conexión que mantener; funciona aunque se caiga el Wi-Fi de la casa.
- En contra: mensajes pequeños (250 bytes en la versión clásica); no garantiza la entrega, así que tienes que construir la confirmación; solo entre chips de Espressif; todos tienen que estar en el mismo canal de radio; máximo 20 dispositivos emparejados por cada ESP32 (menos si usas cifrado).
El detalle del canal es el que más problemas da: si un ESP32 está conectado al router, su canal es el del router, y los demás tienen que usar el mismo. Lo más simple es fijar el canal del router y usarlo en todos los nodos. Las opciones y el código completo, con confirmaciones, están en la parte 4 de la serie de domótica.
Bluetooth LE: para el celular y los sensores cercanos
Bluetooth Low Energy está pensado para intercambiar datos pequeños con muy bajo consumo a corta distancia.
- A favor: habla directamente con el celular, sin apps de red ni router; ideal para configurar un dispositivo o leer sensores con batería.
- En contra: alcance corto; para llegar a internet necesitas un intermediario (el celular o una pasarela); programar servicios y características BLE lleva su trabajo.
MQTT: mensajes por tópicos a través de un broker
MQTT es un protocolo de mensajería ligero que funciona sobre TCP/IP. En lugar de hablarse directamente, los dispositivos se conectan a un broker (un servidor intermediario) y:
- publican mensajes en un tópico, por ejemplo
casa/sala/luz; - se suscriben a los tópicos que les interesan y reciben lo que otros publican.
Tres conceptos que conviene conocer:
- QoS (calidad de servicio):
0envía una vez sin confirmar;1garantiza que llega al menos una vez;2, exactamente una vez. - Mensaje retenido: el broker guarda el último mensaje de un tópico y se lo entrega a quien se suscriba después.
- Última voluntad (LWT): un mensaje que el broker publica si el dispositivo se desconecta sin avisar.
Como broker puedes usar uno propio (por ejemplo, Mosquitto en un Raspberry Pi) o uno administrado en la nube. Un ejemplo administrado es AWS IoT Core, que además guarda el estado de cada dispositivo en un documento llamado Device Shadow. Lo explico en la parte 3 y en la guía de AWS IoT Core de este blog.
Comparación rápida
| Wi-Fi + HTTP/MQTT | ESP-NOW | Bluetooth LE | MQTT | |
|---|---|---|---|---|
| Qué es | Medio + protocolos de internet | Medio con protocolo propio | Medio + protocolo | Protocolo de mensajes |
| ¿Necesita router? | Sí | No | No | Necesita red y un broker |
| ¿Llega a internet? | Sí | No | Solo con intermediario | Si el broker está en internet |
| Latencia | Decenas de ms | Pocos ms | Decenas de ms | Depende de la red y del broker |
| Tamaño de mensaje | Grande | Pequeño | Pequeño | Grande |
| Consumo | Alto | Bajo | Muy bajo | El de la red debajo |
| Entrega garantizada | Con TCP | No: hay que construirla | Según el modo | Con QoS 1 o 2 |
Un patrón muy usado: la pasarela
En una casa con muchas luces, conectar cada ESP32 al Wi-Fi y a la nube es caro y frágil: cada uno necesita su certificado, su conexión TLS permanente y su lugar en el router. La alternativa es una pasarela (gateway):
- Un solo ESP32 (por ejemplo, un ESP32-S3) se conecta al Wi-Fi y a la nube por MQTT sobre TLS.
- El resto (ESP32-C3) hablan con él por ESP-NOW, sin Wi-Fi ni certificados.
- La pasarela traduce: recibe el estado deseado por MQTT y reparte órdenes cortas por ESP-NOW; recoge las confirmaciones y las publica.
Las ventajas son grandes: una sola conexión con la nube por casa, un solo certificado, costo en la nube que no crece con cada luz y nodos que siguen funcionando entre ellos si se cae internet. Las dos arquitecturas están comparadas en la parte 1 de la serie.
Cómo elegir
- Un solo dispositivo que habla con la nube: Wi-Fi + MQTT (o HTTP si solo envía datos de vez en cuando).
- Muchos dispositivos en un mismo lugar: pasarela con Wi-Fi + MQTT, y ESP-NOW para el resto.
- Dispositivos con batería que envían poco: ESP-NOW o BLE hacia una pasarela; evita mantener Wi-Fi activo.
- Configuración desde el celular: BLE, o un punto de acceso Wi-Fi temporal con un formulario web (lo explico en la parte 16).
- Compatibilidad con ecosistemas de domótica: Thread y Matter, con un ESP32-C6 o H2.
Preguntas frecuentes
¿Puedo usar ESP-NOW y Wi-Fi al mismo tiempo?
Sí, en el mismo ESP32, siempre que los demás dispositivos de ESP-NOW estén en el canal del router. Es lo que hace una pasarela típica.
¿MQTT o HTTP?
MQTT si el dispositivo tiene que recibir órdenes en tiempo real o envía datos con frecuencia: la conexión queda abierta y los mensajes son ligeros. HTTP si solo envía algo de vez en cuando y no necesita escuchar.
¿ESP-NOW es seguro?
Admite cifrado con una clave compartida entre los dispositivos emparejados. Sin cifrado, cualquiera cerca podría escuchar los mensajes, así que valida siempre de quién viene cada mensaje (por su MAC) y no envíes datos sensibles sin cifrar.
¿Qué alcance tiene ESP-NOW?
El mismo orden que el Wi-Fi de las placas, porque usa la misma radio: varias habitaciones en una casa normal. Las paredes gruesas, la antena de cada placa y las interferencias lo reducen.