#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Lit et affiche les données fournies par le captaur BME680

#importer les bibliothèques utilisées par le script
import bme680
import time
import os

print("Affichage de la température, de l'humidité, de la pression.")

print ("Quittez le programme avec Ctrl+C")

#Crée le capteur en testant les deux adresses possibles 0x76 et 0x77
try:
    capteur = bme680.BME680(bme680.I2C_ADDR_PRIMARY)
except IOError:
    capteur = bme680.BME680(bme680.I2C_ADDR_SECONDARY)
    
# Paramétrage du suréchantillonnage et du filtre
capteur.set_humidity_oversample(bme680.OS_2X)
capteur.set_pressure_oversample(bme680.OS_4X)
capteur.set_temperature_oversample(bme680.OS_8X)
capteur.set_filter(bme680.FILTER_SIZE_3)

# Activer le capteur VOC
capteur.set_gas_status(bme680.ENABLE_GAS_MEAS)

# Configuration des paramètres du capteur
# Paramètres recommandés
capteur.set_gas_heater_temperature(320)
capteur.set_gas_heater_duration(150)
capteur.select_gas_heater_profile(0)

print('Démarrage du programme:')
try:
    # Boucle infinie du script
    while True:
        print ("Mesures BME680")
        print ("==============")
        # Si les données du capteur sont lues
        if capteur.get_sensor_data():
            # Afficher la température
            print(f'Température : \t{capteur.data.temperature:.2f} °C')
            # Afficher la pression
            print(f'Pression : \t{capteur.data.pressure:.2f} hPa')
            # Afficher l'humidité relative
            print(f'Humidité : \t{capteur.data.humidity:.2f} %HR')
            # Attendre que la température soit stabilisée et lire la résistance
            if capteur.data.heat_stable:
                print(f'Résistance : \t{capteur.data.gas_resistance:.0f} ohms')
            else:
                print("--- ohms")

        # Attendre 1 seconde 
        time.sleep(1)
        #Effacer l'écran
        os.system("clear")


# Sortir du script sur CTRL+C
except KeyboardInterrupt:
    pass