import paho.mqtt.client as mqttClient import mysql.connector import sys import os import logging from dotenv import load_dotenv # Charger les variables d'environnement load_dotenv() # 📁 Création du dossier de logs s'il n'existe pas dossier_logs = "/var/log/Cuisine_Meudon" os.makedirs(dossier_logs, exist_ok=True) # 📝 Configuration du logger logfile = os.path.join(dossier_logs, "Cuisine_Meudon.log") logging.basicConfig( filename=logfile, level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s" ) # Ajoute aussi un affichage console si utile : 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=os.getenv("DB_HOST"), user=os.getenv("DB_USER"), password=os.getenv("DB_PASSWORD"), database=os.getenv("DB_NAME") ) 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 Meudon (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("Meudon/#") logging.info("Connexion MQTT réussie et abonnement au topic 'Meudon/#'.") client.loop_forever() except Exception as err: logging.error(f"Erreur MQTT : {err}")