Para realizar pruebas de MQTT y graficar datos en tiempo real sin programar una aplicación propia, existen plataformas IoT gratuitas (o con planes de prueba muy completos) que incluyen tableros de control (dashboards) visuales con gráficos de líneas.
Las tres mejores opciones actuales son:
- Adafruit IO (La más recomendada y fácil): Te permite crear gráficos (line charts) gratis de forma muy intuitiva. Su broker MQTT es muy estable y es 100% compatible con MicroPython.
- Datacake: Una plataforma IoT excelente que te permite arrastrar y soltar widgets de gráficas. Ofrece soporte MQTT y permite hasta 2 dispositivos gratis de forma permanente.
- ThingsBoard Cloud: Más avanzada y profesional. Te permite crear tableros con gráficas muy detalladas de manera gratuita en su capa de pruebas.
A continuación, te muestro cómo estructurar el código en Thonny usando Adafruit IO (o cualquier broker) enviando los datos en formato JSON (que es el estándar para graficar varias variables a la vez), junto con la lógica exacta de las dos señales que solicitas.
1. El Código en MicroPython (Thonny)
Este script genera las dos señales matemáticas (la rampa y el triángulo) con pasos de 10 en 10, actualizándose cada 5 segundos, y envía ambos datos juntos dentro de una cadena JSON.
python
import network
import time
import json
from umqtt.simple import MQTTClient
# --- CONFIGURACIÓN DE RED Y MQTT ---
WIFI_SSID = "TU_WIFI"
WIFI_PASS = "TU_CONTRASEÑA"
# Si usas Adafruit IO, el broker es: "://adafruit.com"
# Si prefieres seguir usando el broker público de HiveMQ para probar: "mqtt-dashboard.com"
MQTT_BROKER = "mqtt-dashboard.com"
MQTT_TOPIC = "mi_proyecto_esp32/sensores" # Cambia esto por un nombre único
def conectar_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print("Conectando a Wi-Fi...")
wlan.connect(WIFI_SSID, WIFI_PASS)
while not wlan.isconnected():
time.sleep(1)
print("¡Wi-Fi Conectado! IP:", wlan.ifconfig())
# --- VARIABLES PARA LAS SEÑALES ---
sensor_rampa = 0
sensor_triangulo = 0
direccion_triangulo = 1 # 1 significa subiendo, -1 significa bajando
conectar_wifi()
print("Conectando al Broker MQTT...")
client = MQTTClient("esp32_graficador_99", MQTT_BROKER)
client.connect()
print("¡Conectado exitosamente!")
try:
while True:
# 1. Lógica del Sensor 1: Rampa creciente (0 a 100, luego vuelve a 0)
sensor_rampa += 10
if sensor_rampa > 100:
sensor_rampa = 0
# 2. Lógica del Sensor 2: Triángulo (0 -> 100 -> 0)
if direccion_triangulo == 1:
sensor_triangulo += 10
if sensor_triangulo >= 100:
sensor_triangulo = 100
direccion_triangulo = -1 # Cambia a modo decremento
else:
sensor_triangulo -= 10
if sensor_triangulo <= 0:
sensor_triangulo = 0
direccion_triangulo = 1 # Cambia a modo incremento
# 3. Empaquetar los datos en formato JSON
datos = {
"rampa": sensor_rampa,
"triangulo": sensor_triangulo
}
payload = json.dumps(datos) # Convierte el diccionario a un texto JSON
# 4. Publicar los datos
print(f"Enviando: {payload}")
client.publish(MQTT_TOPIC, payload.encode())
# Esperar los 5 segundos requeridos antes del siguiente paso
time.sleep(5)
except KeyboardInterrupt:
print("Programa detenido.")
client.disconnect()
Usa el código con precaución.
2. Cómo configurarlo en la plataforma para graficar
Si decides usar Adafruit IO (la opción más rápida):
- Regístrate gratis en adafruit.com.
- Ve a Feeds y crea dos canales independientes: uno llamado
rampay otro llamadotriangulo. - Ve a Dashboards > New Dashboard y crea un tablero de control.
- Dentro de tu tablero, haz clic en Create New Block (Crear nuevo bloque) y selecciona el icono de Line Chart (Gráfico de líneas).
- Selecciona tus feeds (
rampaytriangulo) para enlazarlos al gráfico. - Ajusta las credenciales en tu código (Adafruit requiere que pases tu nombre de usuario y tu clave API que encuentras en el botón amarillo "My Key" de su web como usuario/contraseña de la conexión MQTT).
Si prefieres mantener el broker público de HiveMQ sin registrar cuentas:
- Puedes usar la herramienta independiente Node-RED Dashboard (si lo instalas en tu PC), o buscar soluciones web rápidas como MQTT Tiles configurando el broker
mqtt-dashboard.com, suscribiéndote a tu tópico e indicándole al widget de gráfica que extraiga las propiedades.rampay.triangulodel objeto JSON recibido.
¿Prefieres que te ayude a adaptar los parámetros de conexión del código específicamente para Adafruit IO (incluyendo el envío por separado a cada gráfica), o prefieres probar con otra plataforma que no requiera registro?
No hay comentarios:
Publicar un comentario