#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Mesure de la hauteur de pluie en 5 minutes

#importer les bibliothèques utilisées par le script
import time
import os
from gpiozero import Button

# Connecte l'anémomètre au GPIO 6
pluviometre = Button(6)
# Hauteur de pluie par impulsion du pluviomètre
impulsion_pluie = 0.2794
# Initialise le compteur d'impulsions
compteur_pluie = 0
# Initialise l'intervalle de mesure 300s = 5 * 60s = 5mn
mesure = 300



# Fonction appelée à chaque impulsion du pluviomètre
# incrémente le compteur à chaque basculement de la cuve
def comptage_pluie():
    global compteur_pluie
    compteur_pluie = compteur_pluie + 1
    #print("pulse" + str(compteur))

# Fonction utilisée pour la remise à zéro du compteur d'impulsions du pluviomètre  
def reset_compteur_pluie():
    global compteur_pluie
    compteur_pluie = 0
    
# Fonction de calcul de la hauteur de pluie en mm
def hauteur_pluie():
    return (compteur_pluie * impulsion_pluie )    
    

# Appeler la fonction de comptage à chaque impulsion
pluviometre.when_pressed = comptage_pluie

    
# Effacer l'écran
os.system("clear")

# Boucle principale infinie du programme
while True:
    # Remettre compteur de hauteur de pluie à 0
    reset_compteur_pluie()
    # Noter l'heure de début de l'intervalle de 5mn
    heure_debut = time.time()
    # Début de la temporisation de 5mn
    while time.time() - heure_debut <= mesure:
        # Ligne print utilisée pour la mise au point du script
        # print (time.time() - heure_debut , compteur_pluie)
        os.system("clear")
        print (f'Hauteur de pluie : {hauteur_pluie() : .2f} mm')
        time.sleep(1)
    print (f'Hauteur de pluie en 5 minutes: {hauteur_pluie() : .2f} mm')
    time.sleep(5)
    
