From 1f26f66226ddca4c4dab7ac7729b9a8f5a9d91e2 Mon Sep 17 00:00:00 2001 From: Kerboul Date: Sun, 27 Apr 2025 19:55:32 +0200 Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20de=20la=20v=C3=A9rification?= =?UTF-8?q?=20de=20la=20connectivit=C3=A9=20Internet=20avec=20un=20ping=20?= =?UTF-8?q?vers=208.8.8.8=20et=20suppression=20de=20la=20v=C3=A9rification?= =?UTF-8?q?=20de=20connexion=20dans=20le=20script=20principal.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Automate.py | 16 +--------------- timelapse/api_client.py | 21 +++++++++++++++------ 2 files changed, 16 insertions(+), 21 deletions(-) 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