#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Mesure du vent

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

# Connecte l'anémomètre au GPIO 5
anemometre = Button(5)
# Initialise le compteur de tours 
compteur = 0
# Initialise la durée de mesure du vent 5s
vent_mesure = 5
# Initialise l'intervalle de mesure 300s = 5 * 60s = 5mn
mesure = 300

# Liste pour conserver la vitesse du vent
liste_5mn = []

# Fonction appelée à chaque impulsion de l'anémomètre
# incrémente le compteur à chaque demi-tour
def comptage():
    global compteur
    compteur = compteur + 1
    #print("pulse" + str(compteur))

# Fonction utilisée pour la remise à zéro du compteur de vitesse du vent    
def reset_compteur():
    global compteur
    compteur = 0
    
# Fonction de calcul de la vitesse du vent
def vitesse_vent():
    return ((compteur/2)/ vent_mesure *2.4)    
    
# Fonction qui enregistre la vitesse du vent dans une liste_5mn
def enregistre_vitesse(vitesse):
    global liste_5mn
    liste_5mn.append(vitesse)    

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

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

# Boucle principale infinie du programme
while True:
    # Vider la liste
    liste_5mn = []
    # 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:
        # Remettre compteur vitesse du vent à 0
        reset_compteur()
        # Début de la mesure du vent pendant 5s
        time.sleep(5)
        # Enregistrer la vitesse du vent 
        enregistre_vitesse(vitesse_vent())
        # Lignes print utilisées pour la mise au point du script
        #print (f'Enregistre 5s {vitesse_vent():.2f} ')
        #print(liste_5mn)
    # Calculer et afficher la vitesse moyenne du vent
    vent_moyen = statistics.mean(liste_5mn)
    print (f'Vent moyen : {vent_moyen : .2f} Km/h')
    # Calculer et afficher la vitesse maxi du vent
    vent_max = max(liste_5mn)
    print (f'Vent maxi : {vent_max : .2f} Km/h')