diff --git a/Automate.py b/Automate.py index 41b0228..bc5e635 100644 --- a/Automate.py +++ b/Automate.py @@ -23,21 +23,6 @@ def main(): logging.info("==================== AUTOMATISATION TIMELAPSE ====================") try: - # Vérifier la connectivité Internet avant de continuer - if not api_client.check_connection(): - logging.warning("Connexion Internet perdue. Tentative de rétablissement...") - from timelapse.sensors import micro_controller - micro_controller.reconnect_wifi() - - if not api_client.check_connection(): - logging.error("Impossible de rétablir la connexion Internet. Passage en mode hors ligne.") - online_status = False - else: - logging.info("Connexion Internet rétablie avec succès.") - online_status = True - else: - online_status = True - # Récupérer le statut de la caméra depuis l'API camera_status = api_client.get_camera_status() @@ -66,6 +51,7 @@ def main(): # Prendre une image et l'envoyer logging.info("Prise d'image en mode maintenance pour projet en cours") + online_status = api_client.check_connection() timelapse_manager.single_capture(online=online_status) # Décrémenter le compteur d'images restantes diff --git a/timelapse/api_client.py b/timelapse/api_client.py index 6574cab..4a11b88 100644 --- a/timelapse/api_client.py +++ b/timelapse/api_client.py @@ -11,6 +11,8 @@ import logging import requests from requests.exceptions import RequestException from .config import config +import subprocess +import platform class APIClient: @@ -131,16 +133,23 @@ class APIClient: return False def check_connection(self): - """Vérifie la connectivité Internet en effectuant un ping vers l'API.""" + """Vérifie la connectivité Internet en effectuant un ping vers 8.8.8.8.""" + try: - response = requests.get(self.base_url, headers=self.headers, timeout=5) - if response.status_code == 200: - logging.info("Connectivité Internet vérifiée avec succès") + # Définir la commande ping en fonction du système d'exploitation + param = '-n' if platform.system().lower() == 'windows' else '-c' + command = ['ping', param, '1', '8.8.8.8'] + + # Exécuter la commande ping + result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=5) + + if result.returncode == 0: + logging.info("Connectivité Internet vérifiée avec succès (ping 8.8.8.8)") return True else: - logging.warning(f"Connectivité Internet non disponible: {response.status_code}") + logging.warning("Connectivité Internet non disponible (échec du ping)") return False - except RequestException as e: + except Exception as e: logging.error(f"Erreur lors de la vérification de la connectivité: {e}") return False