Ajout fonction SMS avec journalisation sur develop
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
import mysql.connector
|
import mysql.connector
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
import time
|
import time
|
||||||
@@ -7,6 +6,7 @@ from email.mime.text import MIMEText
|
|||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
import os
|
import os
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from alerte_sms import envoyer_sms_ovh
|
||||||
|
|
||||||
if os.name != 'nt':
|
if os.name != 'nt':
|
||||||
log_dir = Path('/home/debian/Gestion_sondes/Logs')
|
log_dir = Path('/home/debian/Gestion_sondes/Logs')
|
||||||
@@ -16,6 +16,7 @@ else:
|
|||||||
log_dir.mkdir(parents=True, exist_ok=True)
|
log_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
ENVOI_SMS = os.getenv("ENVOI_SMS") == "1"
|
||||||
|
|
||||||
# --- Config MySQL ---
|
# --- Config MySQL ---
|
||||||
config = {
|
config = {
|
||||||
@@ -105,8 +106,10 @@ 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 : {maintenant.strftime('%Y-%m-%d %H:%M:%S')}"
|
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)
|
envoyer_mail(sujet, message, destinataires_list)
|
||||||
|
if ENVOI_SMS:
|
||||||
|
envoyer_sms_ovh(message, lieu)
|
||||||
|
|
||||||
# Suivi pour rappels
|
# Suivi pour rappels
|
||||||
alertes_actives[nom_sonde] = maintenant
|
alertes_actives[nom_sonde] = maintenant
|
||||||
@@ -122,6 +125,8 @@ def surveiller():
|
|||||||
)
|
)
|
||||||
destinataires_list = os.getenv("EMAIL_DESTINATAIRES").split(",")
|
destinataires_list = os.getenv("EMAIL_DESTINATAIRES").split(",")
|
||||||
envoyer_mail(sujet, message, destinataires_list)
|
envoyer_mail(sujet, message, destinataires_list)
|
||||||
|
if ENVOI_SMS:
|
||||||
|
envoyer_sms_ovh(message, lieu)
|
||||||
alertes_actives[nom_sonde] = maintenant
|
alertes_actives[nom_sonde] = maintenant
|
||||||
|
|
||||||
# Vérifier retour à la normale (Acquittement)
|
# Vérifier retour à la normale (Acquittement)
|
||||||
|
|||||||
@@ -1,22 +1,34 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
import ovh
|
import ovh
|
||||||
import os
|
import os
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
from datetime import datetime
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
|
||||||
# Dictionnaire des numéros par site
|
# Dictionnaire des numéros par site
|
||||||
NUMEROS_PAR_SITE = {
|
PHONE_NUMBERS_BY_SITE = {
|
||||||
"Saclay": ["+33635164680", "+33650270939","+33682069405"],
|
"Saclay": ["+33635164680", "+33650270939","+33682069405"],
|
||||||
"Meudon": ["+33616443455"],
|
"Meudon": ["+33616443455"],
|
||||||
# ajoute d'autres sites ici
|
# 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):
|
def envoyer_sms_ovh(message, site):
|
||||||
numeros = NUMEROS_PAR_SITE.get(site)
|
phone_numbers = PHONE_NUMBERS_BY_SITE.get(site)
|
||||||
if not numeros:
|
if not phone_numbers:
|
||||||
print(f"[!] Aucun numéro défini pour le site {site}. SMS non envoyé.")
|
print(f"[!] Aucun numéro défini pour le site {site}. SMS non envoyé.")
|
||||||
return
|
return None
|
||||||
|
|
||||||
client = ovh.Client(
|
client = ovh.Client(
|
||||||
endpoint=os.getenv("OVH_ENDPOINT"),
|
endpoint=os.getenv("OVH_ENDPOINT"),
|
||||||
@@ -31,12 +43,15 @@ def envoyer_sms_ovh(message, site):
|
|||||||
result = client.post(f'/sms/{account}/jobs',
|
result = client.post(f'/sms/{account}/jobs',
|
||||||
sender='Supervision',
|
sender='Supervision',
|
||||||
message=message,
|
message=message,
|
||||||
receivers=numeros,
|
receivers=phone_numbers,
|
||||||
priority='high',
|
priority='high',
|
||||||
noStopClause=True,
|
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
|
return result
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"[!] Erreur envoi SMS OVH : {e}")
|
print(f"[!] Erreur envoi SMS OVH : {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
25
envoyer un SMS avec OVH.py
Normal file
25
envoyer un SMS avec OVH.py
Normal 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
|
||||||
Reference in New Issue
Block a user