import paho.mqtt.client as mqttClient import mysql.connector import sys import os import logging from datetime import datetime # 📁 Création du dossier de logs s'il n'existe pas dossier_logs = "/var/log/Cuisine_Saclay" os.makedirs(dossier_logs, exist_ok=True) # 📝 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" ) # 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) # 🔌 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}")