Files
timelapse-raspi/timelapse_offline.py

70 lines
2.5 KiB
Python

#!/usr/bin/env python3
# coding: utf-8
"""
Script principal pour la capture d'images en mode hors ligne.
Remplace l'ancien Time_Lapse_NoConnection.py
"""
import os
import sys
import time
import logging
from timelapse.config import config
from timelapse.capture import timelapse_manager
from timelapse.sensors import micro_controller
def main():
"""
Fonction principale pour la capture d'images en mode hors ligne.
"""
logging.info("-------------------------------------------------------------------")
logging.info("Démarrage de la capture d'images en mode hors ligne")
try:
# Vérifier si une configuration active existe
is_active_config = config.get("config_active", False)
is_stopped = config.get("stop_current_config", False)
remaining_images = config.get("nb_images_restantes", 0)
# Si arrêté ou pas de configuration active, ne rien faire
if is_stopped:
logging.info("Configuration arrêtée, aucune action à effectuer")
return
if not is_active_config:
logging.info("Aucune configuration active en mode hors ligne")
return
if remaining_images <= 0:
logging.info("Aucune image restante à capturer")
# Désactiver la configuration puisqu'elle est terminée
config.update_config({"config_active": False})
return
logging.info(f"Configuration: {remaining_images} images à capturer")
# Exécuter la séquence de capture en mode hors ligne
sequence_completed = timelapse_manager.run_capture_sequence(online=False)
# Obtenir l'intervalle de timelapse pour le microcontrôleur si nécessaire
interval = config.get("timelapse", 3)
if interval > 0 and is_active_config and not sequence_completed:
logging.info(f"Envoi de l'intervalle au microcontrôleur: {interval}s")
micro_controller.send_interval(interval)
else:
# Si la séquence est terminée, réinitialiser l'intervalle
if sequence_completed:
logging.info("Séquence terminée, réinitialisation de l'intervalle")
micro_controller.send_interval(0) # 0 pour désactiver
except Exception as e:
logging.error(f"Erreur lors de la capture en mode hors ligne: {e}")
sys.exit(1)
logging.info("Capture en mode hors ligne terminée")
if __name__ == "__main__":
main()