Ajout ou correction sur develop du 27/5/25
This commit is contained in:
68
Chauffage.py
Normal file
68
Chauffage.py
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
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/Chaufferie_Saclay"
|
||||||
|
os.makedirs(dossier_logs, exist_ok=True)
|
||||||
|
|
||||||
|
# 📝 Configuration du logger
|
||||||
|
logfile = os.path.join(dossier_logs, "Chaufferie_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=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 Chaufferie (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("Chaufferie/#")
|
||||||
|
logging.info("Connexion MQTT réussie et abonnement au topic 'Chaufferie/#'.")
|
||||||
|
client.loop_forever()
|
||||||
|
except Exception as err:
|
||||||
|
logging.error(f"Erreur MQTT : {err}")
|
||||||
@@ -2,31 +2,53 @@
|
|||||||
|
|
||||||
LOG="/home/debian/Gestion_sondes/Logs/update_product.log"
|
LOG="/home/debian/Gestion_sondes/Logs/update_product.log"
|
||||||
REPO_PATH="/home/debian/Gestion_sondes"
|
REPO_PATH="/home/debian/Gestion_sondes"
|
||||||
|
BACKUP_DIR="$REPO_PATH/Archives"
|
||||||
DATE=$(date '+%Y-%m-%d %H:%M:%S')
|
DATE=$(date '+%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
echo "[$DATE] 🔄 Lancement du script de mise à jour" >> $LOG
|
echo "[$DATE] 🔄 Lancement du script de mise à jour" >> "$LOG"
|
||||||
|
|
||||||
cd $REPO_PATH || { echo "❌ Dossier introuvable : $REPO_PATH" >> $LOG; exit 1; }
|
cd "$REPO_PATH" || { echo "❌ Dossier introuvable : $REPO_PATH" >> "$LOG"; exit 1; }
|
||||||
|
|
||||||
|
# Création du dossier d'archives s'il n'existe pas
|
||||||
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
|
||||||
|
# Trouver le dernier numéro de version
|
||||||
|
VERSION=0
|
||||||
|
for f in "$BACKUP_DIR"/product_backup_*.tar.gz; do
|
||||||
|
if [[ $f =~ product_backup_([0-9]+)\.tar\.gz ]]; then
|
||||||
|
num=${BASH_REMATCH[1]}
|
||||||
|
if (( num > VERSION )); then
|
||||||
|
VERSION=$num
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
VERSION=$((VERSION + 1))
|
||||||
|
VERSION_PADDED=$(printf "%02d" $VERSION)
|
||||||
|
|
||||||
|
# Sauvegarde du dossier actuel
|
||||||
|
BACKUP_FILE="$BACKUP_DIR/product_backup_$VERSION_PADDED.tar.gz"
|
||||||
|
tar -czf "$BACKUP_FILE" . --exclude=".git" >> "$LOG" 2>&1
|
||||||
|
echo "[$DATE] 💾 Sauvegarde enregistrée : $BACKUP_FILE" >> "$LOG"
|
||||||
|
|
||||||
# Vérifie s'il y a une fusion en cours
|
# Vérifie s'il y a une fusion en cours
|
||||||
if [ -d .git ] && [ -f .git/MERGE_HEAD ]; then
|
if [ -d .git ] && [ -f .git/MERGE_HEAD ]; then
|
||||||
echo "[$DATE] ❌ Fusion en cours détectée. Abandon automatique." >> $LOG
|
echo "[$DATE] ❌ Fusion en cours détectée. Abandon automatique." >> "$LOG"
|
||||||
echo "➡️ Lancez 'git merge --abort' manuellement si besoin." >> $LOG
|
echo "➡️ Lancez 'git merge --abort' manuellement si besoin." >> "$LOG"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Récupération des dernières modifications distantes
|
# Récupération des dernières modifications distantes
|
||||||
git fetch origin >> $LOG 2>&1
|
git fetch origin >> "$LOG" 2>&1
|
||||||
|
|
||||||
# Réinitialisation de la branche product sur la version distante
|
# Réinitialisation de la branche product sur la version distante
|
||||||
git checkout product >> $LOG 2>&1
|
git checkout product >> "$LOG" 2>&1
|
||||||
git reset --hard origin/product >> $LOG 2>&1
|
git reset --hard origin/product >> "$LOG" 2>&1
|
||||||
|
|
||||||
# Fusion directe depuis origin/develop
|
# Fusion directe depuis origin/develop
|
||||||
git merge origin/develop -m "🧩 Merge auto develop → product" >> $LOG 2>&1
|
git merge origin/develop -m "🧩 Merge auto develop → product" >> "$LOG" 2>&1
|
||||||
|
|
||||||
# Push vers le dépôt distant
|
# Push vers le dépôt distant
|
||||||
git push origin product >> $LOG 2>&1
|
git push origin product >> "$LOG" 2>&1
|
||||||
|
|
||||||
DATE_END=$(date '+%Y-%m-%d %H:%M:%S')
|
DATE_END=$(date '+%Y-%m-%d %H:%M:%S')
|
||||||
echo "[$DATE_END] ✅ Mise à jour terminée avec succès." >> $LOG
|
echo "[$DATE_END] ✅ Mise à jour terminée avec succès (v$VERSION_PADDED)" >> "$LOG"
|
||||||
|
|||||||
Reference in New Issue
Block a user