====== Captation des données ====== * Sensor port série import serial import datetime import os import time # Configuration du port série port = "/dev/ttyUSB0" baudrate = 9600 timeout = 1 # Ouvre la connexion au port série try: ser = serial.Serial(port, baudrate, timeout=timeout) except serial.SerialException as e: print(f"Impossible d'ouvrir le port série {port}: {e}") exit(1) # Boucle principale while True: try: # Lecture des données du port série data = ser.readline().decode('utf-8').strip() # Si des données ont été reçues if data: # Obtention de la date et l'heure actuelles now = datetime.datetime.now() date_string = now.strftime("%Y-%m-%d") time_string = now.strftime("%H-%M-%S") # Nom du fichier avec la date et l'heure actuelles file_name = f"{date_string}_{time_string}.txt" # Vérifier si le dossier de destination existe, sinon le créer if not os.path.exists("/path/to/destination/folder"): os.makedirs("/path/to/destination/folder") # Ouverture du fichier en mode écriture with open(f"/path/to/destination/folder/{file_name}", 'a') as file: # Écriture des données dans le fichier file.write(data + '\n') # Attendre 1 seconde avant la prochaine lecture time.sleep(1) except serial.SerialException as e: print(f"Erreur de lecture du port série {port}: {e}") ser.close() exit(1) except IOError as e: print(f"Erreur d'entrée/sortie sur le port série {port}: {e}") ser.close() exit(1) except Exception as e: print(f"Erreur non gérée: {e}") ser.close() exit(1) * Pour détecter si le port série ne reçoit plus de données pendant 20 secondes, vous pouvez utiliser un minuteur (timer) dans votre code Python. Voici un exemple de code qui utilise la bibliothèque time pour mesurer le temps écoulé depuis la dernière réception de données, et qui déclenche une action si ce temps dépasse 20 secondes : import serial import requests # Configuration du port série port = "/dev/ttyUSB0" baudrate = 9600 timeout = 1 # Configuration du webhook webhook_url = "https://maker.ifttt.com/trigger/port_serie_erreur/with/key/XXXXXXXXXXXXX" # Ouvre la connexion au port série try: ser = serial.Serial(port, baudrate, timeout=timeout) except serial.SerialException as e: requests.post(webhook_url) print(f"Impossible d'ouvrir le port série {port}: {e}") exit(1) # Boucle principale while True: try: # Lecture des données du port série data = ser.readline().decode('utf-8').strip() # Si des données ont été reçues if data: # Faire quelque chose avec les données except serial.SerialException as e: requests.post(webhook_url) print(f"Erreur de lecture du port série { import requests import serial import time # Configuration du port série port = "/dev/ttyUSB0" baudrate = 9600 timeout = 1 # Configuration du webhook webhook_url = "https://example.com/webhook" webhook_timeout = 3 # Ouvre la connexion au port série try: ser = serial.Serial(port, baudrate, timeout=timeout) except serial.SerialException as e: print(f"Impossible d'ouvrir le port série {port}: {e}") exit(1) # Boucle principale while True: try: # Lecture des données du port série data = ser.readline().decode('utf-8').strip() # Faire quelque chose avec les données # Envoyer les données au webhook payload = {"data": data} response = requests.post(webhook_url, json=payload, timeout=webhook_timeout) response.raise_for_status() except requests.exceptions.Timeout: print(f"Timeout lors de l'envoi des données au webhook {webhook_url}") except requests.exceptions.RequestException as e: print(f"Erreur lors de l'envoi des données au webhook {webhook_url}: {e}") # Attendre 5 secondes avant de continuer time.sleep(5) ===== Création d'un fichier de log ===== import serial import logging # Configuration du port série port = "/dev/ttyUSB0" baudrate = 9600 timeout = 1 # Configuration du logger logging.basicConfig(filename='myapp.log', level=logging.ERROR) # Ouvre la connexion au port série try: ser = serial.Serial(port, baudrate, timeout=timeout) except serial.SerialException as e: logging.error(f"Impossible d'ouvrir le port série {port}: {e}") exit(1) # Boucle principale while True: try: # Lecture des données du port série data = ser.readline().decode('utf-8').strip() # Faire quelque chose avec les données except serial.SerialException as e: logging.error(f"Erreur de lecture du port série {port}: {e}") exit(1)