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

# Affiche une sinusoide et enregistre la température du CPU dans influxDB

# Importer les bibliothèques utilisées par le script
import math
import datetime
import time
from gpiozero import CPUTemperature
from influxdb import InfluxDBClient

#Définir les paramètres pour accéder à la BDD
USER = 'utilisateur_meteo'
PASSWORD = 'MDP_meteo'
DBNAME = 'meteo'
host='localhost'
port=8086

# Fonction pour lire la température CPU
def getCPUtemperature():
    cpu = CPUTemperature()
    return(cpu.temperature) 

# Créer une instance de InfluxDBClient pour accéder à la BDD
client = InfluxDBClient(host, port, USER, PASSWORD, DBNAME)


#Générer les points de la courbe sinus
#Créer la liste qui contiendra les points
points = []
y = 10.0

# Calculer 36000 points
for angle in range(0, 36000):
    # Calcul du sinus, décalage de +10
    y = 10 + math.sin(math.radians(angle)) * 10
    # Mesurer la température du CPU
    temp = getCPUtemperature()
    t = (float(temp))
    # Afficher les valeurs à l'écran
    print(angle, y, temp)
    # Créer la structure qui sera envoyée à la BDD
    point = {
        "measurement": 'valeur',
        "fields": {
            "valeur": y,
            "temperature" : t
        }
    }
    #Ajouter le point à la liste
    points.append(point)
   
    #Ecrire la liste de points dans la base de données
    client.write_points(points)
    # Attendre une demi seconde
    time.sleep(0.5)