cours-snt/projets/projet_biere/main.py
2021-02-11 16:04:40 +01:00

93 lines
3.1 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 daide
# --------------------------------------------------------------------------------
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)