#!/usr/bin/env python3 # coding: utf-8 """ Script principal pour la capture d'images en mode connecté. Remplace l'ancien Time_Lapse_Connection.py """ import os import sys import time import logging from timelapse.config import config from timelapse.api_client import api_client from timelapse.capture import timelapse_manager def main(): """ Fonction principale pour la capture d'images en mode connecté. """ logging.info("-------------------------------------------------------------------") logging.info("Démarrage de la capture d'images en mode connecté") try: # Vérifier le statut de la caméra via l'API status = api_client.get_camera_status() if status is None: logging.error("Impossible d'obtenir le statut de la caméra depuis l'API") # Dans le cas où une configuration active existe déjà, continuer avec celle-ci if config.get("config_active", False) and config.get("nb_images_restantes", 0) > 0: logging.info("Utilisation de la configuration locale existante") timelapse_manager.run_capture_sequence(online=False) # Mode hors ligne si API inaccessible else: logging.info("Pas de configuration active, abandon de la capture") sys.exit(1) # Mise à jour de la configuration api_client.update_camera_config(status) # Vérification de l'état de maintenance if status.get("maintenance", False): logging.info("Caméra en mode maintenance, arrêt du script") sys.exit(0) # Vérifier si un arrêt est demandé if 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 }) sys.exit(0) # Si le mode est IDLE et qu'aucune configuration n'est active, ne rien faire if status.get("idle", True) and not config.get("config_active", False): logging.info("Mode IDLE, aucune action à effectuer") sys.exit(0) # Exécuter la séquence de capture sequence_completed = timelapse_manager.run_capture_sequence(online=True) # Si la séquence est terminée (toutes les images capturées), notifier l'API if sequence_completed and config.get("nb_images_restantes", 0) <= 0: logging.info("Toutes les images ont été capturées, notification au serveur") # TODO: Implémenter une méthode pour notifier la fin de la séquence # api_client.notify_sequence_complete() except Exception as e: logging.error(f"Erreur lors de la capture en mode connecté: {e}") sys.exit(1) logging.info("Capture en mode connecté terminée") if __name__ == "__main__": main()