trame du sujet

This commit is contained in:
Adrian Amaglio 2021-02-11 16:04:40 +01:00
parent 55ef22bd17
commit 26c3d77e47
3 changed files with 112 additions and 13 deletions

View File

@ -1,24 +1,48 @@
import os
import glob
import time
# On active le capeteur dans le système
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
# --------------------------------------------------------------------------------
# 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(base_dir + '28*')[0]
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"""
""" 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"""
""" Cette fonction calcule la température à partir des mesures brutes """
lines = lecture_temp_brute()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
@ -29,7 +53,40 @@ def lecture_temp():
temp_c = float(temp_string) / 1000.0
return temp_c
# Programme principal
# --------------------------------------------------------------------------------
# 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(read_temp())
print(lecture_temp())
time.sleep(1)

Binary file not shown.

View File

@ -8,6 +8,7 @@
\def\thesequence{Données structurées, web}
\begin{document}
Ceci est une trame à suivre, les détails techniques ne sont pas réglés.
Durée : 3h
%
@ -15,22 +16,63 @@ Durée : 3h
\section{Microcontrolleur programmable}
Nous travaillerons sur un raspberry pi pour récupérer les valeurs des capteurs.
\subsection{Mesure de la température}
% En vrai on peut aussi mesurer la pression et le pH
Durée : 1h
\begin{exercice}
Connectez le capteur de température et la résistance au raspberry pi comme sur le shéma suivant :
\includegraphics[width=\textwidth]{circuit.png}
\end{exercice}
\begin{exercice}
Récupérez le fichier python à cette adresse : \url{https://git.jean-cloud.net/adrian/cours-snt/raw/branch/master/projet_bière/main.py}
Récupérez le fichier python à cette adresse : \url{https://git.jean-cloud.net/adrian/cours-snt/raw/branch/master/projets/projet_biere/main.py}
\\
et exécutez-le sur votre raspberry pi.
Vérifiez quil affiche bien la valeur de la température chaque seconde
\end{exercice}
\begin{exercice}
Modifiez le programme principal pour quil écrive dans un fichier CSV, la date, lheure actuelle et la température mesurée.
Votre fichier CSV devra ressembler à cela :
\begin{verbatim}
date;heure;temperature
11/02/2021;15:14:10;22
11/02/2021;15:15:10;21
11/02/2021;15:16:10;21
11/02/2021;15:17:10;20
11/02/2021;15:18:10;20
\end{verbatim}
Vous pourrez vous aider de la fonction « ajout\_ligne\_fichier » disponible dans le fichier python que vous avez téléchargé.
\end{exercice}
\subsection{Mesure de la température}
% En vrai on peut aussi mesurer la pression et le pH
\subsection{Régulation du chauffage}
Durée 1h
\begin{exercice}
Le chauffage de la cuve de fermentation nest pas réglable, le chauffage est donc mis à fond pour faire monter la température, puis eteint lorquelle est acceptable.
\\
La fonction « temp\_cible » retourne la valeur de la température idéale pour la fermentation.
\\
Dans votre programme principal, activez le chauffage si nécessaire (en fonction de la température relevée) pour que la température soit optimale dans la cuve.
\\
Vous vous aidere des fonctions « chauffage\_on » et « chauffage\_off » fournies.
\end{exercice}
\subsection{Affichage des mesures sur une page web}
Durée 1h
\begin{exercice}
Exécutez votre programme python puis rendez-vous à ladresse \url{http://localhost:8080}. Vous devriez voir le message « Non implémenté ».
\\
Pour que cette page web affiche la liste des températures mesurées, modifiez la fonction « temp\_format\_html » pour quelle génère un code HTML qui met en forme les mesures dans un tableau.
\end{exercice}
\begin{exercice}
Bonus : Ajoutez une page « /reglage » qui affiche un formulaire pour que lutilisateur puisse renseigner une température à maintenir.
\\
Faites en sorte que lorsque lutilisateur valide le formulaire, la valeur quil a entré soit passée à la fonction « nouvelle\_temp\_cible ».
\end{exercice}
\end{document}