(Fichier domo91.py restructuré)
This commit is contained in:
56
domo91.py
56
domo91.py
@@ -171,6 +171,20 @@ if st.session_state["authenticated"]:
|
|||||||
sonde_choisie = st.selectbox("🧪 Choisissez une sonde :", sondes)
|
sonde_choisie = st.selectbox("🧪 Choisissez une sonde :", sondes)
|
||||||
df_sonde = df[df["Sonde"] == sonde_choisie]
|
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))
|
cursor.execute("SELECT Temp_Max FROM Chambres_froides WHERE Lieu = %s AND Sonde = %s", (site_selectionne, sonde_choisie))
|
||||||
seuil = cursor.fetchone()
|
seuil = cursor.fetchone()
|
||||||
seuil_temp = seuil["Temp_Max"] if seuil else 10
|
seuil_temp = seuil["Temp_Max"] if seuil else 10
|
||||||
@@ -178,7 +192,21 @@ if st.session_state["authenticated"]:
|
|||||||
st.subheader("📊 Tableau des relevés")
|
st.subheader("📊 Tableau des relevés")
|
||||||
df_filtré = df_sonde.copy()
|
df_filtré = df_sonde.copy()
|
||||||
df_filtré = df_filtré.drop(columns="Id", errors="ignore")
|
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")
|
st.subheader("📈 Évolution de la température")
|
||||||
fig, ax = plt.subplots(figsize=(10, 4))
|
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.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
|
||||||
ax.legend()
|
ax.legend()
|
||||||
st.pyplot(fig)
|
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:
|
else:
|
||||||
st.warning("Aucune donnée trouvée pour cette date.")
|
st.warning("Aucune donnée trouvée pour cette date.")
|
||||||
|
|||||||
Reference in New Issue
Block a user