import time
import random
# Paramètres système
SEUIL_HUMIDITE = 30 # en pourcentage
# État initial
pompe_active = False
alarme_active = False
# Simulation capteurs
def lire_humidite_sol():
# Simule une humidité du sol entre 0 et 100 %
return [Link](0, 100)
def lire_niveau_eau():
# Simule un réservoir plein ou vide (True = eau présente)
return [Link]([True, False])
def lire_debit():
# Simule un débit : True = débit OK, False = débit nul
return [Link]([True, False])
# Action sur la pompe
def activer_pompe():
global pompe_active
pompe_active = True
print(" Pompe activée.")
def arreter_pompe():
global pompe_active
pompe_active = False
print(" Pompe arrêtée.")
# Action sur l'alarme
def declencher_alarme():
global alarme_active
alarme_active = True
print(" Alarme : Réservoir vide !")
def signaler_defaillance():
print(" Défaillance détectée : débit nul.")
# Simulation du système
def systeme_pompage():
global pompe_active, alarme_active
humidite = lire_humidite_sol()
niveau_eau = lire_niveau_eau()
debit = lire_debit()
print(f"\n Humidité du sol : {humidite}%")
print(f" Niveau d'eau : {'OK' if niveau_eau else 'VIDE'}")
print(f" Débit : {'OK' if debit else 'NUL'}")
# Conditions d’activation
if humidite < SEUIL_HUMIDITE and niveau_eau:
activer_pompe()
else:
arreter_pompe()
# TANT QUE la pompe est active
if pompe_active:
if humidite >= SEUIL_HUMIDITE:
arreter_pompe()
elif not niveau_eau:
arreter_pompe()
declencher_alarme()
elif not debit:
arreter_pompe()
signaler_defaillance()
# Transmission LoRa simulée
print(f" Transmission LoRa → Humidité : {humidite}%, Niveau : {'OK' if niveau_eau else 'VIDE'}")
# Boucle principale
if __name__ == "__main__":
try:
while True:
systeme_pompage()
[Link](2) # Pause entre les cycles
except KeyboardInterrupt:
print("\n Simulation arrêtée par l'utilisateur.")