import dht
import machine
import time
import network
import urequests
# Configuración del sensor DHT22 y el relay
sensor = dht.DHT22(machine.Pin(4))
rele = machine.Pin(13, machine.Pin.OUT)
# Configuración Wi-Fi
SSID = 'Wokwi-GUEST'
PASSWORD = ''
# Función para conectar a la red Wi-Fi
def conectar_wifi():
print("Conectando WiFi", end="")
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
max_attempts = 100
attempts = 0
while not wlan.isconnected() and attempts < max_attempts:
print(".", end="")
time.sleep(0.1)
attempts += 1
if wlan.isconnected():
print(" Conectado!")
print("Dirección IP:", wlan.ifconfig()[0])
return True
else:
print(" No se pudo conectar a la red Wi-Fi.")
return False
# Función para controlar el ventilador según la temperatura
def controlar_ventilador(temperatura):
if temperatura > 25:
rele.value(1) # Activa el ventilador
print("Ventilador ENCENDIDO")
else:
rele.value(0) # Desactiva el ventilador
print("Ventilador APAGADO")
# Función para enviar los datos al servidor
def enviar_datos(temperatura):
url = "http://192.168.0.216:5000/api/temperatura" # Cambia esto por la URL de tu servidor
data = {"temperatura": temperatura}
try:
response = urequests.post(url, json=data)
if response.status_code == 200:
print("Datos enviados:", response.text)
else:
print("Error al enviar datos. Código de estado:", response.status_code)
except Exception as e:
print("Error enviando los datos:", e)
# Función principal del termostato
def termostato():
while True:
try:
sensor.measure() # Mide la temperatura y la humedad
temperatura = sensor.temperature() # Obtiene la temperatura
print("Temperatura:", temperatura, "°C")
# Controla el ventilador en función de la temperatura
controlar_ventilador(temperatura)
# Envía la temperatura al servidor
enviar_datos(temperatura)
# Espera 2 segundos antes de la siguiente lectura
time.sleep(2)
except OSError as e:
print("Error al leer el sensor:", e)
# Programa principal
if conectar_wifi():
termostato()