from machine import Pin
import network, time, urequests
from dht import DHT22
from umqtt.simple import MQTTClient
import ujson

sensordht=DHT22(Pin(4))

#paremteros MQTT SERVER

MQTT_CLIENT_ID="dht_karenmaria"  #cambiar siempre
MQTT_BROKER="broker.hivemq.com"  
MQTT_USER=""
MQTT_PASSWORD=""
MQTT_TOPIC="karenmaria1/digitales"

def conectawifi(red,password):
    global miRed
    miRed = network.WLAN(network.STA_IF)

    if not miRed.isconnected():
        miRed.active(True)
        miRed.connect(red, password)
        print("conectando a la red", red+"...")
        timeout=time.time()

        while not miRed.isconnected():
            if(time.ticks_diff(time.time(), timeout)>10):
                return False
    
    return True

if conectawifi("Wokwi-GUEST",""):

    print("Conexion exitosa")
    print("Datos de la red:", miRed.ifconfig())
    print("Conectando a MQTT SERVER: ",MQTT_BROKER,"...",end="")
    client=MQTTClient(MQTT_CLIENT_ID,MQTT_BROKER,user=MQTT_USER,password=MQTT_PASSWORD)
    client.connect()

    print("Conectado al broker...")

    while True:
        sensordht.measure()
        temp=sensordht.temperature()
        hum=sensordht.humidity()
        print("Temperatura= {:.2f}°C, Humedad={:.2f}%".format(temp,hum))    

        print("Revisando el entorno...")
        message = ujson.dumps({
            "Temperatura": temp,
            "Humedad": hum
        })

        print("Enviando datos a MQTT {}: {}".format(MQTT_TOPIC,message))
        client.publish(MQTT_TOPIC,message)

else:
    print("Conexion inexitosa")
    miRed.active(False)