import dht
import machine
import network
import micropython
from machine import Pin
from umqtt.simple import MQTTClient

#Indicamos red WIFI y clave
ssid = 'WALTER'
wifipassword = 'topotopo'

#Datos Server MQTT (Broker)
#Indicamos datos MQTT Broker (server y puerto)
mqtt_server = 'io.adafruit.com'
port = 1883
user = 'WGLieby' #definido en adafruit
password = '39978185walter' #key adafruit
client_id = 'Identificador' #debe ser único!
topic_1 = 'path/al/topic1'
topic_2 = 'path/otro/topic2'

#Definimos modo Station (conectarse a Access Point remoto)
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
#Conectamos al wifi
sta_if.connect(ssid, wifipassword)
print("Conectando")
while not sta_if.isconnected():
    print(".", end="")
    time.sleep(0.1)
print("Conectado a Wifi!")
#Vemos cuales son las IP
print(sta_if.ifconfig())

def callback_alarma(topic, msg):
    global ALARMA_ACTIVA,LEDESTADO
    #Cuando se ejecuta esta funcion quere decir que
    #hubo un mensaje nuevo en algun topico, verificamos esto
    #Dado que lo que llega viene en UTF-8, lo decodificamos
    #para que sea una cadena de texto regular
    dato = msg.decode('utf-8')
    topicrec = topic.decode('utf-8')
    print("Cambio en: "+topicrec+":"+dato)
    #Nos fijamos si es el topico esperado y el valor del dato
    if topicrec == topic_ALARMA and "OFF" in dato:
        ALARMA_ACTIVA=False
    else:
        ALARMA_ACTIVA=True  
    LEDESTADO.value(ALARMA_ACTIVA)

try:
    conexionMQTT = MQTTClient(client_id, mqtt_server,user=user,password=password,port=int(port))
    conexionMQTT.set_callback(funcion_callback) #Funcion Callback para recibir del broker mensajes
    conexionMQTT.connect() #Hacemos la conexión.
    conexionMQTT.subscribe(topic_1) #Nos suscribimos a un tópico luego del connect
    print("Conectado con Broker MQTT")
except OSError as e:
    #Si falló la conexión, reiniciamos todo
    print("Fallo la conexion al Broker, reiniciando...")
    time.sleep(5)
    machine.reset()

sensor = dht.DHT22(Pin(14))

while True:
    sensor.measure()
    temp = sensor.temperature()
    hum = sensor.humidity()
    print("TEMP="+str(temp))
    print("HUM="+str(hum))