diff --git a/projets/projet_biere/main.py b/projets/projet_biere/main.py
index 0a3ad77..69fded2 100644
--- a/projets/projet_biere/main.py
+++ b/projets/projet_biere/main.py
@@ -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 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(read_temp())
+	print(lecture_temp())
 	time.sleep(1)
+
+
diff --git a/projets/projet_biere/sujet.pdf b/projets/projet_biere/sujet.pdf
new file mode 100644
index 0000000..197dc1c
Binary files /dev/null and b/projets/projet_biere/sujet.pdf differ
diff --git a/projets/projet_biere/sujet.tex b/projets/projet_biere/sujet.tex
index 456a377..74f3ced 100644
--- a/projets/projet_biere/sujet.tex
+++ b/projets/projet_biere/sujet.tex
@@ -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 qu’il affiche bien la valeur de la température chaque seconde
 \end{exercice}
 
+\begin{exercice}
+    Modifiez le programme principal pour qu’il écrive dans un fichier CSV, la date, l’heure 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 n’est pas réglable, le chauffage est donc mis à fond pour faire monter la température, puis eteint lorqu’elle 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 à l’adresse \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 qu’elle 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 l’utilisateur puisse renseigner une température à maintenir.
+    \\
+    Faites en sorte que lorsque l’utilisateur valide le formulaire, la valeur qu’il a entré soit passée à la fonction « nouvelle\_temp\_cible ».
+\end{exercice}
 
 \end{document}