Mise à jour 22/4/25

This commit is contained in:
2025-04-22 13:15:56 +02:00
parent 9d84e640e9
commit 3b92d6a326

View File

@@ -1,35 +1,65 @@
import paho.mqtt.client as mqttClient import paho.mqtt.client as mqttClient
import mysql.connector import mysql.connector
import sys
import os 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 # 📝 Configuration du logger
site = "Meudon" logfile = os.path.join(dossier_logs, "Cuisine_Meudon.log")
logging.basicConfig(
# Connexion MySQL filename=logfile,
mydb = mysql.connector.connect( level=logging.INFO,
host=os.getenv("DB_HOST"), format="%(asctime)s - %(levelname)s - %(message)s"
user=os.getenv("DB_USER"),
password=os.getenv("DB_PASSWORD"),
database=os.getenv("DB_NAME")
) )
# Callback MQTT # Ajoute aussi un affichage console si utile :
def on_message(_client, _userdata, msg): console = logging.StreamHandler()
print(f"[{site}] Message reçu sur {msg.topic}: {msg.payload.decode()}") console.setLevel(logging.INFO)
cursor = mydb.cursor() formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
frigo_name = msg.topic.split('/')[-1] console.setFormatter(formatter)
sql = f"INSERT INTO {site} (Sonde, Temperature) VALUES (%s, %s)" logging.getLogger('').addHandler(console)
val = (frigo_name, msg.payload.decode())
cursor.execute(sql, val)
mydb.commit()
# Client MQTT # 🔌 Connexion MySQL
client = mqttClient.Client() try:
client.username_pw_set(os.getenv("MQTT_USER"), os.getenv("MQTT_PASSWORD")) sys.path.insert(0, "/myenv/lib/python3.11.2/site-packages")
client.on_message = on_message mydb = mysql.connector.connect(
client.connect(os.getenv("MQTT_HOST"), 1883, 60) host="54.36.188.119",
client.subscribe(f"{site}/#") user="michel",
client.loop_forever() 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}")