77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
import time
|
|
import RPi.GPIO as GPIO
|
|
import Adafruit_DHT
|
|
|
|
GPIO.setmode(GPIO.BCM)
|
|
GPIO.setwarnings(False)
|
|
|
|
|
|
class SystemeThermostat:
|
|
def __init__(self):
|
|
self.capteur = Adafruit_DHT.DHT11
|
|
self.pinDht = 25
|
|
|
|
self.boutonPlus = 16
|
|
self.boutonMoins = 18
|
|
|
|
# display 4 digits
|
|
# à brancher proprement quand le module exact sera fixé
|
|
self.pinDisplayClk = 7
|
|
self.pinDisplayDio = 11
|
|
|
|
self.temperatureCible = 18
|
|
self.temperatureReelle = None
|
|
|
|
self.derniereLectureBouton = 0
|
|
self.delaiLectureBouton = 0.25
|
|
|
|
GPIO.setup(self.boutonPlus, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
|
|
GPIO.setup(self.boutonMoins, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
|
|
|
|
def lireTemperature(self):
|
|
humidite, temperature = Adafruit_DHT.read_retry(self.capteur, self.pinDht)
|
|
|
|
if temperature is None:
|
|
print("Thermostat : lecture DHT11 impossible")
|
|
return None
|
|
|
|
return temperature
|
|
|
|
def lireBoutons(self):
|
|
maintenant = time.time()
|
|
|
|
if maintenant - self.derniereLectureBouton < self.delaiLectureBouton:
|
|
return
|
|
|
|
if GPIO.input(self.boutonPlus):
|
|
self.temperatureCible += 1
|
|
self.derniereLectureBouton = maintenant
|
|
print("Consigne :", self.temperatureCible, "°C")
|
|
|
|
elif GPIO.input(self.boutonMoins):
|
|
self.temperatureCible -= 1
|
|
self.derniereLectureBouton = maintenant
|
|
print("Consigne :", self.temperatureCible, "°C")
|
|
|
|
def afficherTemperatures(self):
|
|
# pour l'instant on affiche dans la console
|
|
# le vrai code du display ira ici
|
|
if self.temperatureReelle is None:
|
|
print("Temp réelle : -- | cible :", self.temperatureCible)
|
|
else:
|
|
print("Temp réelle :", str(self.temperatureReelle) + "°C", "| cible :", str(self.temperatureCible) + "°C")
|
|
|
|
def mettreAJour(self):
|
|
self.lireBoutons()
|
|
self.temperatureReelle = self.lireTemperature()
|
|
self.afficherTemperatures()
|
|
|
|
if self.temperatureReelle is None:
|
|
return True
|
|
|
|
return False
|
|
|
|
def cleanup(self):
|
|
# rien à éteindre ici, incroyable mais vrai
|
|
pass
|