salut mes collègues j' 'ai exécuter le programme de python mais j’ai recu une résultats comme ca "Erreur lors de l’envoi de l’e-mail : (534, b’5.7.9 Application-specific password required. For more information, go to\n5.7.9 https://support.google.com/mail/?p=InvalidSecondFactor ffacd0b85a97d-38bf32754dcsm16988537f8f.77 - gsmtp’)"
^voila le programme de python:^
import requests
import yagmail
import numpy as np
import time
# Identifiants pour ThingSpeak
CHANNEL_ID = 2813440 # Remplacez par votre Channel ID
WRITE_API_KEY = 'YM3XFWB52TRUNTSP' # Remplacez par votre Write API Key
# URL de l'API de ThingSpeak pour HTTP
URL = "https://api.thingspeak.com/update"
# Configuration des alertes par e-mail
EMAIL_ADDRESS = "xxxxxxxxx@gmail.com"
EMAIL_PASSWORD = "xxxxxxxxxxxxx" # Assurez-vous d'utiliser un mot de passe spécifique à l'application
ALERT_EMAIL = "xxxxxxxxxxxxxxxx@gmail.com"
# Fonction pour envoyer une alerte par e-mail
def send_email_alert(subject, body):
try:
yag = yagmail.SMTP(EMAIL_ADDRESS, EMAIL_PASSWORD)
yag.send(to=ALERT_EMAIL, subject=subject, contents=body)
print("Alerte e-mail envoyée avec succès.")
except Exception as e:
print(f"Erreur lors de l'envoi de l'e-mail : {e}")
# Fonction pour vérifier les seuils et envoyer des alertes
def check_thresholds_and_alert(heart_rate, body_temp, spo2):
alert_message = ""
if heart_rate < 60 or heart_rate > 100:
alert_message += f"Fréquence cardiaque anormale : {heart_rate} bpm\n"
if body_temp < 35.5 or body_temp > 37.5:
alert_message += f"Température corporelle anormale : {body_temp} °C\n"
if spo2 < 95:
alert_message += f"Taux d'oxygène anormal : {spo2} %\n"
if alert_message:
# Envoi d'une alerte e-mail
subject = "Alerte Santé - Valeurs Anormales Détectées"
send_email_alert(subject, alert_message)
# Boucle infinie pour envoyer les données
try:
while True:
# Génération des données à envoyer
heart_rate = np.random.randint(50, 110)
body_temp = round(np.random.uniform(34.0, 39.0), 1)
spo2 = np.random.randint(90, 101)
# Données pour HTTP
data_http = {
'api_key': WRITE_API_KEY,
'field1': heart_rate,
'field2': body_temp,
'field3': spo2
}
try:
# Envoi des données via HTTP
response = requests.get(URL, params=data_http)
if response.status_code == 200:
print("Données envoyées via HTTP :", data_http)
else:
print(f"Erreur HTTP : {response.status_code}")
except requests.RequestException as e:
print(f"Erreur lors de l'envoi des données via HTTP : {e}")
# Vérification des seuils et envoi des alertes si nécessaire
check_thresholds_and_alert(heart_rate, body_temp, spo2)
# Délai avant le prochain envoi
time.sleep(15)
except KeyboardInterrupt:
print("Exécution interrompue par l'utilisateur.")
except Exception as e:
print(f"Erreur générale : {e}")
Modifié par @Amaury — Mise en forme du code
+0
-0