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

View File

@@ -1,13 +1,14 @@
# Surveillance continue avec envoi d'alertes par email + log CSV
# Surveillance continue avec envoi d'alertes par email + log CSV
import mysql.connector
from datetime import datetime, timedelta
import time
import smtplib
from email.mime.text import MIMEText
import pandas as pd
import os
from dotenv import load_dotenv
import os
# Charger les variables d'environnement
load_dotenv()
# --- Config MySQL ---
@@ -18,27 +19,23 @@ config = {
"database": os.getenv("DB_NAME")
}
# --- Fonction de sélection des destinataires selon le site ---
def get_destinataires(lieu):
return os.getenv(f"EMAIL_{lieu.upper()}", os.getenv("EMAIL_DEFAULT")).split(",")
# --- Destinataires email ---
destinataires = ['services@domo91.fr']
# --- Fonction d'envoi de mail ---
def envoyer_mail(sujet, message, destinataires):
msg = MIMEText(message)
msg['Subject'] = sujet
msg['From'] = os.getenv("EMAIL_FROM")
msg['From'] = 'alertes_saclay@domo91.fr'
msg['To'] = ', '.join(destinataires)
try:
with smtplib.SMTP_SSL(os.getenv("SMTP_HOST"), int(os.getenv("SMTP_PORT"))) as server:
server.login(os.getenv("SMTP_USER"), os.getenv("SMTP_PASSWORD"))
with smtplib.SMTP_SSL('smtp.mail.ovh.net', 465) as server:
server.login('alertes_saclay@domo91.fr', 'Kdpke674y23Feq^H')
server.sendmail(msg['From'], destinataires, msg.as_string())
print(f"📧 Mail envoyé à {destinataires}", flush=True)
except Exception as e:
print(f"Erreur envoi mail : {e}", flush=True)
# --- Fonction de surveillance ---
def surveiller():
log_entries = []
@@ -67,6 +64,7 @@ def surveiller():
""", (nom_sonde,))
relevés = cursor.fetchall()
# Log CSV : tous les relevés analysés
for r in relevés:
log_entries.append({
"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"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
cursor.execute(f"""
@@ -122,7 +120,13 @@ def surveiller():
# Enregistrer le log
if 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:
print(f"Erreur : {e}", flush=True)
# --- Boucle principale ---
while True:
print(f"📡 Vérification à {datetime.now()}", flush=True)
surveiller()
time.sleep(300) # 5 minutes