#Condicion metereologica
import network #Permite trabajar con la conectividad de red del dispositivo
import time #Se utiliza para acceder a funciones relacionadas con el tiempo
from machine import Pin #Importa la clase Pin del módulo machine
import dht #Interactuar con sensores de temperatura y humedad DHT
import ujson #permite realizar operaciones de manera eficiente en términos de uso de memoria y recursos del dispositivo
from umqtt.simple import MQTTClient #Permite a los dispositivos conectarse a un servidor MQTT para enviar y recibir mensajes
MQTT_CLIENT_ID = "micropython-weather-demo" #Se establece como el identificador único del cliente MQTT
MQTT_BROKER = "broker.mqttdashboard.com" #Se especifica la dirección del servidor MQTT al que el dispositivo se conectará
MQTT_USER = "" #Nombre de usuario que se utilizará para autenticarse en el servidor MQTT
MQTT_PASSWORD = "" #Especifica la contraseña correspondiente al nombre de usuario
MQTT_TOPIC = "Wokwi-weather" #MQTT al que el código estará suscrito o publicará mensajes relacionados con el clima
sensor = dht.DHT22(Pin(15)) #Objeto que representa el sensor DHT22 asociandolo al pin GPIO 15 del microcontrolador
print("Conectandonos a la red WIFI", end = "") #Imprime en pantalla
red = network.WLAN(network.STA_IF) #Escanear redes disponibles, conectarse a una red específica
red.active(True) #Es utilizada para activar la red, una conexión de red
red.connect('Wokwi-GUEST', '') #Sirve para conectar el dispositivo que se esta utilizando
while not red.isconnected(): #isconnected es un metodo
print(".",end="") #Imprime en pantalla, end seguido, para que no de salto de linea
time.sleep(0.1) #Pausa la ejecución durante el número especificado de segundos
print("Conectado") #Imprime en pantalla
print("Conectandome a MQTT", end="") #Imprime en pantalla
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER,user=MQTT_USER, password=MQTT_PASSWORD) #Establece conexion MTTQ
#Se utiliza para crear una instancia de un cliente MQTT que se conectará a un broker MQTT
client.connect() #Método utilizado para establecer una conexión de red
weather = "" #Asignando una cadena vacía
while True:
print("Condicion metereologica ", end="") #Imprime en pantalla
sensor.measure() #Solicita al sensor que realice una medición en ese momento
mensaje = ujson.dumps({ #convertir un objeto Python en una cadena JSON
"temperatura" : sensor.temperature(), #Proporciona el valor actual de la temperatura
"humedad" : sensor.humidity(), #Proporciona el valor actual de la humedad
}) #Cierre del metodo
if mensaje != weather: #Si mensaje es diferente a weather
print("Actualizando") #Imprime en pantalla
print("Reportando a MQTT {}:{}".format(MQTT_TOPIC, mensaje)) #Se está reportando a un tema MQTT junto al mensaje
client.publish(MQTT_TOPIC, mensaje) #Envia datos MicroPython a un servidor MQTT, donde clientes pueden suscribirse
weather = mensaje #Asigna un valor (Almacena informacion)
else:
print("No existen cambios") #Imprime en pantalla
time.sleep(1) #Pausa la ejecución de un programa durante el número especificado de segundos