Cuando un estudiante conecta un sensor al ESP32 y ve la temperatura cambiar en el celular, entre la placa y la pantalla hay un mensajero. En la gran mayoría de proyectos IoT ese mensajero se llama MQTT.
MQTT es un protocolo de mensajería: un conjunto de reglas para que dispositivos pequeños envíen y reciban datos por internet gastando muy poca energía y muy poco ancho de banda.
El problema que resuelve
La web normal funciona con HTTP: el navegador pregunta, el servidor responde y la conexión se cierra. Para leer un sensor cada segundo habría que preguntar cada segundo, con todo el peso de una petición web completa cada vez.
Un ESP32 con una batería y un WiFi escolar que se cae de vez en cuando necesita otra cosa: una conexión que se abra una vez, se mantenga ligera y permita enviar datos apenas existan. Eso es MQTT.
Las tres piezas
MQTT sigue un modelo llamado publicar / suscribir. Funciona como un tablero de anuncios del colegio:
- Publicador: quien pone el anuncio. Aquí, el ESP32 que mide la temperatura.
- Broker: el tablero. Un servidor que recibe todos los mensajes y los reparte. Nadie habla directamente con nadie; todo pasa por el broker.
- Suscriptor: quien lee el tablero. El dashboard, la app del celular o incluso otro ESP32.
La consecuencia práctica es grande: el sensor no necesita saber quién lo está mirando. Pueden ser uno o treinta estudiantes con el dashboard abierto, y el ESP32 envía el dato una sola vez.
Temas: la dirección de cada dato
Cada mensaje se publica en un tema (topic), una ruta de texto separada por barras, parecida a la dirección de una carpeta:
colegio/aula-3/clima/temperatura
colegio/aula-3/clima/humedad
colegio/aula-5/lampara/estado
Un suscriptor puede escuchar un tema exacto o usar comodines:
+reemplaza un nivel:colegio/+/clima/temperaturarecibe la temperatura de todas las aulas.#reemplaza todo lo que sigue:colegio/aula-3/#recibe todo lo que pase en el aula 3.
Calidad de servicio
MQTT deja elegir qué tan seguro debe ser el envío de cada mensaje. Se llama QoS y tiene tres niveles:
| Nivel | Garantía | Cuándo usarlo |
|---|---|---|
| QoS 0 | Se envía una vez, sin confirmación | Lecturas frecuentes de sensores: si se pierde una, llega otra en un segundo |
| QoS 1 | Llega al menos una vez (puede repetirse) | Alertas, como "la temperatura superó 30 °C" |
| QoS 2 | Llega exactamente una vez | Órdenes que no deben duplicarse, como un conteo o un pago |
Un ESP32 publicando
Así se ve, simplificado, un ESP32 que publica la temperatura con la librería PubSubClient de Arduino:
#include <WiFi.h>
#include <PubSubClient.h>
WiFiClient red;
PubSubClient mqtt(red);
void setup() {
WiFi.begin("RedDelColegio", "clave");
while (WiFi.status() != WL_CONNECTED) delay(500);
mqtt.setServer("broker.ejemplo.com", 1883);
}
void loop() {
if (!mqtt.connected()) mqtt.connect("esp32-aula3");
mqtt.loop();
float t = 24.6; // aquí iría la lectura del sensor
mqtt.publish("colegio/aula-3/clima/temperatura", String(t).c_str());
delay(2000);
}
Tres ideas en pocas líneas: conectarse al WiFi, conectarse al broker y publicar en un tema. El dashboard solo tiene que suscribirse a colegio/aula-3/clima/temperatura.
Seguridad en redes escolares
MQTT usa por defecto el puerto 1883, sin cifrar: cualquiera en la red podría leer los mensajes. Para uso real conviene el puerto 8883, con cifrado TLS, y un usuario y clave por dispositivo.
Si el colegio filtra el tráfico, pide al área de TI que autorice el puerto y el dominio del broker. Es el motivo más común de "en mi casa funciona y en el colegio no".
De los oleoductos al aula
MQTT nació en 1999, cuando Andy Stanford-Clark (IBM) y Arlen Nipper necesitaban vigilar oleoductos por enlaces satelitales lentos y caros. Por eso es tan ligero: fue diseñado para gastar lo mínimo posible en cada mensaje.
En 2014 se convirtió en estándar abierto de OASIS (versión 3.1.1), y en 2019 llegó la versión 5. Hoy lo usan desde sensores industriales hasta electrodomésticos y proyectos escolares.
En Alltime IoT, cada misión ya trae el firmware que publica en sus temas y un broker con TLS, así que el estudiante ve sus datos en el dashboard sin configurar nada de esto a mano. Entenderlo, eso sí, es lo que le permite después construir sus propios proyectos.


