Mise à jour 22/4/25
This commit is contained in:
@@ -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_Saclay"
|
||||||
|
os.makedirs(dossier_logs, exist_ok=True)
|
||||||
|
|
||||||
# Site figé ici
|
# 📝 Configuration du logger
|
||||||
site = "Saclay"
|
logfile = os.path.join(dossier_logs, "Cuisine_Saclay.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 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):
|
def on_message(_client, _userdata, msg):
|
||||||
print(f"[{site}] Message reçu sur {msg.topic}: {msg.payload.decode()}")
|
try:
|
||||||
|
logging.info(f"Message reçu sur {msg.topic}: {msg.payload.decode()}")
|
||||||
cursor = mydb.cursor()
|
cursor = mydb.cursor()
|
||||||
frigo_name = msg.topic.split('/')[-1]
|
frigo_name = msg.topic.split('/')[-1]
|
||||||
sql = f"INSERT INTO {site} (Sonde, Temperature) VALUES (%s, %s)"
|
sql = "INSERT INTO Saclay (Sonde, Temperature) VALUES (%s, %s)"
|
||||||
val = (frigo_name, msg.payload.decode())
|
val = (frigo_name, msg.payload.decode())
|
||||||
cursor.execute(sql, val)
|
cursor.execute(sql, val)
|
||||||
mydb.commit()
|
mydb.commit()
|
||||||
|
logging.info(f"Insertion réussie : {val}")
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"Erreur lors de l'insertion du message : {e}")
|
||||||
|
|
||||||
# Client MQTT
|
# 📡 Connexion MQTT
|
||||||
|
try:
|
||||||
client = mqttClient.Client()
|
client = mqttClient.Client()
|
||||||
client.username_pw_set(os.getenv("MQTT_USER"), os.getenv("MQTT_PASSWORD"))
|
client.username_pw_set("Bwps", "scJ5ACj2keRfI^")
|
||||||
client.on_message = on_message
|
client.on_message = on_message
|
||||||
client.connect(os.getenv("MQTT_HOST"), 1883, 60)
|
client.connect("54.36.188.119", 1883, 60)
|
||||||
client.subscribe(f"{site}/#")
|
client.subscribe("Saclay/#")
|
||||||
|
logging.info("Connexion MQTT réussie et abonnement au topic 'Saclay/#'.")
|
||||||
client.loop_forever()
|
client.loop_forever()
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"Erreur MQTT : {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user