
MQTT IoT: el panel del eclipse del Lince, una práctica esencial: chisme 79 del Lince
Butan Hero llegó a la cueva del Lince con un mapa celeste bajo el brazo y cara de pocos amigos.
—Lince, quiero aprender astronomía y cada vez que miro al cielo me sale una nube. ¿Cómo voy a ver el eclipse del año que viene?
—Con datos —dijo el Lince de la Noche—. Pondré un sensor que mida la luz y la temperatura, y todo el mundo podrá verlo en directo.
—¿Y cómo viaja el dato del sensor hasta su casa? —preguntó la Gata Montesa—. Habrá que ensayarlo con el sol de cada día.
—Pues un cable muy largo.
—Un broker, Lince. Alguien reparte y cada uno recibe lo que le interesa. mqtt iot
Introducción MQTT IOT
El 2 de agosto de 2027 habrá un eclipse total de Sol visible desde el sur de España, muy cerca de Sierra Bermeja. Queremos que cualquiera pueda ver los datos en directo. Antes hay que ensayar la parte difícil: llevar un dato desde un sensor hasta un panel en internet.
En este chisme 79 montas las cuatro piezas de cualquier sistema de Internet de las Cosas: dispositivo, pasarela, nube y panel. Lo haces con MQTT, el protocolo más usado en IoT, y con una micro:bit V2 que mide luz, temperatura y ruido. Si no tienes micro:bit, un sensor simulado y un eclipse de 150 segundos te permiten hacerlo todo.
Qué es MQTT y por qué se usa tanto
En MQTT nadie habla con nadie directamente. Quien mide publica un mensaje en un tema y un servidor, el broker, se lo entrega a quien se haya suscrito. Un mensaje es solo un tema y un valor, por ejemplo montesteam/eclipse/lince-4k7/luz con el valor 182.
Los temas son jerárquicos y admiten comodines: + sustituye un nivel y # sustituye todos los que quedan. Así, montesteam/eclipse/+/luz es la luz de todas las estaciones. Puedes leer más en la web oficial de MQTT.
Qué hace la página
- Broker: eliges HiveMQ, EMQX o Mosquitto (públicos), uno propio o un broker simulado sin internet. No hace falta cuenta ni clave.
- Estación: la pasarela recoge las medidas, calcula la media de cada segundo y publica en los temas de luz, temperatura y ruido. Procesar antes de enviar ahorra tráfico.
- Panel: se suscribe a un filtro, muestra el último valor y las gráficas en directo, detecta el eclipse y permite descargar un CSV.
- Paquetes en directo: ves los paquetes MQTT reales (CONNECT, PUBLISH, SUBSCRIBE, SUBACK…).
La página trae el cliente MQTT escrito sin librerías, así que el protocolo no es una caja negra. En el chisme 23, la estación del tiempo, ya llevaste los datos de la micro:bit a una página. Ahora los llevas a la nube.
Funciones de MQTT que se prueban
- Comodines: un filtro con
+para recibir solo la luz. - Mensaje retenido: el broker guarda el último valor, y al reiniciar el panel aparece al instante.
- Testamento (last will): si la estación se corta sin avisar, el broker publica «offline» y el panel lo marca.
- QoS: los datos van con QoS 0 y el estado con QoS 1, con confirmación.
Con una micro:bit de verdad
Por cable USB es lo más fácil y no necesita extensiones. El Bluetooth también funciona, pero si lo usas hay tres cosas imprescindibles:
- Instala la extensión «bluetooth» en MakeCode (Extensiones → bluetooth) y acepta quitar la radio.
- En el engranaje, Configuración del proyecto, marca «No se requiere emparejamiento» antes de descargar el programa.
- Que nadie más tenga cogida la micro:bit. Cierra MakeCode y la app del móvil, y quítala de los dispositivos Bluetooth de Windows si aparece.
No pongas iconos ni texto en la pantalla de LEDs. La micro:bit mide la luz con esos mismos LEDs y los falsea. El programa por USB:
basic.forever(function () {
serial.writeLine("" + input.temperature() + "," + input.lightLevel() + "," + input.soundLevel())
basic.pause(500)
})
Y el programa por Bluetooth:
bluetooth.startUartService()
basic.forever(function () {
bluetooth.uartWriteLine("" + input.temperature() + "," + input.lightLevel() + "," + input.soundLevel())
basic.pause(500)
})
Si no conecta por Bluetooth, cierra Chrome del todo, desenchufa la micro:bit, quita «BBC micro:bit» (o «Dispositivo desconocido») de los dispositivos de Windows, pulsa reset y vuelve a probar.
Qué estamos midiendo realmente
La luz de la micro:bit no sale de un sensor de luz: la estima con sus LEDs, con valores de 0 a 255 aproximados. Y la temperatura es la del chip, no la del aire, y sube con el calor del propio procesador. Para el eclipse real habrá que usar sensores externos y calibrarlos. Medir no es medir bien.
Además, una nube también baja la luz. Un eclipse se distingue porque la luz baja de forma gradual y simétrica, y la temperatura baja con retraso. Con una sola variable no basta: es la diferencia entre correlación y causalidad.
Cuidado: el broker no pide contraseña
Marge The ThunderClown apareció con una sonrisa enorme: —¡Jajaja! A las doce del mediodía publicaré «luz = 0» en vuestro tema y toda la ciudad creerá que hay eclipse.
Tiene razón. En un broker público cualquiera que conozca tu tema puede leer tus datos y publicar datos falsos. Un servicio serio usa usuario y contraseña, TLS (la «s» de wss://) y listas de acceso. Por eso no se envían datos personales.
Para el aula
- Dibujad la arquitectura de vuestra estación y escribid qué protocolo une cada pieza.
- ¿Cuántos mensajes por segundo publica una estación y qué pasaría con mil estaciones?
- Diseñad un experimento para distinguir una nube de un eclipse con los datos del CSV.
- Comparad dos estaciones en el mismo sitio: ¿por qué no dan los mismos valores?
Retos
- Reto 1: lanza el eclipse simulado y supera las cinco misiones.
- Reto 2: cambia el tiempo de la media a 5 o 10 segundos y mira qué curva queda.
- Reto 3: publica con una micro:bit real.
- Reto 4: analiza el CSV en Python con pandas.
- Reto 5: escribe un cliente en Python con paho-mqtt que se suscriba a tu tema.
- Reto 6: monta tu propio broker (por ejemplo Mosquitto en una Raspberry Pi) y apunta la página a él.
Qué hemos aprendido
Un sistema IoT es una cadena: sensor, pasarela, nube y panel. MQTT lo resuelve con publicar, suscribirse y un broker. Y lo importante no es solo que el dato llegue, sino que sea fiable. Puedes ver el resto de la colección en los Chismes del Lince.



Etiqueta:AIDARAC, broker mqtt, eclipse, ies monterroso, Internet de las Cosas, iot, micro:bit, montesteam, mqtt

