diff --git a/Cuisine_saclay.py b/Cuisine_saclay.py index d8d6814..c194121 100644 --- a/Cuisine_saclay.py +++ b/Cuisine_saclay.py @@ -1,35 +1,65 @@ import paho.mqtt.client as mqttClient import mysql.connector +import sys import os -from dotenv import load_dotenv +import logging +from datetime import datetime -load_dotenv() +# 📁 Création du dossier de logs s'il n'existe pas +dossier_logs = "/var/log/Cuisine_Saclay" +os.makedirs(dossier_logs, exist_ok=True) -# Site figé ici -site = "Saclay" - -# Connexion MySQL -mydb = mysql.connector.connect( - host=os.getenv("DB_HOST"), - user=os.getenv("DB_USER"), - password=os.getenv("DB_PASSWORD"), - database=os.getenv("DB_NAME") +# 📝 Configuration du logger +logfile = os.path.join(dossier_logs, "Cuisine_Saclay.log") +logging.basicConfig( + filename=logfile, + level=logging.INFO, + format="%(asctime)s - %(levelname)s - %(message)s" ) -# Callback MQTT -def on_message(_client, _userdata, msg): - print(f"[{site}] Message reçu sur {msg.topic}: {msg.payload.decode()}") - cursor = mydb.cursor() - 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() +# Ajoute aussi l'affichage console +console = logging.StreamHandler() +console.setLevel(logging.INFO) +formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s") +console.setFormatter(formatter) +logging.getLogger('').addHandler(console) -# Client MQTT -client = mqttClient.Client() -client.username_pw_set(os.getenv("MQTT_USER"), os.getenv("MQTT_PASSWORD")) -client.on_message = on_message -client.connect(os.getenv("MQTT_HOST"), 1883, 60) -client.subscribe(f"{site}/#") -client.loop_forever() \ No newline at end of file +# 🔌 Connexion MySQL +try: + sys.path.insert(0, "/myenv/lib/python3.11.2/site-packages") + mydb = mysql.connector.connect( + host="54.36.188.119", + user="michel", + password="#SO2&1nf%mZ@jfh", + database="Sondes" + ) + logging.info("Connexion MySQL réussie.") +except mysql.connector.Error as err: + logging.error(f"Erreur de connexion MySQL : {err}") + sys.exit(1) + +# 📥 Callback MQTT +def on_message(_client, _userdata, msg): + try: + logging.info(f"Message reçu sur {msg.topic}: {msg.payload.decode()}") + cursor = mydb.cursor() + frigo_name = msg.topic.split('/')[-1] + sql = "INSERT INTO Saclay (Sonde, Temperature) VALUES (%s, %s)" + val = (frigo_name, msg.payload.decode()) + cursor.execute(sql, val) + mydb.commit() + logging.info(f"Insertion réussie : {val}") + except Exception as e: + logging.error(f"Erreur lors de l'insertion du message : {e}") + +# 📡 Connexion MQTT +try: + client = mqttClient.Client() + client.username_pw_set("Bwps", "scJ5ACj2keRfI^") + client.on_message = on_message + client.connect("54.36.188.119", 1883, 60) + client.subscribe("Saclay/#") + logging.info("Connexion MQTT réussie et abonnement au topic 'Saclay/#'.") + client.loop_forever() +except Exception as e: + logging.error(f"Erreur MQTT : {e}")