import os
import json
import requests
import shutil

TEMP_FILE = "/home/cedri/projet-capture-2026-enderbird/accumulation/raspberryPi/donnees_temp.json"
SEND_FILE = "/home/cedri/projet-capture-2026-enderbird/accumulation/raspberryPi/donnees_to_send.json"
NODEJS_URL = "http://projet-capture.wavesofsounds.space"

# Vérifier que le fichier temp existe et n'est pas vide
if not os.path.exists(TEMP_FILE) or os.path.getsize(TEMP_FILE) == 0:
    print("⚠️ No data to send")
    exit()

# 1️⃣ Renommer atomiquement le fichier temp pour "le verrouiller"
LOCK_FILE = TEMP_FILE + ".lock"
os.rename(TEMP_FILE, LOCK_FILE)  # instantané → Arduino va créer un nouveau temp après

# 2️⃣ Copier le fichier verrouillé vers le fichier d'envoi
shutil.copy2(LOCK_FILE, SEND_FILE)

# 3️⃣ Supprimer le fichier verrouillé
os.remove(LOCK_FILE)

print(f"📂 Copied {SEND_FILE} and cleared TEMP_FILE atomically")

# 4️⃣ Lire les données à envoyer
with open(SEND_FILE, "r") as f:
    data_to_send = json.load(f)

# 5️⃣ Envoi au serveur
sent_count = 0
for entry in data_to_send:
    payload = {"mesure": entry["mesure"], "moment": entry["moment"]}
    try:
        response = requests.post(NODEJS_URL, data=payload, timeout=5)
        if response.status_code == 200:
            sent_count += 1
        else:
            print(f"⚠️ Server error {response.status_code} for {payload}")
    except Exception as e:
        print(f"❌ Failed to send {payload}: {e}")

print(f"✅ Sent {sent_count}/{len(data_to_send)} readings")

# 6️⃣ Supprimer le fichier d’envoi après envoi complet
os.remove(SEND_FILE)