from machine import Pin, I2C
import ssd1306
import dht
import time

led1 = Pin(33, Pin.OUT)
led2 = Pin(25, Pin.OUT)

# Configuration I2C pour l'écran OLED SSD1306
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)

# Configuration du capteur DHT22
dht_sensor = dht.DHT22(Pin(15))

# État du système
system_active = True

def update_oled(temp, hum, active):
    """Met à jour l'écran OLED avec les données du système."""
    oled.fill(0)  # Efface l'écran
    if active:
        oled.text("System: ACTIF", 0, 0)
    else:
        oled.text("System: INACTIF", 0, 0)
    oled.text(f"Temp: {temp:.1f}C", 0, 20)
    oled.text(f"Hum: {hum:.1f}%", 0, 40)
    oled.show()

def mesure_dht():
    dht_sensor.measure()
    temp = dht_sensor.temperature()
    hum = dht_sensor.humidity()
    return temp, hum

while True:
    try:
        if system_active:
            # Lire les données du capteur DHT22 ---------------
            temperature, humidity = mesure_dht()
            
            if temperature > 40:
                system_active = False
                led1.off()
                led2.off()
            else:
                system_active = True
                led1.on()
                led2.on()

            # Mettre à jour l'écran OLED
            update_oled(temperature, humidity, system_active)

        else:
            # Lire les données du capteur DHT22 ---------------
            temperature, humidity = mesure_dht()

            if temperature < 40:
                system_active = True

            # Mettre à jour l'écran OLED
            update_oled(temperature, humidity, system_active)


        time.sleep(2)  # Attendre avant la prochaine mesure

    except Exception as e:
        oled.fill(0)
        oled.text("Error!", 0, 0)
        oled.text(str(e), 0, 20)
        oled.show()
        time.sleep(2)