Outils pour utilisateurs

Outils du site


jardin_script_python_pi0

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
jardin_script_python_pi0 [2025/06/25 13:38] – créée adminjardin_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 pour le Raspberry Pi zéro ======
  
 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)
 </code> </code>
- 
-====== 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://openweathermap.org|https://openweathermap.org]] 
-  - Cliquer sur "Sign in" en haut de la page. 
-  - Cliquer sur "Create an account". 
-  - Remplir le formulaire et valider le compte. 
-  - Cliquer sur "My API keys". 
- 
-{{ raspberry:openweather.png?400 }} 
- 
-  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 : 
-### 
- 
-<code> 
-pip3 install requests 
-</code> 
- 
-### 
-Dans le haut de votre script, ajoutez l'import de cette bibliothèque : 
-### 
- 
-<code> 
-import requests 
-</code> 
- 
-===== Nouvelles constantes ===== 
- 
-Ajoutons 4 nouvelles constantes : 
- 
-  * Dans la section des couleurs, vous pouvez ajouter une couleur pour l'affichage de la pression atmosphérique. 
- 
-<code> 
-CYAN = "\033[96m" 
-</code> 
- 
-  * Créer une nouvelle section pour les **coordonnées GPS** d'Arles. 
- 
-<code> 
-# Coordonnées GPS d'Arles 
-LATITUDE = 43.6768 
-LONGITUDE = 4.6303 
-</code> 
- 
-  * Enfin, ajouter la **clé API**. 
- 
-<code> 
-# Clé API 
-API_KEY = "Votre_clé" 
-</code> 
- 
-<note important>**Attention** : Ici, nous mettons directement la clé API dans le code. En faisant cela, nous créons une faille de sécurité car nous exposons publiquement une donnée sensible.</note> 
- 
-===== 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/longitude)**. 
-### 
- 
-<code> 
-def recuperer_pression(api_key, latitude, longitude): 
-</code> 
- 
-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'API==== 
- 
-<code> 
-url = f"https://api.openweathermap.org/data/2.5/weather?lat={latitude}&lon={longitude}&appid={api_key}&units=metric&lang=fr" 
-</code> 
- 
-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'autres infos comme la description du ciel). 
- 
-====Bloc try/except==== 
- 
-### 
-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…). 
-### 
- 
-<code> 
-try: 
-    .... 
-    code de la fonction 
-    .... 
-except: 
-    .... 
-    code en cas d'échec de la fonction 
-    .... 
-</code> 
- 
-====Réponse de l'API==== 
- 
-===Appel de l'API=== 
- 
-### 
-On utilise la bibliothèque requests pour envoyer une requête HTTP vers l’URL de l’API OpenWeather. 
-### 
- 
-<code> 
-response = requests.get(url) 
-</code> 
- 
-===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. 
-### 
- 
-<code> 
-data = response.json() 
-</code> 
- 
-__Exemple d'une structure JSON__ : 
- 
-<code> 
-{ 
-  "main": { 
-    "temp": 18.5, 
-    "pressure": 1013, 
-    "humidity": 82 
-  } 
-} 
-</code> 
- 
-===Récupération de la pression atmosphérique=== 
- 
-<code> 
-pression = data["main"]["pressure"] 
-</code> 
- 
-### 
-Ici, on accède à la **donnée "pressure"** qui se trouve dans la **clé "main"** du dictionnaire. C’est cette valeur (en hPa) que l’on souhaite récupérer. 
-### 
- 
-===Retour de la fonction=== 
- 
-<code> 
-return pression 
-</code> 
- 
-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=== 
- 
-<code> 
-except: 
-    return None 
-</code> 
- 
-### 
-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==== 
- 
-<code> 
-pression = recuperer_pression(API_KEY, LATITUDE, LONGITUDE) 
-</code> 
- 
-### 
-On utilise ici la fonction //recuperer_pression// (définie plus haut) pour **obtenir la pression atmosphérique actuelle** à partir des coordonnées géographiques (latitude et longitude) et de la clé API. Le résultat (la pression en hPa) est **stocké dans la variable pression**. 
-### 
- 
-<code> 
-if pression is not None: 
--> if humidity is not None and temperature is not None and pression is not None: 
-</code> 
- 
-### 
-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). 
-### 
- 
-<code> 
-print(f"{CYAN}Pression atmosphérique:{RESET} {pression} hPa") 
-</code> 
- 
-### 
-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)**, utilisée en météorologie pour mesurer la pression atmosphérique. 
-### 
- 
  
 ---- ----
- +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