# Ejemplo Introducción al IoT
# topic1724/actuador1 - Opera a distancia un RELÉ
# topic1724/sensor1 - Envia la temperatura periodicamente
# topic1724/sensor2 - Enviar la humedad periodicamente
import network
from dht import DHT22
from time import sleep_ms
from machine import Pin, Timer
from umqtt.robust import MQTTClient
# ----- Definicion de dispositivos
dht = DHT22(Pin(4))
led = Pin(33, Pin.OUT)
# ----- Lectura de humedad y temperatura
def temperatura(timer):
dht.measure()
temp = dht.temperature()
hum = dht.humidity()
cliente.publish("topic1724/sensor1", str(temp))
cliente.publish("topic1724/sensor2", str(hum))
print(f"Temperatura: {temp} °C")
print(f"Humedad: {hum} %RH\n")
# ----- Funcion callback MQTT
def callback(topic, msg):
# Recibo y decodifico los datos
mensaje = msg.decode()
topico = topic.decode()
# LED
if (topico == "topic1724/actuador1"):
if (mensaje == "true"):
led.value(1)
elif (mensaje == "false"):
led.value(0)
print(mensaje)
# Conexión a Internet
wlan = network.WLAN(network.STA_IF)
if not wlan.active():
wlan.active(True)
if not wlan.isconnected():
wlan.connect("Wokwi-GUEST","")
print("Conectando...")
while not wlan.isconnected():
sleep_ms(1000)
config = wlan.ifconfig()
print(f"Conectado con ip {config[0]}")
# Conexión al broker MQTT
cliente = MQTTClient("dom_nr_e33", "test.mosquitto.org", port=1883)
print("Conectando a servidor MQTT...")
cliente.set_callback(callback)
cliente.connect()
cliente.subscribe("topic1724/actuador1")
print("Conectado")
# ----- Inicia el Timer0
tim = Timer(0)
tim.init(period=5000, mode=Timer.PERIODIC, callback=temperatura)
while True:
cliente.check_msg()
cliente.disconnect()