from machine import Pin
import dht
import time

# Configura los pines de los relevadores
rele_frio     = Pin(2, Pin.OUT)   # Relay “FRÍO”
rele_ambiente = Pin(4, Pin.OUT)   # Relay “AMBIENTE”
rele_calor    = Pin(5, Pin.OUT)   # Relay “CALOR”

# Configura el sensor DHT22 en el GPIO 15
sensor = dht.DHT22(Pin(15))

# Umbrales de temperatura (en °C)
UMBRAL_FRIO    = 15    # por debajo de este valor → FRÍO
UMBRAL_CALOR   = 30    # por encima de este valor → CALOR
# entre UMBRAL_FRIO y UMBRAL_CALOR → AMBIENTE

def actualizar_relevadores(temp):
    """
    Activa un solo relevador según el rango de temperatura.
    """
    if temp < UMBRAL_FRIO:
        # Sólo rele_frio ON
        rele_frio.value(1)
        rele_ambiente.value(0)
        rele_calor.value(0)
    elif temp > UMBRAL_CALOR:
        # Sólo rele_calor ON
        rele_frio.value(0)
        rele_ambiente.value(0)
        rele_calor.value(1)
    else:
        # Sólo rele_ambiente ON
        rele_frio.value(0)
        rele_ambiente.value(1)
        rele_calor.value(0)

# Bucle principal
while True:
    try:
        sensor.measure()                    # Toma la lectura
        temperatura = sensor.temperature()  # °C
        print("Temperatura:", temperatura, "°C")
        
        actualizar_relevadores(temperatura)
        
    except OSError as err:
        # Si hay error de lectura, apaga todos
        print("Error al leer DHT22:", err)
        rele_frio.value(0)
        rele_ambiente.value(0)
        rele_calor.value(0)
    
    time.sleep(2)  # espera 2 segundos entre lecturas
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module