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.
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
Ajoutons 4 nouvelles constantes :
CYAN = "\033[96m"
# Coordonnées GPS d'Arles LATITUDE = 43.6768 LONGITUDE = 4.6303
# Clé API API_KEY = "Votre_clé"
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 :
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 :
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 ....
On utilise la bibliothèque requests pour envoyer une requête HTTP vers l’URL de l’API OpenWeather.
response = requests.get(url)
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 } }
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.
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).
except: return None
Si quelque chose ne fonctionne pas (problème de réseau, mauvaise clé API, réponse inattendue, etc.), on retourne None.
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()