"""
import dht
import machine
import time

global temp
global hum

d = dht.DHT22(machine.Pin(16))

while(True):
    #time.sleep(1)
    d.measure()
    temp = d.temperature()
    hum = d.humidity()
    print(f"Temperatura: {temp} , Humedad: {hum}")
    #print(f"Humedad: {hum}")
    time.sleep(.5)
"""
"""
# FORMA MÁS ACORDE A LO QUE HE APRENDIDO
from machine import Pin
from time import sleep
from dht import DHT22
#SETEO DE PINES
led_temp = Pin(10,Pin.OUT)
led_hum = Pin(11,Pin.OUT)
boton = Pin(15,Pin.IN,Pin.PULL_UP)


lect = DHT22(machine.Pin(16)) # LEE EL GPIO 16

while(True):
    sleep(.5)
    lect.measure()
    
    temp = lect.temperature()
    hum = lect.humidity()
    print(f"Temperatura: {temp} , Humedad: {hum} ")

    if temp > 10:
          print("temperatura supero 10 ºC")
          led_temp.value(1)
    else:
         led_temp.value(0)

    
    if hum > 60:
          print("Humedad supero 60%")
          led_hum.value(1)
    else:
        led_hum.value(0)
"""
# ******************************************************
# COPILOT
"""
from machine import Pin
import dht
import time

# Inicializar el sensor DHT22
sensor = dht.DHT22(Pin(16))

# Inicializar los LEDs
led_temp = Pin(10, Pin.OUT)
led_hum = Pin(11, Pin.OUT)

# Umbral de temperatura y humedad
umbral_temp = 50.0  # 50 grados Celsius
umbral_hum = 60.0   # 60 por ciento

while True:
    try:
        # Leer la temperatura y humedad
        sensor.measure()
        temp = sensor.temperature()
        hum = sensor.humidity()

        # Imprimir los valores en la consola
        print(f'Temperatura: {temp:.2f}°C, Humedad: {hum:.2f}%')

        # Encender LED si la temperatura es mayor al umbral
        if temp > umbral_temp:
            led_temp.on()
            print(f'Alerta: Temperatura alta {temp:.2f}°C')
        else:
            led_temp.off()

        # Encender LED si la humedad es mayor al umbral
        if hum > umbral_hum:
            led_hum.on()
            print(f'Alerta: Humedad alta {hum:.2f}%')
        else:
            led_hum.off()

        # Esperar 2 segundos antes de la próxima lectura
        time.sleep(2)

    except OSError as e:
        print('Error al leer el sensor DHT22.')
"""
# CHAT GPT CON FUNCIONES
"""
import machine
import dht
from time import sleep

# Configurar el sensor DHT22 en el pin GPIO 16
dht_sensor = dht.DHT22(machine.Pin(16))

# Configurar los pines de los LEDs
LED_temp_pin = machine.Pin(10, machine.Pin.OUT)
LED_hum_pin = machine.Pin(11, machine.Pin.OUT)

# Umbral de temperatura y humedad
umbral_temp = 50  # Umbral de temperatura en grados Celsius
umbral_hum = 60   # Umbral de humedad en porcentaje

def leer_temperatura_humedad():
    dht_sensor.measure()  # Realizar la lectura del sensor
    temperatura = dht_sensor.temperature()
    humedad = dht_sensor.humidity()
    return temperatura, humedad

def encender_LED(LED_pin):
    LED_pin.value(1)  # Encender el LED

def apagar_LED(LED_pin):
    LED_pin.value(0)  # Apagar el LED

# Bucle principal del programa
while True:
    temperatura, humedad = leer_temperatura_humedad()
    
    # Mostrar los valores de temperatura y humedad por consola
    print(f'Temperatura: {temperatura} °C, Humedad: {humedad} %')
    
    # Verificar si la temperatura supera el umbral
    if temperatura > umbral_temp:
        print("¡Alerta! La temperatura ha superado el umbral.")
        encender_LED(LED_temp_pin)
    else:
        apagar_LED(LED_temp_pin)
    
    # Verificar si la humedad supera el umbral
    if humedad > umbral_hum:
        print("¡Alerta! La humedad ha superado el umbral.")
        encender_LED(LED_hum_pin)
    else:
        apagar_LED(LED_hum_pin)
    
    # Esperar 2 segundos antes de la siguiente lectura
    sleep(2)
"""
# COPILOT CON FUNCIONES
from machine import Pin
import dht
import time

# Definir los umbrales
UMBRAL_TEMP = 50.0  # 50 grados Celsius
UMBRAL_HUM = 60.0   # 60 por ciento

# Inicializar el sensor DHT22 y los LEDs
sensor = dht.DHT22(Pin(16))
led_temp = Pin(10, Pin.OUT)
led_hum = Pin(11, Pin.OUT)

def leer_sensor():
    """Lee la temperatura y humedad del sensor DHT22."""
    sensor.measure()
    return sensor.temperature(), sensor.humidity()

def actualizar_leds(temp, hum):
    """Actualiza el estado de los LEDs basado en la temperatura y humedad."""
    if temp > UMBRAL_TEMP:
        led_temp.on()
        print(f'Alerta: Temperatura alta {temp:.2f}°C')
    else:
        led_temp.off()

    if hum > UMBRAL_HUM:
        led_hum.on()
        print(f'Alerta: Humedad alta {hum:.2f}%')
    else:
        led_hum.off()

def imprimir_valores(temp, hum):
    """Imprime los valores de temperatura y humedad."""
    print(f'Temperatura: {temp:.2f}°C, Humedad: {hum:.2f}%')

def main():
    """Función principal que ejecuta el programa."""
    while True:
        try:
            temp, hum = leer_sensor()
            imprimir_valores(temp, hum)
            actualizar_leds(temp, hum)
            time.sleep(2)
        except OSError as e:
            print('Error al leer el sensor DHT22.')

# Ejecutar el programa
if __name__ == '__main__':
    main()