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
