84 lines
3.1 KiB
Python
84 lines
3.1 KiB
Python
#!/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() |