import time

# --------------------------------------------------------------------------------
#                        Gestion des pages web
# --------------------------------------------------------------------------------

import bottle, threading

def nouvelle_temp_cible (temperature):
    """ Cette fonction sauvegarde la température cible """
    with open('cible.txt', 'w', coding="utf8") as f:
        f.write(température)

def temp_format_html ():
    """ Cette fonction retourne un texte HTML contenant les mesures de températures"""
    return 'Non implémenté'


@bottle.get('/')
def get_temp():
    return temp_format_html()

threading.Thread(target=bottle.run, kwargs=dict(host='', port=8080)).start()

# --------------------------------------------------------------------------------
#                        Gestion du capteur de température
# --------------------------------------------------------------------------------

import os
import glob

# On trouve où sont les valeurs du capteurs
dossier_base = '/sys/bus/w1/devices/'
dossier_capteur = glob.glob(dossier_base + '28*')[0]
fichier_capteur = dossier_capteur + '/w1_slave'
fichier_actionneur = 'TODO'

def lecture_temp_brute():
    """ Cette fonction retourne la valeur du capteur sans traitement """
    with open(fichier_capteur, 'r') as f:
        lines = f.readlines()
    return lines

def lecture_temp():
    """ Cette fonction calcule la température à partir des mesures brutes """
    lines = lecture_temp_brute()
    while lines[0].strip()[-3:] != 'YES':
        time.sleep(0.2)
        lines = lecture_temp_brute()
    equals_pos = lines[1].find('t=')
    if equals_pos != -1:
        temp_string = lines[1][equals_pos+2:]
        temp_c = float(temp_string) / 1000.0
        return temp_c

# --------------------------------------------------------------------------------
#                        Gestion du capteur de température
# --------------------------------------------------------------------------------

def chauffage_on ():
    """ Cette fonction allume le chauffage de la cuve """
    with open(fichier_actionneur, 'w') as f:
        f.write('1')

def chauffage_off ():
    """ Cette fonction éteint le chauffage de la cuve """
    with open(fichier_actionneur, 'w') as f:
        f.write('0')

# --------------------------------------------------------------------------------
#                        Fonctions d’aide
# --------------------------------------------------------------------------------

def ajout_ligne_fichier(nom_fichier, ligne):
    """ Cette fonction ajoute le texte dans la variable ligne à la fin du fichier « nom_fichier » """
    with open(nom_fichier, 'a', encoding="utf8") as f:
        f.write(ligne)

def temp_cible():
    """ Cette fonction retourne la température cible qui doit être maintenue pendant la fermentation """
    with open("cible.txt", 'r', coding="utf8") as f:
        return f.read().strip()

# --------------------------------------------------------------------------------
#                        Programme principal
# --------------------------------------------------------------------------------

while True:
	print(lecture_temp())
	time.sleep(1)