PicoWeatherDisplay/weather_requests.py
Alexander Berry-Roe ddd867eb00 Add initial weather display application with API integration
Includes weather data retrieval from Open-Meteo API and basic WiFi setup for connectivity. IntelliJ project configuration files and a `.gitignore` for IDE-specific files are also added.
2025-05-11 12:32:38 +01:00

55 lines
1.6 KiB
Python

import urequests as requests
def get_hourly(latitude, longitude):
base_url = "https://api.open-meteo.com/v1/forecast"
query = (
f"latitude={latitude}&"
f"longitude={longitude}&"
"hourly=temperature_2m,precipitation_probability,weathercode&"
"timezone=Europe%2FLondon"
)
full_url = f"{base_url}?{query}"
try:
response = requests.get(full_url)
if response.status_code == 200:
return response.json()
else:
print(f"Error: Status {response.status_code}")
print(response.text)
return None
except Exception as e:
print(f"Request failed: {e}")
return None
def get_daily(latitude, longitude):
base_url = "https://api.open-meteo.com/v1/forecast"
query = (
f"latitude={latitude}&"
f"longitude={longitude}&"
"daily=temperature_2m_max,temperature_2m_min,precipitation_sum,weathercode&"
"timezone=Europe%2FLondon"
)
full_url = f"{base_url}?{query}"
try:
response = requests.get(full_url)
if response.status_code == 200:
return response.json()
else:
print(f"Error: Status {response.status_code}")
print(response.text)
return None
except Exception as e:
print(f"Request failed: {e}")
return None
def get_today_forecast(data):
daily = data["daily"]
return {
"date": daily["time"][0],
"max_temp": daily["temperature_2m_max"][0],
"min_temp": daily["temperature_2m_min"][0],
"precip_mm": daily["precipitation_sum"][0],
"weathercode": daily["weathercode"][0]
}