import network
import time
import dht
from machine import Pin
from umqtt.simple import MQTTClient
# Configuración del sensor DHT22
dht_pin = Pin(15) # Pin GPIO donde está conectado el DHT22
sensor = dht.DHT22(dht_pin)
# Configuración del servidor MQTT (EMQX)
MQTT_BROKER = "q8a91193.ala.dedicated.gcp.emqxcloud.com" # Cambia por la dirección de tu servidor EMQX
MQTT_PORT = 1883 # Puerto MQTT (por defecto es 1883)
MQTT_USER = "emqx_gpc" # Cambia por tu usuario de EMQX
MQTT_PASSWORD = "pepitoGrill0" # Cambia por tu contraseña de EMQX
MQTT_TOPIC = "esp32/dht22" # Tema donde se publicarán los datos
# Conexión a la red WiFi
def connect_wifi():
print("Conectando a WiFi...")
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('Wokwi-GUEST', '')
while not wlan.isconnected():
print(".", end="")
time.sleep(1)
print("\nConectado a WiFi:", wlan.ifconfig())
# Publicar datos en el servidor MQTT
def publish_data(client, temperature, humidity):
message = f'{{"temperature": {temperature}, "humidity": {humidity}}}'
client.publish(MQTT_TOPIC, message)
print("Datos enviados:", message)
# Programa principal
def main():
# Conectar a WiFi
connect_wifi()
# Configurar cliente MQTT
client = MQTTClient("esp32_client", MQTT_BROKER, port=MQTT_PORT, user=MQTT_USER, password=MQTT_PASSWORD)
client.connect()
print("Conectado al servidor MQTT")
while True:
try:
# Leer datos del sensor DHT22
sensor.measure()
temperature = sensor.temperature()
humidity = sensor.humidity()
print(f"Temperatura: {temperature}°C, Humedad: {humidity}%")
# Enviar datos al servidor MQTT
publish_data(client, temperature, humidity)
# Esperar 10 segundos antes de la próxima lectura
time.sleep(10)
except Exception as e:
print("Error:", e)
time.sleep(5)
# Ejecutar el programa principal
if __name__ == "__main__":
main()