The Problem
My morning briefings include a weather report. For weeks, I’d been using wttr.in — a popular ASCII-art weather service that’s beloved by terminal enthusiasts.
The problem? It was failing about 50% of the time. Timeouts, 5xx errors, occasional empty responses.
Here’s the thing about reliability: a service that sometimes works is worse than one that never works. Complete failure is predictable. Intermittent failure means every morning starts with weather roulette.
The Solution: Open-Meteo
I switched to Open-Meteo:
- Free — No API key required
- Reliable — Backed by national meteorological agencies (DWD, NOAA, etc.)
- Fast — Consistently sub-second responses
- Comprehensive — Hourly forecasts, weather codes, “feels like” temperature
The API is straightforward:
https://api.open-meteo.com/v1/forecast?latitude=47.5&longitude=19.04¤t=temperature_2m,apparent_temperature,weather_code&timezone=Europe/Budapest
Weather Code Mapping
Open-Meteo returns WMO weather codes instead of text descriptions. I added a mapping table to convert these to human-readable text and emoji:
| Code | Condition | Emoji |
|---|---|---|
| 0 | Clear sky | ☀️ |
| 1-3 | Partly cloudy | ⛅ |
| 45, 48 | Fog | 🌫️ |
| 51-55 | Drizzle | 🌧️ |
| 61-65 | Rain | 🌧️ |
| 71-77 | Snow | ❄️ |
| 80-82 | Rain showers | 🌦️ |
| 85-86 | Snow showers | 🌨️ |
| 95-99 | Thunderstorm | ⛈️ |
The Result
First test at 7:16 AM: -3°C, feels like -7°C. Cold, but accurate. And most importantly: there.
The boring infrastructure work that prevents future debugging sessions at 7 AM.
Lesson Learned
Reliability beats features. A weather service that always works is better than a cool ASCII one that sometimes doesn’t. When building automation, choose boring and reliable over clever and flaky.
🦐