diff --git a/.env b/.env index 702821a..99cbf1a 100644 --- a/.env +++ b/.env @@ -1,3 +1,16 @@ DB_HOST=54.36.188.119 DB_USER=michel -DB_PASSWORD=#SO2&1nf%mZ@jfh \ No newline at end of file +DB_PASSWORD=#SO2&1nf%mZ@jfh +DB_NAME=Sondes + +MQTT_HOST=54.36.188.119 +MQTT_USER=Bwps +MQTT_PASSWORD=scJ5ACj2keRfI^ + +# === EMAIL SMTP === +SMTP_HOST=smtp.mail.ovh.net +SMTP_PORT=465 +SMTP_USER=alertes_saclay@domo91.fr +SMTP_PASSWORD=Kdpke674y23Feq^H +EMAIL_FROM=alertes_saclay@domo91.fr +EMAIL_DEST=services@domo91.fr diff --git a/.gitignore b/.gitignore index 1a9ae9c..adfc23b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ venv/ env/ .env/ +.env # 👉 Fichiers Python compilés __pycache__/ diff --git a/Cuisine_meudon.py b/Cuisine_meudon.py index e8c1b05..14a3a7a 100644 --- a/Cuisine_meudon.py +++ b/Cuisine_meudon.py @@ -1,30 +1,35 @@ import paho.mqtt.client as mqttClient -client = mqttClient.Client() import mysql.connector -import sys -sys.path.insert(0, "/myenv/lib/python3.11.2/site-packages") +import os +from dotenv import load_dotenv -# Configuration de la connexion MySQL +load_dotenv() + +# Site figé ici +site = "Meudon" + +# Connexion MySQL mydb = mysql.connector.connect( - host="54.36.188.119", - user="michel", - password="#SO2&1nf%mZ@jfh", - database="Sondes" + host=os.getenv("DB_HOST"), + user=os.getenv("DB_USER"), + password=os.getenv("DB_PASSWORD"), + database=os.getenv("DB_NAME") ) -# Fonction de callback quand un message est reçu +# Callback MQTT def on_message(_client, _userdata, msg): - print(f"Message reçu sur {msg.topic}: {msg.payload.decode()}") + print(f"[{site}] Message reçu sur {msg.topic}: {msg.payload.decode()}") cursor = mydb.cursor() - frigo_name = msg.topic.split('/')[-1] # Prend la dernière partie après le "/" - sql = "INSERT INTO Meudon (Sonde, Temperature) VALUES (%s, %s)" + frigo_name = msg.topic.split('/')[-1] + sql = f"INSERT INTO {site} (Sonde, Temperature) VALUES (%s, %s)" val = (frigo_name, msg.payload.decode()) cursor.execute(sql, val) mydb.commit() -# Configuration du client MQTT -client.username_pw_set("Bwps", "scJ5ACj2keRfI^") +# Client MQTT +client = mqttClient.Client() +client.username_pw_set(os.getenv("MQTT_USER"), os.getenv("MQTT_PASSWORD")) client.on_message = on_message -client.connect("54.36.188.119", 1883, 60) -client.subscribe("Meudon/#") # S'abonner à tous les topics commençant par Saclay -client.loop_forever() # Rester connecté en continu pour écouter les messages +client.connect(os.getenv("MQTT_HOST"), 1883, 60) +client.subscribe(f"{site}/#") +client.loop_forever() \ No newline at end of file diff --git a/Cuisine_saclay.py b/Cuisine_saclay.py index 4e68428..d8d6814 100644 --- a/Cuisine_saclay.py +++ b/Cuisine_saclay.py @@ -1,30 +1,35 @@ import paho.mqtt.client as mqttClient -client = mqttClient.Client() import mysql.connector -import sys -sys.path.insert(0, "/myenv/lib/python3.11.2/site-packages") +import os +from dotenv import load_dotenv -# Configuration de la connexion MySQL +load_dotenv() + +# Site figé ici +site = "Saclay" + +# Connexion MySQL mydb = mysql.connector.connect( - host="54.36.188.119", - user="michel", - password="#SO2&1nf%mZ@jfh", - database="Sondes" + host=os.getenv("DB_HOST"), + user=os.getenv("DB_USER"), + password=os.getenv("DB_PASSWORD"), + database=os.getenv("DB_NAME") ) -# Fonction de callback quand un message est reçu +# Callback MQTT def on_message(_client, _userdata, msg): - print(f"Message reçu sur {msg.topic}: {msg.payload.decode()}") + print(f"[{site}] Message reçu sur {msg.topic}: {msg.payload.decode()}") cursor = mydb.cursor() - frigo_name = msg.topic.split('/')[-1] # Prend la dernière partie après le "/" - sql = "INSERT INTO Saclay (Sonde, Temperature) VALUES (%s, %s)" + frigo_name = msg.topic.split('/')[-1] + sql = f"INSERT INTO {site} (Sonde, Temperature) VALUES (%s, %s)" val = (frigo_name, msg.payload.decode()) cursor.execute(sql, val) mydb.commit() -# Configuration du client MQTT -client.username_pw_set("Bwps", "scJ5ACj2keRfI^") +# Client MQTT +client = mqttClient.Client() +client.username_pw_set(os.getenv("MQTT_USER"), os.getenv("MQTT_PASSWORD")) client.on_message = on_message -client.connect("54.36.188.119", 1883, 60) -client.subscribe("Saclay/#") # S'abonner à tous les topics commençant par Saclay -client.loop_forever() # Rester connecté en continu pour écouter les messages +client.connect(os.getenv("MQTT_HOST"), 1883, 60) +client.subscribe(f"{site}/#") +client.loop_forever() \ No newline at end of file diff --git a/Monitor.py b/Monitor.py index 60d51e4..3f2fd34 100644 --- a/Monitor.py +++ b/Monitor.py @@ -5,32 +5,38 @@ import time import smtplib from email.mime.text import MIMEText import pandas as pd +from dotenv import load_dotenv +import os + +# Charger les variables d'environnement +load_dotenv() # --- Config MySQL --- config = { - "host": "54.36.188.119", - "user": "michel", - "password": "#SO2&1nf%mZ@jfh", - "database": "Sondes" + "host": os.getenv("DB_HOST"), + "user": os.getenv("DB_USER"), + "password": os.getenv("DB_PASSWORD"), + "database": os.getenv("DB_NAME") } # --- Destinataires email --- -destinataires = ['services@domo91.fr'] +destinataires = os.getenv("EMAIL_DEST").split(",") # --- Fonction d'envoi de mail --- def envoyer_mail(sujet, message, destinataires): msg = MIMEText(message) msg['Subject'] = sujet - msg['From'] = 'alertes_saclay@domo91.fr' + msg['From'] = os.getenv("EMAIL_FROM") msg['To'] = ', '.join(destinataires) try: - with smtplib.SMTP_SSL('smtp.mail.ovh.net', 465) as server: - server.login('alertes_saclay@domo91.fr', 'Kdpke674y23Feq^H') + 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")) 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 = [] diff --git a/domo91.py b/domo91.py index 484cfe7..314c24f 100644 --- a/domo91.py +++ b/domo91.py @@ -6,11 +6,13 @@ from datetime import date import matplotlib.pyplot as plt import matplotlib.dates as mdates from fpdf import FPDF +from dotenv import load_dotenv +load_dotenv() import os import random import datetime -st.set_page_config(page_title="Domo91 - Surveillance", layout="wide") +st.set_page_config(page_title="Domo91 - Gestion sondes", layout="wide") if "authenticated" not in st.session_state: st.session_state["authenticated"] = False st.session_state["role"] = None @@ -20,13 +22,11 @@ st.title("📡 Supervision Températures") # --- Configuration base de données --- db_config = { - "host": "54.36.188.119", - "user": "michel", - "password": "#SO2&1nf%mZ@jfh", - "database": "Sondes" + "host": os.getenv("DB_HOST"), + "user": os.getenv("DB_USER"), + "password": os.getenv("DB_PASSWORD"), + "database": os.getenv("DB_NAME") } - - # --- Fonction de génération PDF --- def generer_pdf(site, date_str): st.info(f"Génération du rapport PDF pour {site} à la date {date_str}")