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