From 4afad1e90df94a75c00ca13a120203008a7f6fdb Mon Sep 17 00:00:00 2001 From: Michel Date: Thu, 17 Apr 2025 14:19:02 +0200 Subject: [PATCH 1/3] =?UTF-8?q?=F0=9F=86=95=20Nettoyage=20dossiers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- supervisor_watchdog.py | 2 +- {Scripts => tools}/.deploy.sh | 0 {Scripts => tools}/backup_mysql.sh | 0 {Scripts => tools}/requirements.txt | 0 4 files changed, 1 insertion(+), 1 deletion(-) rename {Scripts => tools}/.deploy.sh (100%) rename {Scripts => tools}/backup_mysql.sh (100%) rename {Scripts => tools}/requirements.txt (100%) diff --git a/supervisor_watchdog.py b/supervisor_watchdog.py index 76a7834..38de996 100644 --- a/supervisor_watchdog.py +++ b/supervisor_watchdog.py @@ -1,6 +1,6 @@ # Controle des services supervisor envoi en cas de disfonction et tous les jours à sept heures # a faire tourner avec crontb -e en sudo -# */30 * * * * /home/debian/travail/myenv/bin/python3 /home/debian/travail/Scripts/supervisor_watchdog.py +# */30 * * * * /home/debian/travail/myenv/bin/python3 /home/debian/travail/tools/supervisor_watchdog.py import subprocess import smtplib from email.mime.text import MIMEText diff --git a/Scripts/.deploy.sh b/tools/.deploy.sh similarity index 100% rename from Scripts/.deploy.sh rename to tools/.deploy.sh diff --git a/Scripts/backup_mysql.sh b/tools/backup_mysql.sh similarity index 100% rename from Scripts/backup_mysql.sh rename to tools/backup_mysql.sh diff --git a/Scripts/requirements.txt b/tools/requirements.txt similarity index 100% rename from Scripts/requirements.txt rename to tools/requirements.txt From 2f1ca5533fb582a5cb11e5fdbd8a164b26061b7c Mon Sep 17 00:00:00 2001 From: Michel Date: Thu, 17 Apr 2025 15:13:16 +0200 Subject: [PATCH 2/3] =?UTF-8?q?"Nouveau=20fichier=20deploy=20pour=20r?= =?UTF-8?q?=C3=A9cup=C3=A9rer=20les=20fichiers=20develop=20sur=20product"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/deploy_product.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 tools/deploy_product.sh diff --git a/tools/deploy_product.sh b/tools/deploy_product.sh new file mode 100644 index 0000000..b6a8960 --- /dev/null +++ b/tools/deploy_product.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +LOG="/home/debian/travail/Logs/deploy_product.log" +REPO_PATH="/home/debian/travail/Gestion_sondes" +DATE=$(date '+%Y-%m-%d %H:%M:%S') + +echo "[$DATE] 🚀 Déploiement de la branche develop vers product" >> $LOG + +cd $REPO_PATH + +# 1. Récupérer les dernières modifs +git fetch origin >> $LOG 2>&1 + +# 2. Basculer sur la branche product +git checkout product >> $LOG 2>&1 + +# 3. Mettre à jour tous les .py depuis develop +git checkout origin/develop -- *.py >> $LOG 2>&1 + +# 4. Commit et push +git commit -am "🧩 Déploiement auto : maj des fichiers .py depuis develop" >> $LOG 2>&1 +git push origin product >> $LOG 2>&1 + +# 5. Redémarrage des services Supervisor +for service in Cuisine_Saclay Monitor cuisine_meudon domo91 Interface +do + supervisorctl restart $service >> $LOG 2>&1 +done + +DATE_END=$(date '+%Y-%m-%d %H:%M:%S') +echo "[$DATE_END] ✅ Déploiement terminé avec succès." >> $LOG From 3c9bf70297d1239d8122d7053f020469a175650e Mon Sep 17 00:00:00 2001 From: Michel Date: Thu, 17 Apr 2025 19:25:53 +0200 Subject: [PATCH 3/3] =?UTF-8?q?=20(Fichier=20domo91.py=20restructur=C3=A9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- domo91.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/domo91.py b/domo91.py index 4473fe9..660249d 100644 --- a/domo91.py +++ b/domo91.py @@ -171,6 +171,20 @@ if st.session_state["authenticated"]: sonde_choisie = st.selectbox("🧪 Choisissez une sonde :", sondes) df_sonde = df[df["Sonde"] == sonde_choisie] + # Ajouter une colonne Heure pour faciliter les filtres + df_sonde["Heure"] = df_sonde["Date"].dt.hour + + # Filtrage par tranche horaire + tranche = st.radio("🕒 Tranche horaire :", + ["Toute la journée", "Matin (6h-12h)", "Après-midi (12h-18h)", "Nuit (18h-6h)"]) + + if tranche == "Matin (6h-12h)": + df_sonde = df_sonde[(df_sonde["Heure"] >= 6) & (df_sonde["Heure"] < 12)] + elif tranche == "Après-midi (12h-18h)": + df_sonde = df_sonde[(df_sonde["Heure"] >= 12) & (df_sonde["Heure"] < 18)] + elif tranche == "Nuit (18h-6h)": + df_sonde = df_sonde[(df_sonde["Heure"] >= 18) | (df_sonde["Heure"] < 6)] + cursor.execute("SELECT Temp_Max FROM Chambres_froides WHERE Lieu = %s AND Sonde = %s", (site_selectionne, sonde_choisie)) seuil = cursor.fetchone() seuil_temp = seuil["Temp_Max"] if seuil else 10 @@ -178,7 +192,21 @@ if st.session_state["authenticated"]: st.subheader("📊 Tableau des relevés") df_filtré = df_sonde.copy() df_filtré = df_filtré.drop(columns="Id", errors="ignore") - st.dataframe(df_filtré, use_container_width=True) + + + def surlignage_temp(val): + try: + if float(val) > seuil_temp: + return "color: red; font-weight: bold" + except: + pass + return "" + + + # Appliquer le style uniquement à la colonne "Temperature" + styled_df = df_filtré.style.applymap(surlignage_temp, subset=["Temperature"]) + + st.dataframe(styled_df, use_container_width=True) st.subheader("📈 Évolution de la température") fig, ax = plt.subplots(figsize=(10, 4)) @@ -190,6 +218,32 @@ if st.session_state["authenticated"]: ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M')) ax.legend() st.pyplot(fig) + # --- Affichage des alertes du jour --- + afficher_alertes = st.toggle("🚨 Afficher les alertes du jour") + + if afficher_alertes: + try: + conn = mysql.connector.connect(**db_config) + cursor = conn.cursor(dictionary=True) + + table_alertes = f"Alertes_{site_selectionne}" + cursor.execute( + f"SELECT Sonde, Debut_defaut, Status FROM `{table_alertes}` WHERE DATE(Debut_defaut) = %s", + (selected_date.strftime("%Y-%m-%d"),) + ) + alertes = cursor.fetchall() + + if alertes: + df_alertes = pd.DataFrame(alertes) + st.subheader("🚨 Alertes enregistrées") + st.dataframe(df_alertes, use_container_width=True) + else: + st.info("Aucune alerte enregistrée pour cette date.") + + cursor.close() + conn.close() + except Exception as e: + st.error(f"Erreur lors de la récupération des alertes : {e}") else: st.warning("Aucune donnée trouvée pour cette date.")