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

sensor = DHT22(Pin(4))

#parámetros MQTT SERVER
MQTT_CLIENT_ID = "nazi_digi" #cambiar siempre
MQTT_BROKER = "broker.hivemq.com"
MQTT_USER = ""
MQTT_PASSWORD = ""
MQTT_TOPIC = "nazi/digi" #Cambiar siempre


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",""):   #red y contraseña 

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

    print("Conectando al Broker.... ")

    while True:
        sensor.measure()
        temp = sensor.temperature()
        humedad = sensor.humidity()
        print("La temperatura es: {}°C La humedad es: {}% ".format(temp,humedad))

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


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


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