Ceci est une ancienne révision du document !
Table des matières
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
-
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”.
-
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 de cette bibliothèque :
import requests
Nouvelles constantes
Ajoutons 4 nouvelles constantes :
-
Dans la section des couleurs, vous pouvez ajouter une couleur pour l'affichage de la pression atmosphérique.
CYAN = "\033[96m"
-
Créer une nouvelle section pour les coordonnées GPS d'Arles.
# Coordonnées GPS d'Arles LATITUDE = 43.6768 LONGITUDE = 4.6303
-
Enfin, ajouter la clé API.
# Clé API API_KEY = "Votre_clé"
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).
def recuperer_pression(api_key, latitude, longitude):
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
url = f"https://api.openweathermap.org/data/2.5/weather?lat={latitude}&lon={longitude}&appid={api_key}&units=metric&lang=fr"
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…).
try: .... code de la fonction .... except: .... code en cas d'échec de la fonction ....
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.
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 :
{ "main": { "temp": 18.5, "pressure": 1013, "humidity": 82 } }
Récupération de la pression atmosphérique
pression = data["main"]["pressure"]
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
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, LATITUDE, LONGITUDE)
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.
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"{CYAN}Pression atmosphérique:{RESET} {pression} hPa")
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 Utilisation de la fonction round()