import serial
importdatetimeimportosimporttime# Configuration du port série
port ="/dev/ttyUSB0"
baudrate =9600
timeout =1# Ouvre la connexion au port sérietry:
ser = serial.Serial(port, baudrate, timeout=timeout)except serial.SerialExceptionas e:
print(f"Impossible d'ouvrir le port série {port}: {e}")
exit(1)# Boucle principalewhileTrue:
try:
# Lecture des données du port série
data = ser.readline().decode('utf-8').strip()# Si des données ont été reçuesif 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éerifnotos.path.exists("/path/to/destination/folder"):
os.makedirs("/path/to/destination/folder")# Ouverture du fichier en mode écriturewithopen(f"/path/to/destination/folder/{file_name}",'a')asfile:
# Écriture des données dans le fichierfile.write(data + '\n')# Attendre 1 seconde avant la prochaine lecturetime.sleep(1)except serial.SerialExceptionas e:
print(f"Erreur de lecture du port série {port}: {e}")
ser.close()
exit(1)exceptIOErroras e:
print(f"Erreur d'entrée/sortie sur le port série {port}: {e}")
ser.close()
exit(1)exceptExceptionas 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érietry:
ser = serial.Serial(port, baudrate, timeout=timeout)except serial.SerialExceptionas e:
requests.post(webhook_url)print(f"Impossible d'ouvrir le port série {port}: {e}")
exit(1)# Boucle principalewhileTrue:
try:
# Lecture des données du port série
data = ser.readline().decode('utf-8').strip()# Si des données ont été reçuesif data:
# Faire quelque chose avec les donnéesexcept serial.SerialExceptionas e:
requests.post(webhook_url)print(f"Erreur de lecture du port série {
import requests
import serial
importtime# 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érietry:
ser = serial.Serial(port, baudrate, timeout=timeout)except serial.SerialExceptionas e:
print(f"Impossible d'ouvrir le port série {port}: {e}")
exit(1)# Boucle principalewhileTrue:
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.RequestExceptionas e:
print(f"Erreur lors de l'envoi des données au webhook {webhook_url}: {e}")# Attendre 5 secondes avant de continuertime.sleep(5)
Création d'un fichier de log
import serial
importlogging# Configuration du port série
port ="/dev/ttyUSB0"
baudrate =9600
timeout =1# Configuration du loggerlogging.basicConfig(filename='myapp.log', level=logging.ERROR)# Ouvre la connexion au port sérietry:
ser = serial.Serial(port, baudrate, timeout=timeout)except serial.SerialExceptionas e:
logging.error(f"Impossible d'ouvrir le port série {port}: {e}")
exit(1)# Boucle principalewhileTrue:
try:
# Lecture des données du port série
data = ser.readline().decode('utf-8').strip()# Faire quelque chose avec les donnéesexcept serial.SerialExceptionas e:
logging.error(f"Erreur de lecture du port série {port}: {e}")
exit(1)