diff --git a/Chaufferie.py b/Chaufferie.py index c92a2a0..7dc15e3 100644 --- a/Chaufferie.py +++ b/Chaufferie.py @@ -48,11 +48,12 @@ def on_message(_client, _userdata, msg): logging.info(f"Message reçu sur {msg.topic}: {msg.payload.decode()}") cursor = mydb.cursor() - frigo_name = msg.topic.split('/')[-1] + topic_mqtt = msg.topic.split('/')[1] # ex: 'ECS' + frigo_name = msg.topic.split('/')[-1] # ex: 'Dietrich_1' temperature = float(msg.payload.decode()) - sql = "INSERT INTO Chaufferie (Sonde, Temperature, Date) VALUES (%s, %s, %s)" - val = (frigo_name, temperature, datetime.now()) + sql = "INSERT INTO Chaufferie (Sonde, Temperature, Date, Topic) VALUES (%s, %s, %s, %s)" + val = (frigo_name, temperature, datetime.now(), topic_mqtt) cursor.execute(sql, val) mydb.commit() diff --git a/alerte_sms.py b/alerte_sms.py index 1aa8da2..280e40b 100644 --- a/alerte_sms.py +++ b/alerte_sms.py @@ -1,59 +1,33 @@ -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 -PHONE_NUMBERS_BY_SITE = { - 'Saclay': os.getenv('PHONE_SACLAY', '').split(','), - 'Meudon': os.getenv('PHONE_MEUDON', '').split(','), - # 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 send_sms(message: str, site: str) -> None: phone_numbers = PHONE_NUMBERS_BY_SITE.get(site) if not phone_numbers or phone_numbers == ['']: print(f"[!] Aucun numéro défini pour le site {site}. SMS non envoyé.") - return None - - 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") + return try: - sender = os.getenv("OVH_SMS_SENDER") + 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"), + ) - result = client.post(f'/sms/{account}/jobs', + sender = os.getenv("OVH_SMS_SENDER") + account = os.getenv("OVH_SMS_ACCOUNT") + + result = client.post(f"/sms/{account}/jobs", sender=sender, message=message, receivers=phone_numbers, priority='high', noStopClause=True, - ) - print(f"[✓] SMS envoyé pour {site} à {phone_numbers}") - journaliser_sms(message, site, phone_numbers) - return result + charset='UTF-8', + class_='phoneDisplay', + coding='7bit', + senderForResponse=False, + validityPeriod=2880) + + print(f"[✓] SMS envoyé à {phone_numbers} pour {site}") + # Optionnel : journaliser_sms(message, site, phone_numbers) except Exception as e: print(f"[!] Erreur envoi SMS OVH : {e}") - return None - -