diff --git a/Chauffage.py b/Chauffage.py new file mode 100644 index 0000000..b36c90c --- /dev/null +++ b/Chauffage.py @@ -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}") diff --git a/scripts/update_product.sh b/scripts/update_product.sh index 7c7a9a0..efeeacf 100755 --- a/scripts/update_product.sh +++ b/scripts/update_product.sh @@ -2,31 +2,53 @@ LOG="/home/debian/Gestion_sondes/Logs/update_product.log" REPO_PATH="/home/debian/Gestion_sondes" +BACKUP_DIR="$REPO_PATH/Archives" 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 if [ -d .git ] && [ -f .git/MERGE_HEAD ]; then - echo "[$DATE] ❌ Fusion en cours détectée. Abandon automatique." >> $LOG - echo "➡️ Lancez 'git merge --abort' manuellement si besoin." >> $LOG + echo "[$DATE] ❌ Fusion en cours détectée. Abandon automatique." >> "$LOG" + echo "➡️ Lancez 'git merge --abort' manuellement si besoin." >> "$LOG" exit 1 fi # 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 -git checkout product >> $LOG 2>&1 -git reset --hard origin/product >> $LOG 2>&1 +git checkout product >> "$LOG" 2>&1 +git reset --hard origin/product >> "$LOG" 2>&1 # 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 -git push origin product >> $LOG 2>&1 +git push origin product >> "$LOG" 2>&1 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"