Ceci est une ancienne révision du document !


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 {
Modifier cette page
Haut de page