IoT (Internet of Things)
En este apartado explicaremos como tener un sistema compartiendo información gobernado a través de protocolo MQTT (IoT Internet of Things) y programado con steamakersblocks. En nuestro caso el sistema será la placa ESP32 STEAMakers.
Se trata de tener un receptor de cansat que publique la información en forma de (temas, valor) a un broker de IoT, desde el broker pasa la información a una página web creada con IA que se suscribe a los temas con la información mandada por el receptor de cansat.

¿Qué es MQTT?
MQTT (Message Queuing Telemetry Transport) es un protocolo de comunicación que permite que los dispositivos hablen entre sí de forma ligera y rápida, ideal para el Internet de las Cosas (IoT). Las comunicaciones funcionan entre dispositivos funcionan mediante publicaciones de mensajes con temática y valores y subscriciones a los mismos de otros dispositivos que lo reciben y procesan.
¿Que es mqtt?: por Luis llamas
¿Qué es un servidor o broker mqtt?
Un MQTT Broker es el corazón de cualquier red basada en el protocolo MQTT (Message Queuing Telemetry Transport). Imaginalo como un servidor central o un "director de orquesta" que se encarga de recibir los mensajes de unos dispositivos y entregarlos a otros.
A diferencia del modelo tradicional donde un cliente habla directamente con un servidor (como cuando entras a una web), en MQTT los dispositivos nunca hablan entre sí directamente. Todo pasa por el broker.
¿Cómo funciona? (El modelo Publicación/Suscripción)
El broker utiliza un sistema llamado Pub/Sub. Aquí no hay direcciones IP fijas entre dispositivos, sino "Temas" (Topics).
- Publicadores: Un dispositivo (ej. un sensor de temperatura) envía un dato al broker bajo un tema específico, como casa/salon/temperatura.
- Suscriptores: Otros dispositivos (ej. una app en tu móvil o una base de datos) le dicen al broker: "Avisame cuando haya novedades en casa/salon/temperatura".
El Broker: Recibe el mensaje del publicador y lo reenvía instantáneamente a todos los que estén suscritos a ese tema.
Brokers disponibles y gratuitos
Como servicio gratuito de broker vamos a usar los de hivemq, usaremos los siguientes servidores en función si son para la placa o para un panel de control web:
| Componente | Servidor | Puerto |
| panel web | wss://broker.hivemq.com/mqtt | 8884 |
| placa | broker.hivemq.com | 1883 |
Las configuraciones son sin usuario predefinido, anónimo.

Programas con datos en formato JSON texto y receptor con IoT
Tenemos un emisor compuesto por una ESP32 STEAMakers con módulo LoRa, pantalla oled, sensor BMP280, sensor MPU6050, sensor DHT22 y GPS. Este debe recoger y enviar datos cada segundo de: tiempo transcurrido, latitud, longitud, altitud (bmp280), presión, temperatura (bmp280), humedad, y aceleración en eje Z. El receptor está compuesto por ESP32 STEAMakers con modulo LoRa y pantalla OLED de 0,96" y está conectado al PC por USB, realizando una comunicación serie, mostrando y graficando en tiempo real en el PC los datos recibidos a través de steamakersblocks. Tanto en emisor como en receptor se guardan los datos en formato CSV en microSD.
En este caso los datos de envío y recepción están codificados en formato JSON en formato texto y con las cifras decimales necesarias, para evitar enviar exceso de datos a través de la comunicación LoRa. Al enviarlo en formato JSON, en recepción podemos extraer y separar fácilmente la información para mostrarla en pantalla, guardarla en microSD y graficarla en tiempo real.
Además en recepción nos conectamos a Internet y a un broker para publicar los datos recibidos, que posteriormente serán recogidos por una página web (panel), que se suscribe a los temas que publicamos desde la placa.
Paneles (Dashboards)
Los paneles o dashboards son interfaces dónde realizar publicaciones y/o subscricciones de forma gráfica y sencilla. Diagamos que son un panel de control remoto de nuestro sistema. En nuestro caso sólo nos suscribiremos a temas con sus correspondientes valores.
Paneles para dispositivos móviles
Las dos aplicaciones que hemos encontrado de cierta calidad son estas, y no pueden configurar usuario y contraseña, por tanto no conectarán con un servidor mosquitto con autenticación.
Paneles webs
También podemos realizar páginas webs en forma de paneles o dashborads para mandar topics y valores o para recibir topics y valores del robot. En concreto esta ha sido realizada a través de Claude usando el siguiente prompt.
Quiero hacer una página web que grafique los datos de una placa ESP32 a través de mqtt con un servidor con dirección wss://broker.hivemq.com/mqtt con puerto 8884, y sin usuario. En la web deben representarse en tiempo real las gráficas de los sensores a la que la web está suscrito, en un sólo interfaz de gráficas. Los topics de las gráficas son: altitud, presion, temperatura, humedad, acelz y rssi. Hay también otros dos temas o topics que son longitud y latitud que quiero que sus datos se representen en un mapa. Además debe tener un botón para guardado de datos en formato csv, y alguna animación que indique que está grabando datos. Debe permitir también cambiar de tema claro a oscuro. El tema predeterminado debe ser claro.


