This commit is contained in:
2025-04-22 15:37:44 +02:00
parent d895c3fd91
commit 08a94ed412

View File

@@ -5,9 +5,10 @@ import time
import smtplib import smtplib
from email.mime.text import MIMEText from email.mime.text import MIMEText
import pandas as pd import pandas as pd
import os
from dotenv import load_dotenv from dotenv import load_dotenv
import os
# Charger les variables d'environnement
load_dotenv() load_dotenv()
# --- Config MySQL --- # --- Config MySQL ---
@@ -18,27 +19,23 @@ config = {
"database": os.getenv("DB_NAME") "database": os.getenv("DB_NAME")
} }
# --- Destinataires email ---
# --- Fonction de sélection des destinataires selon le site --- destinataires = ['services@domo91.fr']
def get_destinataires(lieu):
return os.getenv(f"EMAIL_{lieu.upper()}", os.getenv("EMAIL_DEFAULT")).split(",")
# --- Fonction d'envoi de mail --- # --- Fonction d'envoi de mail ---
def envoyer_mail(sujet, message, destinataires): def envoyer_mail(sujet, message, destinataires):
msg = MIMEText(message) msg = MIMEText(message)
msg['Subject'] = sujet msg['Subject'] = sujet
msg['From'] = os.getenv("EMAIL_FROM") msg['From'] = 'alertes_saclay@domo91.fr'
msg['To'] = ', '.join(destinataires) msg['To'] = ', '.join(destinataires)
try: try:
with smtplib.SMTP_SSL(os.getenv("SMTP_HOST"), int(os.getenv("SMTP_PORT"))) as server: with smtplib.SMTP_SSL('smtp.mail.ovh.net', 465) as server:
server.login(os.getenv("SMTP_USER"), os.getenv("SMTP_PASSWORD")) server.login('alertes_saclay@domo91.fr', 'Kdpke674y23Feq^H')
server.sendmail(msg['From'], destinataires, msg.as_string()) server.sendmail(msg['From'], destinataires, msg.as_string())
print(f"📧 Mail envoyé à {destinataires}", flush=True) print(f"📧 Mail envoyé à {destinataires}", flush=True)
except Exception as e: except Exception as e:
print(f"Erreur envoi mail : {e}", flush=True) print(f"Erreur envoi mail : {e}", flush=True)
# --- Fonction de surveillance --- # --- Fonction de surveillance ---
def surveiller(): def surveiller():
log_entries = [] log_entries = []
@@ -67,6 +64,7 @@ def surveiller():
""", (nom_sonde,)) """, (nom_sonde,))
relevés = cursor.fetchall() relevés = cursor.fetchall()
# Log CSV : tous les relevés analysés
for r in relevés: for r in relevés:
log_entries.append({ log_entries.append({
"Date": r['Date'], "Date": r['Date'],
@@ -99,7 +97,7 @@ def surveiller():
f"La sonde '{nom_sonde}' du site '{lieu}' a dépassé le seuil de {seuil}°C " f"La sonde '{nom_sonde}' du site '{lieu}' a dépassé le seuil de {seuil}°C "
f"depuis plus de 30 minutes.\nHeure : {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}" f"depuis plus de 30 minutes.\nHeure : {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
) )
envoyer_mail(sujet, message, get_destinataires(lieu)) envoyer_mail(sujet, message, destinataires)
# Acquittement automatique # Acquittement automatique
cursor.execute(f""" cursor.execute(f"""
@@ -122,7 +120,13 @@ def surveiller():
# Enregistrer le log # Enregistrer le log
if log_entries: if log_entries:
df_logs = pd.DataFrame(log_entries) df_logs = pd.DataFrame(log_entries)
df_logs.to_csv("/home/debian/travail/Logs/monitor.csv", sep=";", index=False) df_logs.to_csv("/home/debian/travail/logs/monitor.csv", sep=";", index=False)
except Exception as e: except Exception as e:
print(f"Erreur : {e}", flush=True) print(f"Erreur : {e}", flush=True)
# --- Boucle principale ---
while True:
print(f"📡 Vérification à {datetime.now()}", flush=True)
surveiller()
time.sleep(300) # 5 minutes