from machine import Pin, ADC
from utime import sleep
import dht
import time
class LDR:
def __init__(self, pin):
self.ldr_pin = ADC(Pin(pin))
def get_raw_value(self):
return self.ldr_pin.read_u16()
def get_light_percentage(self):
return 100 - round(self.get_raw_value()/65535*100,2)
print("Hello, ESP32!")
th_sensor_1 = dht.DHT22(Pin(26))
th_sensor_2 = dht.DHT22(Pin(32))
light = Pin(25, Pin.OUT)
heater = Pin(14, Pin.OUT)
light_sensor = LDR(15)
valve = Pin(12, Pin.OUT)
fan = Pin(27, Pin.OUT)
program1 = Pin(4, Pin.IN)
program2 = Pin(21, Pin.IN)
selectedProgram = 1
programs = {
1: {
"fan": {
"max": 35,
"min": 33
},
"light": {
"max": 50,
"min": 40
},
"heater": {
"max": 33,
"min": 30
},
"valve": {
"max": 50,
"min": 5
},
"refresh": 1
},
2: {
"fan": {
"max": 33,
"min": 30
},
"light": {
"max": 50,
"min": 40
},
"heater": {
"max": 31,
"min": 28
},
"valve": {
"max": 50,
"min": 20
},
"refresh": 5
}
}
def handleLight():
percentage = light_sensor.get_light_percentage()
if percentage > programs[selectedProgram]["light"]["max"]:
light.off()
if percentage < programs[selectedProgram]["light"]["min"]:
light.on()
def handleFan():
temperatures = [th_sensor_1.temperature(), th_sensor_2.temperature()]
for temperature in temperatures:
if temperature > programs[selectedProgram]["fan"]["max"]:
fan.on()
if temperature < programs[selectedProgram]["fan"]["min"]:
fan.off()
def handleHeater():
temperatures = [th_sensor_1.temperature(), th_sensor_2.temperature()]
for temperature in temperatures:
if temperature > programs[selectedProgram]["heater"]["max"]:
heater.off()
if temperature < programs[selectedProgram]["heater"]["min"]:
heater.on()
def handleValve():
humidities = [th_sensor_1.humidity(), th_sensor_2.humidity()]
for humidity in humidities:
if humidity > programs[selectedProgram]["valve"]["max"]:
valve.off()
if humidity < programs[selectedProgram]["valve"]["min"]:
valve.on()
def handleProgram():
if program1.value() == 1:
globals()["selectedProgram"] = 1
elif program2.value() == 1:
globals()["selectedProgram"] = 2
while True:
try:
th_sensor_1.measure() # Recuperère les mesures du capteur
th_sensor_2.measure() # Recuperère les mesures du capteur
print(f"Temperature : {th_sensor_1.temperature():.1f}°C, {th_sensor_2.temperature():.1f}°C")
print(f"Humidite : {th_sensor_1.humidity():.1f}%, {th_sensor_2.humidity():.1f}%")
print(f"Lightning : {light_sensor.get_light_percentage():.1f}%")
print(f"Program : {selectedProgram}")
handleProgram()
handleFan()
handleLight()
handleHeater()
handleValve()
sleep(programs[selectedProgram]["refresh"])
print(f"Time : {time.time()}")
except Exception as e:
print(e)