Comunicación MQTT de ESP32 a ESP32
En este tutorial, cubriremos los siguientes temas:
- Comunicación bidireccional entre dos ESP32 usando MQTT.
- Ejemplo de aplicación práctica: Usar un botón o interruptor conectado a ESP32 #1 para controlar un LED conectado a ESP32 #2 mediante MQTT.

Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca de ESP32 y MQTT
Tenemos un tutorial detallado sobre cómo usar ESP32 con MQTT aquí:
Comunicación entre dos ESP32 mediante MQTT
Dos placas ESP32 pueden comunicarse entre sí a través de un servidor MQTT. Si desea que se comuniquen directamente sin usar un servidor MQTT, consulte el tutorial sobre la comunicación TCP entre ESP32 y ESP32 (Cliente/Servidor).
Cuando ESP32 #1 y ESP32 #2 intercambian datos a través de un broker MQTT:
- Ambos ESP32s se conectan al broker MQTT.
- Para permitir que ESP32 #2 envíe datos a ESP32 #1:
- ESP32 #1 se suscribe a un tema, por ejemplo: esp32-1/data.
- ESP32 #2 puede enviar datos a ESP32 #1 publicando los datos en el tema al que ESP32 #1 está suscrito.
- Del mismo modo, para que ESP32 #1 envíe datos a ESP32 #2:
- ESP32 #2 se suscribe a un tema, por ejemplo: esp32-2/data.
- ESP32 #1 puede enviar datos a ESP32 #2 publicando los datos en el tema al que ESP32 #2 está suscrito.
Siguiendo este método, dos ESP32 pueden intercambiar datos de forma bidireccional.
Ejemplo de caso de uso
Realicemos la siguiente aplicación: un botón/conmutador conectado a ESP32 #1 controla un LED conectado a ESP32 #2 mediante MQTT.

Como se mencionó anteriormente, hay algunos protocolos de aplicación que podemos usar. En este ejemplo, para simplificar, definiremos un protocolo por nosotros mismos (un protocolo autodefinido).
Cómo funciona
Definamos un protocolo sencillo:
- Tanto ESP32 #1 como ESP32 #2 se conectan a un broker MQTT (servidor MQTT).
- Para ESP32 #1:
- Publica un mensaje MQTT en un tema específico cada vez que cambia el estado de un interruptor.
- Cuando el botón/interruptor se enciende, la carga útil del mensaje MQTT se establece en 1.
- Cuando el botón/interruptor se apaga, la carga útil del mensaje MQTT se establece en 0.
- Para ESP32 #2:
- Se suscribe al mismo tema.
- Si ESP32 #2 recibe un mensaje MQTT con una carga útil de 1, enciende un LED.
- Si ESP32 #2 recibe un mensaje MQTT con una carga útil de 0, apaga el LED.
- ESP32 #1 - Diagrama de cableado entre ESP32 y botón
- ESP32 #2 - Diagrama de cableado entre ESP32 y LED
Diagrama de cableado

This image is created using Fritzing. Click to enlarge image
Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

This image is created using Fritzing. Click to enlarge image
Comunicación entre dos ESP32 mediante MQTT
Código ESP32 #1
Código ESP32 #2
Pasos R\u00e1pidos
- Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
- Abre dos IDE de Arduino en tu PC.
- Conecta un botón/conmutador a ESP32 #1
- Conecta un LED a ESP32 #2
- Abre el Administrador de Bibliotecas haciendo clic en el icono de la barra de navegación izquierda de Arduino IDE
- Escribe MQTT en la caja de búsqueda, luego busca la biblioteca MQTT de Joel Gaehwiler.
- Haz clic en el botón Instalar para instalar la biblioteca MQTT.

- Escribe ezButton en la barra de búsqueda, luego encuentra la biblioteca de botones de ArduinoGetStarted
- Haz clic en el botón Instalar para instalar la biblioteca ezButton.

- Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module).
- Conecta ESP32 #1 al PC mediante un cable USB y selecciona el puerto COM de ESP32 #1 en Arduino IDE #1
- Conecta ESP32 #2 al PC mediante un cable USB y selecciona el puerto COM de ESP32 #2 en Arduino IDE #2
- Copia el código de ESP32 #1, pégalo en Arduino IDE #1 y guárdalo (con nombre ESP32-1)
- Copia el código de ESP32 #2, pégalo en Arduino IDE #2 y guárdalo (con nombre ESP32-2)
- Reemplaza la información de WiFi (SSID y contraseña) en ambos códigos con la tuya.
- Reemplaza la dirección del broker MQTT en ambos códigos (nombre de dominio o dirección IP).
- Carga el código de ESP32 #1 a ESP32 #1
- Carga el código de ESP32 #2 a ESP32 #2
- Abre el Monitor Serial en Arduino IDE #1
- Abre el Monitor Serial en Arduino IDE #2
- Mantén presionado el botón en ESP32 #1; observa el estado del LED en ESP32 #2 (ENCENDIDO)
- Suelta el botón en ESP32 #1; observa el estado del LED en ESP32 #2 (APAGADO)
- Presiona, mantén presionado y suelta el botón varias veces.
- Ver la salida en ambos Monitores Serial
- Monitor Serial de ESP32 #1
- Monitor de serie del ESP32 #2