jardin_script_python_pi0
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
jardin_script_python_pi0 [2025/06/25 13:38] – créée admin | jardin_script_python_pi0 [2025/06/25 14:00] (Version actuelle) – [Pause entre les lectures] admin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Création d'un script python ====== | + | ====== Création d'un script python |
Au cours de cette deuxième séance, nous allons construire pas à pas un script python. | Au cours de cette deuxième séance, nous allons construire pas à pas un script python. | ||
Ligne 246: | Ligne 246: | ||
time.sleep(20) | time.sleep(20) | ||
</ | </ | ||
- | |||
- | ====== Bonus : Ajouter la pression atmosphérique avec l’API OpenWeather ====== | ||
- | |||
- | Afficher la pression atmosphérique récupérée sur Internet, en complément des données relevées par la sonde DHT22 sur le Raspberry Pi. | ||
- | |||
- | ===== Créer un compte sur OpenWeather ===== | ||
- | |||
- | - Aller sur [[https:// | ||
- | - Cliquer sur "Sign in" en haut de la page. | ||
- | - Cliquer sur " | ||
- | - Remplir le formulaire et valider le compte. | ||
- | - Cliquer sur "My API keys". | ||
- | |||
- | {{ raspberry: | ||
- | |||
- | 6. copier la clé affichée (garde-la précieusement !). | ||
- | | ||
- | ===== Installer la bibliothèque requests ===== | ||
- | |||
- | ### | ||
- | Nous allons utiliser la **bibliothèque requests** pour faire des **appels à l’API**. Dans votre environnement virtuel Python, vous pouvez taper cette commande : | ||
- | ### | ||
- | |||
- | < | ||
- | pip3 install requests | ||
- | </ | ||
- | |||
- | ### | ||
- | Dans le haut de votre script, ajoutez l' | ||
- | ### | ||
- | |||
- | < | ||
- | import requests | ||
- | </ | ||
- | |||
- | ===== Nouvelles constantes ===== | ||
- | |||
- | Ajoutons 4 nouvelles constantes : | ||
- | |||
- | * Dans la section des couleurs, vous pouvez ajouter une couleur pour l' | ||
- | |||
- | < | ||
- | CYAN = " | ||
- | </ | ||
- | |||
- | * Créer une nouvelle section pour les **coordonnées GPS** d' | ||
- | |||
- | < | ||
- | # Coordonnées GPS d' | ||
- | LATITUDE = 43.6768 | ||
- | LONGITUDE = 4.6303 | ||
- | </ | ||
- | |||
- | * Enfin, ajouter la **clé API**. | ||
- | |||
- | < | ||
- | # Clé API | ||
- | API_KEY = " | ||
- | </ | ||
- | |||
- | <note important> | ||
- | |||
- | ===== Création d'une nouvelle fonction ===== | ||
- | |||
- | ### | ||
- | Cette fonction interroge le **service météo OpenWeather** pour récupérer la **pression atmosphérique actuelle** en fonction de la **position géographique (latitude/ | ||
- | ### | ||
- | |||
- | < | ||
- | def recuperer_pression(api_key, | ||
- | </ | ||
- | |||
- | Elle prend en paramètre : | ||
- | |||
- | * API_KEY → la clé personnelle d’API fournie par OpenWeather, | ||
- | * LATITUDE → la latitude du lieu (ex : 43.676 pour Arles), | ||
- | * LONGITUDE → la longitude du lieu (ex : 4.630 pour Arles). | ||
- | |||
- | ====URL de l' | ||
- | |||
- | < | ||
- | url = f" | ||
- | </ | ||
- | |||
- | On construit dynamiquement l’adresse de l’API avec les bonnes informations : | ||
- | |||
- | * **lat** et **lon** pour la géolocalisation, | ||
- | * **appid** pour inclure la clé d’accès API, | ||
- | * **units=metric** pour avoir les données en °C et hPa, | ||
- | * **lang=fr** pour avoir les descriptions météo en français (utile si on affiche d' | ||
- | |||
- | ====Bloc try/ | ||
- | |||
- | ### | ||
- | Le mot-clé try signifie : essaie d’exécuter les instructions suivantes. Cela permet d’éviter les **plantages du script** si une erreur survient (ex : pas de connexion Internet, clé API invalide…). | ||
- | ### | ||
- | |||
- | < | ||
- | try: | ||
- | .... | ||
- | code de la fonction | ||
- | .... | ||
- | except: | ||
- | .... | ||
- | code en cas d' | ||
- | .... | ||
- | </ | ||
- | |||
- | ====Réponse de l' | ||
- | |||
- | ===Appel de l' | ||
- | |||
- | ### | ||
- | On utilise la bibliothèque requests pour envoyer une requête HTTP vers l’URL de l’API OpenWeather. | ||
- | ### | ||
- | |||
- | < | ||
- | response = requests.get(url) | ||
- | </ | ||
- | |||
- | ===Conversion de la réponse en JSON=== | ||
- | |||
- | ### | ||
- | La méthode .json() transforme la réponse en **dictionnaire Python**. Cela nous permet de manipuler facilement les informations retournées par l’API. | ||
- | ### | ||
- | |||
- | < | ||
- | data = response.json() | ||
- | </ | ||
- | |||
- | __Exemple d'une structure JSON__ : | ||
- | |||
- | < | ||
- | { | ||
- | " | ||
- | " | ||
- | " | ||
- | " | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | ===Récupération de la pression atmosphérique=== | ||
- | |||
- | < | ||
- | pression = data[" | ||
- | </ | ||
- | |||
- | ### | ||
- | Ici, on accède à la **donnée " | ||
- | ### | ||
- | |||
- | ===Retour de la fonction=== | ||
- | |||
- | < | ||
- | return pression | ||
- | </ | ||
- | |||
- | On **retourne la valeur de la pression**. Cela signifie que lorsque cette fonction est appelée, elle renverra un nombre (par exemple 1013). | ||
- | |||
- | ===Gestion des erreurs=== | ||
- | |||
- | < | ||
- | except: | ||
- | return None | ||
- | </ | ||
- | |||
- | ### | ||
- | Si quelque chose ne fonctionne pas (problème de réseau, mauvaise clé API, réponse inattendue, etc.), on retourne None. | ||
- | ### | ||
- | |||
- | ====Affichage des données==== | ||
- | |||
- | < | ||
- | pression = recuperer_pression(API_KEY, | ||
- | </ | ||
- | |||
- | ### | ||
- | On utilise ici la fonction // | ||
- | ### | ||
- | |||
- | < | ||
- | if pression is not None: | ||
- | -> if humidity is not None and temperature is not None and pression is not None: | ||
- | </ | ||
- | |||
- | ### | ||
- | On s’assure que la récupération des données a bien fonctionné. | ||
- | Si la valeur n’est pas None, cela veut dire que l’appel à l’API a réussi, donc on peut afficher la donnée. | ||
- | Sinon, on ne fait rien (ou on pourrait afficher un message d’erreur pour informer l’utilisateur). | ||
- | ### | ||
- | |||
- | < | ||
- | print(f" | ||
- | </ | ||
- | |||
- | ### | ||
- | On affiche la pression, en couleur cyan, grâce aux **constantes ANSI** définies auparavant (**CYAN et RESET**). | ||
- | La valeur est suivie de l’**unité hPa (hectopascals)**, | ||
- | ### | ||
- | |||
---- | ---- | ||
- | + | Suite vers [[jardin_script_python_pi5|Création d'un script python pour le Raspberry Pi 5]] | |
- | Suite vers la [[meteo_3eme_seance|3ème séance]] | + |
jardin_script_python_pi0.1750858683.txt.gz · Dernière modification : de admin