Ajout fonction SMS avec journalisation sur develop

This commit is contained in:
2025-05-11 09:14:02 +02:00
parent 15ff1ab557
commit 787d2c3a40
3 changed files with 54 additions and 9 deletions

View File

@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
import mysql.connector
from datetime import datetime, timedelta
import time
@@ -7,6 +6,7 @@ from email.mime.text import MIMEText
from dotenv import load_dotenv
import os
from pathlib import Path
from alerte_sms import envoyer_sms_ovh
if os.name != 'nt':
log_dir = Path('/home/debian/Gestion_sondes/Logs')
@@ -16,6 +16,7 @@ else:
log_dir.mkdir(parents=True, exist_ok=True)
load_dotenv()
ENVOI_SMS = os.getenv("ENVOI_SMS") == "1"
# --- Config MySQL ---
config = {
@@ -105,8 +106,10 @@ 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 : {maintenant.strftime('%Y-%m-%d %H:%M:%S')}"
)
destinataires_list = os.getenv("EMAIL_DESTINATAIRES").split(",")
destinataires_list = os.getenv("EMAIL_DESTINATAIRES", "").split(",")
envoyer_mail(sujet, message, destinataires_list)
if ENVOI_SMS:
envoyer_sms_ovh(message, lieu)
# Suivi pour rappels
alertes_actives[nom_sonde] = maintenant
@@ -122,6 +125,8 @@ def surveiller():
)
destinataires_list = os.getenv("EMAIL_DESTINATAIRES").split(",")
envoyer_mail(sujet, message, destinataires_list)
if ENVOI_SMS:
envoyer_sms_ovh(message, lieu)
alertes_actives[nom_sonde] = maintenant
# Vérifier retour à la normale (Acquittement)

View File

@@ -1,22 +1,34 @@
# -*- coding: utf-8 -*-
import ovh
import os
from dotenv import load_dotenv
from datetime import datetime
from pathlib import Path
load_dotenv()
# Dictionnaire des numéros par site
NUMEROS_PAR_SITE = {
PHONE_NUMBERS_BY_SITE = {
"Saclay": ["+33635164680", "+33650270939","+33682069405"],
"Meudon": ["+33616443455"],
# ajoute d'autres sites ici
}
# Dossier de logs
log_dir = Path("/home/debian/Gestion_sondes/Logs") if os.name != "nt" else Path.cwd() / "Logs"
log_dir.mkdir(parents=True, exist_ok=True)
log_file = log_dir / "journal_sms.csv"
def journaliser_sms(message, site, phone_number):
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
lignes = [f"{timestamp};{site};{num};{message}" for num in phone_number]
with open(log_file, "a", encoding="utf-8") as f:
for ligne in lignes:
f.write(ligne + "\n")
def envoyer_sms_ovh(message, site):
numeros = NUMEROS_PAR_SITE.get(site)
if not numeros:
phone_numbers = PHONE_NUMBERS_BY_SITE.get(site)
if not phone_numbers:
print(f"[!] Aucun numéro défini pour le site {site}. SMS non envoyé.")
return
return None
client = ovh.Client(
endpoint=os.getenv("OVH_ENDPOINT"),
@@ -31,12 +43,15 @@ def envoyer_sms_ovh(message, site):
result = client.post(f'/sms/{account}/jobs',
sender='Supervision',
message=message,
receivers=numeros,
receivers=phone_numbers,
priority='high',
noStopClause=True,
)
print(f"[✓] SMS envoyé pour {site} à {numeros}")
print(f"[✓] SMS envoyé pour {site} à {phone_numbers}")
journaliser_sms(message, site, phone_numbers)
return result
except Exception as e:
print(f"[!] Erreur envoi SMS OVH : {e}")
return None

View File

@@ -0,0 +1,25 @@
import ovh
import os
from dotenv import load_dotenv
load_dotenv()
def envoyer_sms_ovh(message, phone_number):
client = ovh.Client(
endpoint=os.getenv("OVH_ENDPOINT"),
application_key=os.getenv("OVH_APP_KEY"),
application_secret=os.getenv("OVH_APP_SECRET"),
consumer_key=os.getenv("OVH_CONSUMER_KEY"),
)
account = os.getenv("OVH_SMS_ACCOUNT") # Nom du service SMS OVH
# Envoi du SMS
result = client.post(f'/sms/{account}/jobs',
sender='Supervision', # nom affiché sur certains téléphones
message=message,
receivers=phone_number,
priority='high',
noStopClause=True,
)
return result