From 3b92d6a326b26e3ec417b228409e252a926754fc Mon Sep 17 00:00:00 2001 From: Michel Date: Tue, 22 Apr 2025 13:15:56 +0200 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=2022/4/25?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cuisine_meudon.py | 84 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 57 insertions(+), 27 deletions(-) diff --git a/Cuisine_meudon.py b/Cuisine_meudon.py index 14a3a7a..90213ac 100644 --- a/Cuisine_meudon.py +++ b/Cuisine_meudon.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_Meudon" +os.makedirs(dossier_logs, exist_ok=True) -# Site figé ici -site = "Meudon" - -# 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_Meudon.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 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) -# 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 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 e: + logging.error(f"Erreur MQTT : {e}")