Comunicación MQTT entre ESP8266 y ESP8266
En este tutorial, cubriremos lo siguiente:
- Cómo habilitar la comunicación bidireccional entre dos ESP8266 utilizando MQTT.
- Escenario de ejemplo: usar un botón o interruptor conectado a ESP8266 #1 para controlar un LED conectado a ESP8266 #2 mediante MQTT.

Hardware Requerido
| 2 | × | ESP8266 NodeMCU | |
| 2 | × | Cable Micro USB | |
| 1 | × | (Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266 | |
| 1 | × | (Recomendado) Divisor de Alimentación para ESP8266 Tipo-C |
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca de ESP8266 y MQTT
Tenemos un tutorial detallado sobre cómo usar ESP8266 con MQTT aquí:
Comunicación entre dos ESP8266 vía MQTT
Dos placas ESP8266 pueden comunicarse entre sí usando un servidor MQTT. Si prefieres una comunicación directa entre dos ESP8266 sin depender de un servidor MQTT, consulta el tutorial sobre la comunicación TCP Cliente/Servidor entre ESP8266.
Cuando ESP8266 #1 y ESP8266 #2 intercambian datos a través de un broker MQTT:
- Ambos ESP8266 se conectan al broker MQTT.
- Para permitir que ESP8266 #2 envíe datos a ESP8266 #1:
- ESP8266 #1 se suscribe a un tema, como: esp8266-1/data.
- ESP8266 #2 puede transmitir datos a ESP8266 #1 publicándolos en el tema al que ESP8266 #1 está suscrito.
- De manera similar, para permitir que ESP8266 #1 envíe datos a ESP8266 #2:
- ESP8266 #2 se suscribe a un tema, como: esp8266-2/data.
- ESP8266 #1 puede enviar datos a ESP8266 #2 publicándolos en el tema al que ESP8266 #2 está suscrito.
Al seguir este enfoque, dos ESP8266 pueden intercambiar datos bidireccionalmente.
Ejemplo de caso de uso
Vamos a realizar la siguiente aplicación: Un botón o interruptor conectado a ESP8266 #1 controla un LED conectado a ESP8266 #2 a través de MQTT.

Como se mencionó arriba, hay algunos protocolos de aplicación que podemos usar. En este ejemplo, para simplificarlo, definiremos un protocolo por nosotros mismos (un protocolo definido por nosotros mismos).
Cómo funciona
Definamos un protocolo sencillo:
- Tanto ESP8266 #1 como ESP8266 #2 se conectan a un broker MQTT (servidor MQTT).
- Para ESP8266 #1:
- ESP8266 #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 ESP8266 #2:
- ESP8266 #2 se suscribe al mismo tema.
- Si ESP8266 #2 recibe un mensaje MQTT con una carga útil de 1, activa el LED.
- Si ESP8266 #2 recibe un mensaje MQTT con una carga útil de 0, desactiva el LED.
- ESP8266 #1 - Diagrama de cableado entre ESP8266 y botón
- ESP8266 #2 - Diagrama de cableado entre ESP8266 y LED
Diagrama de cableado

This image is created using Fritzing. Click to enlarge image
Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

This image is created using Fritzing. Click to enlarge image
Comunicación entre dos ESP8266 mediante MQTT
Código ESP8266 #1
Código ESP8266 número 2
Pasos R\u00e1pidos
Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:
- Consulta el cómo configurar el entorno para ESP8266 en Arduino IDE tutorial si es la primera vez que usas ESP8266.
- Conecta los componentes tal como se muestran en el diagrama.
- Conecta la placa ESP8266 a tu computadora usando un cable USB.
- Abre Arduino IDE en tu computadora.
- Elige la placa ESP8266 correcta, como (p. ej. NodeMCU 1.0 (Módulo ESP-12E)), y su puerto COM correspondiente.
- Conecta un botón o interruptor a ESP8266 #1
- Conecta un LED a ESP8266 #2
- Abre Arduino IDE (llamado Arduino IDE #1)
- Abre otra ventana de Arduino IDE (llamada Arduino IDE #2) haciendo clic en el icono de Arduino IDE en tu PC (¡importante!())
- Haz clic en el icono Gestor de bibliotecas en 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 caja de búsqueda, luego encuentra la biblioteca de botones de ArduinoGetStarted.
- Haz clic en el botón Instalar para instalar la biblioteca ezButton.

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