import json
import network
import time
from machine import Pin
import dht
from umqtt.simple import MQTTClient
def sub_cb(topic, msg):
global MSG_ONOFF
MSG_ONOFF = msg
print(MSG_ONOFF)
MSG_ONOFF = b"OFF"
#crea el sensor asociado al pin 15
sensor = dht.DHT22(Pin(15))
#crea el led asociado al pin 13
led = Pin(13,Pin.OUT)
led.off() #apaga el led
print("Connecting to WiFi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('Wokwi-GUEST', '')
#esperando se conecte a la wifi
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Connected!")
#conectando al servidor MqTT
print("Connecting to MQTT server... ", end="")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER,port=8741, user=MQTT_USER, password=MQTT_PASSWORD)
client.set_callback(sub_cb)
client.connect()
client.subscribe(MQTT_TOPIC_SUB)
print("Connected!")
print("Esperando orden de inicio de lectura sensor!")
temp = str(sensor.temperature())
humi = str(sensor.humidity())
jdata = {"tipo":"temperatura","valor":str(humi)}
data = json.dumps(jdata)
print(data)
client.publish(MQTT_TOPIC_SUB, data)
# client.wait_msg() #espera se presion on en la web para iniciar lectura
# while MSG_ONOFF != b"ON":
# client.wait_msg()
#led.on() #enciende el led de activado
print("Sistema de lectura de sensor iniciado!")
prev_temp = ""
prev_humi = ""
while True:
sensor.measure() #captura inforación del sensor DTH22
temp = str(sensor.temperature())
humi = str(sensor.humidity())
jdata = {"tipo":"temperatura","valor":str(temp)}
data = json.dumps(jdata)
client.publish(MQTT_TOPIC_SUB, data)
jdata = {"tipo":"humedad","valor": str(humi)}
data = json.dumps(jdata)
client.publish(MQTT_TOPIC_SUB, data)
aux = f"la temperatura es de {temp} y la humedad de {humi}"
print(aux)
#chequea boton on off en cada bucle
client.check_msg()
if MSG_ONOFF == b"ON":
led.on()
else:
led.off()
time.sleep(1)