Para conectar tu ESP32 a Adafruit IO y graficar los datos de un sensor, necesitas dos credenciales de tu cuenta de Adafruit, configurar un canal de datos (Feed) y un tablero visual (Dashboard).
A diferencia de un broker público, Adafruit IO requiere autenticación obligatoria por seguridad. A continuación, te detallo lo que necesitas obtener de la plataforma y el código listo para usar en Thonny.
1. Lo que necesitas obtener de io.adafruit.com
- Crear una cuenta gratuita: Regístrate en io.adafruit.com.
- Obtener tu Username y tu AIO Key:
- Una vez dentro de tu cuenta, haz clic en el botón amarillo con forma de llave que dice "My Key" (suele estar en la esquina superior derecha).
- Copia tu Username (Nombre de usuario) y tu Active Key (una cadena larga de letras y números).
- Crear un Feed (Canal de datos):
- Ve a la sección Feeds > New Feed.
- Ponle un nombre, por ejemplo:
mi-sensor. (Toma nota del "Feed Key" que se genera automáticamente, por lo general es el nombre en minúsculas y con guiones).
- Crear una Gráfica (Dashboard):
- Ve a Dashboards > New Dashboard.
- Entra a tu nuevo tablero, haz clic en el botón "+" (Create New Block) y selecciona Line Chart (Gráfico de líneas).
- Selecciona el feed
mi-sensorque creaste en el paso anterior y finaliza la creación del bloque.
2. Estructura de Tópicos en Adafruit IO
Adafruit IO utiliza una estructura de tópicos MQTT fija y obligatoria. Para publicar datos, tu ESP32 debe apuntar exactamente a esta dirección:
"tu_nombre_de_usuario/feeds/tu-feed-key"3. Código en MicroPython (Thonny)
Este código se conecta a tu Wi-Fi, inicia sesión de forma segura en Adafruit IO usando tus credenciales y simula el envío de un sensor (puedes reemplazar
valor_sensor con la lectura real de tu hardware).(Recuerda tener instalada la librería
micropython-umqtt.simple en Thonny como hicimos en el paso anterior).python
import network import time import random # Usado para simular datos de un sensor from umqtt.simple import MQTTClient # --- CONFIGURACIÓN DE CREDENCIALES --- WIFI_SSID = "TU_WIFI" WIFI_PASS = "TU_CONTRASEÑA" # Datos obtenidos del botón "My Key" en Adafruit IO ADAFRUIT_USERNAME = "TU_USERNAME_DE_ADAFRUIT" ADAFRUIT_AIO_KEY = "TU_AIO_KEY_DE_ADAFRUIT" # Configuración del Broker de Adafruit MQTT_BROKER = "io.adafruit.com" MQTT_PORT = 1883 # Puerto estándar MQTT sin SSLrealizar pruebas de MQTT y graficar datos en tiempo real sin programar una aplicación propia,# El tópico de Adafruit sigue estrictamente este formato: # username/feeds/feed-key MQTT_TOPIC = f"{ADAFRUIT_USERNAME}/feeds/mi-sensor" # --- FUNCIÓN DE CONEXIÓN WI-FI --- 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()) # --- PROGRAMA PRINCIPAL --- conectar_wifi() print("Conectando de forma segura a Adafruit IO...") # En Adafruit IO, el Client ID puede ser cualquier texto único. # Se deben pasar obligatoriamente el Username y la AIO Key como parámetros de autenticación. client = MQTTClient( client_id = "esp32_adafruit_client", server = MQTT_BROKER, port = MQTT_PORT, user = ADAFRUIT_USERNAME, password = ADAFRUIT_AIO_KEY ) client.connect() print("¡Conectado exitosamente a Adafruit IO!") try: while True: # Simulación de la lectura de un sensor (Ej: temperatura entre 20 y 30 grados) valor_sensor = random.uniform(20.0, 30.0) # Adafruit IO recibe valores individuales directamente como texto/número mensaje = f"{valor_sensor:.2f}" print(f"Publicando en Adafruit IO -> {mensaje}") client.publish(MQTT_TOPIC, mensaje.encode()) # NOTA: Las cuentas gratuitas de Adafruit IO tienen un límite de 30 publicaciones por minuto. # Por lo tanto, se recomienda enviar datos cada 5 segundos o más. time.sleep(5) except KeyboardInterrupt: print("Programa detenido.") client.disconnect()
Usa el código con precaución.
4. ¿Cómo verificar que funciona?
Al ejecutar este script en Thonny, verás en la consola los mensajes de publicación. Si abres en tu navegador o celular el Dashboard que creaste en Adafruit IO, verás de inmediato cómo la gráfica de líneas empieza a dibujarse punto por punto en tiempo real cada 5 segundos.
¿Pudiste localizar tu AIO Key en la plataforma, o prefieres que repasemos cómo modificar este código para enviar múltiples sensores a gráficos diferentes dentro del mismo tablero?
No hay comentarios:
Publicar un comentario