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

sensor_dht= DHT22(Pin(4))

#Parametros MQTT SERVER

MQTT_CLIENT_ID="dht/sofia" #cambiar siempre
MQTT_BROKER="broker.hivemq.com"
MQTT_USER=""
MQTT_PASSWORD=""
MQTT_TOPIC="digitales/3"

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("conexión existosa")
    print("Datos de la red (IP/netmask/gw/DNS): ", miRed.ifconfig())
    print("conectando a MQTT SERVER: ", MQTT_BROKER, "...")
    client=MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER,user=MQTT_USER, password=MQTT_PASSWORD)
    client.connect()

    print("conectado al broker...")
    
    while True:
        sensor_dht.measure()
        temp=sensor_dht.temperature()
        hum=sensor_dht.humidity()
        print("La temperatura es:{}°c, La humedad es: {}%".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("Conexión fallida")
    miRed.active(False)