import network
import time
import machine
from umqtt.simple import MQTTClient
import dht
from machine import Pin
# Configuración de la red Wi-Fi
SSID = "Wokwi-GUEST"
PASSWORD = ""
# Configuración del broker MQTT
MQTT_BROKER = "io.adafruit.com"
MQTT_PORT = 1883
MQTT_USER = "Pedroddf"
MQTT_PASS = "aio_rWhv77gCqaDnSkIWXTruaYNF8Mt0"
MQTT_CLIENT_ID = "idenghjtificativo_unico"
MQTT_TOPIC_LED = "Pedroddf/f/led"
MQTT_TOPIC_TEMP = "Pedroddf/f/tem"
# Variables globales
pedroddffled = ""
conectado = False
frecuenciaPubl = 0
# Configuración del DHT22
dht22 = dht.DHT22(Pin(22))
# Configuración de pines
led_pin = Pin(15, Pin.OUT)
# Función para conectar a Wi-Fi
def espwifi_setup():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
print("Conectando a la red WiFi...")
while not wlan.isconnected():
print(".", end="")
time.sleep(1)
print("\nConexión realizada con éxito")
print("Dirección IP:", wlan.ifconfig()[0])
# Función para conectar al broker MQTT
def espmqtt_setup():
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, user=MQTT_USER, password=MQTT_PASS)
client.connect()
print("Conectado al broker MQTT!")
return client
# Función de callback de MQTT
def espmqtt_callback(topic, msg):
global pedroddffled
pedroddffled = msg.decode('utf-8')
# Función para publicar la temperatura
def publish_temperature(client):
temperature = dht22.temperature()
client.publish(MQTT_TOPIC_TEMP, str(temperature))
print("Temperatura publicada:", temperature)
# Programa principal
def main():
global conectado, frecuenciaPubl
espwifi_setup()
mqtt_client = espmqtt_setup()
mqtt_client.set_callback(espmqtt_callback)
mqtt_client.subscribe(MQTT_TOPIC_LED)
while True:
# Revisar la conexión MQTT
mqtt_client.check_msg() # Procesar mensajes entrantes
# Controlar el LED
if pedroddffled.lower() in ["true", "on", "1"]:
led_pin.value(1)
else:
led_pin.value(0)
# Publicar la temperatura cada 4 segundos
if time.ticks_ms() - frecuenciaPubl > 4000:
frecuenciaPubl = time.ticks_ms()
publish_temperature(mqtt_client)
# Ejecutar el programa principal
if __name__ == "__main__":
main()