import network # se importa la librería de red
import time #se importa la librería de tiempo
from machine import Pin # de la librería máquina se importa solo el manejo de los pines
import dht #se importa la librería para el manejo del sensor de temperatura.
import ujson # se importa la ibreria de JavaScript para usar su notación de objetos.
from umqtt.simple import MQTTClient #de la librería MQTT simple se importa el protocolo para el cliente
from servo import Servo
motor=Servo(pin=27) # se utiliza el pinout 27 del ESP32
MQTT_CLIENT_ID = "micropython-weather-demo" #parámetro de ID cliente MQTT
MQTT_BROKER = "broker.mqttdashboard.com" #parámetro para comunicación MQTT
MQTT_USER = "" #parámetro de usuario MQTT
MQTT_PASSWORD = "" #parámetro de contraseña MQTT
MQTT_TOPIC = "integracion" #parámetro de topic para broker MQTT
sensor = dht.DHT22(Pin(21)) # a la variable sensor se le asigna el pin 21 conectado al DHT
print("Connecting to WiFi", end="") #imprime un mensaje de inicio de conexión a red wifi
sta_if = network.WLAN(network.STA_IF) # a la variable sta_if asigna la inicialización de la interfaz de red Wi-Fi en modo estación.
sta_if.active(True) # Activa la interfaz de red Wi-Fi en modo estación.
sta_if.connect('Wokwi-GUEST', '') # Peticion de conexión a la red Wi-Fi con el nombre 'Wokwi-GUEST' y sin contraseña.
while not sta_if.isconnected(): # Inicio del bucle mientras no se establezca conexión
print(".", end="") #imprimir puntos suspensivos
time.sleep(0.1) #esperar 0.1 segundos para pasar a la siguiente iteración
print(" Connected!") #cuando se tiene conexion se finaliza el bucle e imprime conectado
print("Connecting to MQTT server... ", end="") #imprime conectando al servidor MQTT
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, user=MQTT_USER, password=MQTT_PASSWORD) # Inicializa un cliente MQTT con parámetros de conexión establecidos al inicio del código, lo asigna a la variable client.
client.connect() # Establece la conexión con el servidor MQTT.
print("Connected!") # Imprime en pantalla Conectado
prev_weather = "" # Inicializa variable para almacenar el estado anterior del clima.
while True: #Inicio de bucle indefinido para la medición constante
print("Midiendo condiciones del ambiente... ", end="") #Imprime mensaje
sensor.measure() # Realiza la medición de las condiciones meteorológicas.
temperatura = sensor.temperature()
message = ujson.dumps({ # almacena en la variable mensaje
"temperatura": temperatura, #medida de temperatura del sensor
"humedad": sensor.humidity(), #medida de humedad del sensor
}) # Convierte los datos de temperatura y humedad a formato JSON.
if message != prev_weather: #Si hay un cambio en las condiciones del clima.
print("¡Actualizado!") # Imprime "¡Actualizado!"
print("Reporte a MQTT {}: {}".format(MQTT_TOPIC, message)) # Imprime información sobre el envío de datos al servidor MQTT.
client.publish(MQTT_TOPIC, message) # Publica el mensaje en el servidor MQTT.
prev_weather = message # Actualiza el estado anterior del mensaje.
else: # Caso que no exista cambios en los valores medidos
print("Sin cambios") #Imprime sin cambios
time.sleep(1) #Espera 1 segundo antes de realizar la siguiente medición.
while temperatura > 13:
motor.move(0) # mueve el servo a 0°
time.sleep(1) # espera 1 segundo
motor.move(180) # mueve el servo a 180°
time.sleep(1) # espera 1 segundo
sensor.measure() # toma de datos con el sensor
temperatura = sensor.temperature() # actualiza la variable temperatura
print("temperatura:") #imprime valores de temperatura
print(temperatura) #imprime valores de temperatura