#!/usr/bin/env python3 # coding: utf-8 """ Script pour la synchronisation des données stockées en mode hors ligne. Remplace l'ancien Send_data_stocked.py """ import os import sys import logging import time from timelapse.config import config from timelapse.capture import timelapse_manager from timelapse.api_client import api_client def main(): """ Fonction principale pour la synchronisation des données hors ligne. """ logging.info("-------------------------------------------------------------------") logging.info("Démarrage de la synchronisation des données hors ligne") try: # Vérifier la connexion au serveur camera_status = api_client.get_camera_status() if camera_status is None: logging.error("Impossible de se connecter au serveur. Synchronisation reportée.") sys.exit(1) # Vérifier si le système est en maintenance if camera_status.get("maintenance", False): logging.info("Caméra en mode maintenance, aucune synchronisation effectuée") sys.exit(0) # Synchroniser les captures hors ligne start_time = time.time() sync_count = timelapse_manager.sync_offline_captures() duration = time.time() - start_time if sync_count > 0: logging.info(f"Synchronisation réussie de {sync_count} captures en {duration:.2f} secondes") # Vérifier s'il reste des images à synchroniser remaining_offline = timelapse_manager.count_offline_captures() if remaining_offline > 0: logging.info(f"Il reste encore {remaining_offline} captures à synchroniser") else: logging.info("Toutes les captures hors ligne ont été synchronisées") else: logging.info("Aucune capture à synchroniser") # Vérifier si un arrêt est demandé if camera_status.get("stop_flag", False): logging.info("Demande d'arrêt détectée, confirmation au serveur") api_client.confirm_stop() # Réinitialiser l'état actif config.update_config({ "config_active": False, "nb_images_restantes": 0, "stop_current_config": True }) except Exception as e: logging.error(f"Erreur lors de la synchronisation des données: {e}") sys.exit(1) logging.info("Synchronisation terminée") if __name__ == "__main__": main()