Wetterdaten in Echtzeit: Mein neues API-Projekt


Hallo zusammen,

heute möchte ich euch von meinem neuesten Projekt erzählen: einer kleinen, aber praktischen Wetter-API, die aktuelle Wetterdaten basierend auf einer deutschen Postleitzahl liefert. Mit ein paar Zeilen PHP und der OpenWeatherMap-API habe ich eine Lösung gebaut, die Temperatur, Luftfeuchtigkeit und Ortsnamen in Echtzeit ausgibt – und das Ganze mit einem cleveren Cache-System, um die API-Anfragen zu minimieren!

Wie funktioniert’s?

Das Skript, das ich in index.php geschrieben habe, ist ganz einfach zu nutzen. Man gibt eine Postleitzahl als Parameter an (z. B. ?plz=10115), und die API liefert die Daten im JSON-Format zurĂĽck. Hinter den Kulissen passiert Folgendes:

  • Die Geocoding-API von OpenWeatherMap wandelt die PLZ in geografische Koordinaten (Breiten- und Längengrad) um.
  • Die Wetter-API holt dann die aktuellen Wetterdaten fĂĽr diese Koordinaten, wie Temperatur in °C und Luftfeuchtigkeit in %.
  • Ein Cache-System speichert die Daten fĂĽr 10 Minuten in einer JSON-Datei, um die API nicht unnötig oft anzusprechen.

Das Ergebnis könnte so aussehen:

{
    "aktuelle_temperatur": 15.2,
    "aktuelle_luftfeuchtigkeit": 65,
    "ort": "Berlin"
}
    

Warum ein Cache?

APIs wie OpenWeatherMap haben oft Anfrage-Limits, besonders in der kostenlosen Version. Um das zu umgehen, speichere ich die Wetterdaten in einem cache/-Ordner. Wenn jemand innerhalb von 10 Minuten die gleiche PLZ abfragt, wird die Antwort direkt aus dem Cache geliefert – das spart Zeit und Ressourcen.

Was habe ich gelernt?

Dieses Projekt war eine tolle Gelegenheit, mit externen APIs zu arbeiten und PHP fĂĽr praktische Anwendungen einzusetzen. Ein paar Highlights:

  • Fehlerbehandlung: Das Skript prĂĽft, ob die PLZ gĂĽltig ist, die API erreichbar ist und ob Cache-Dateien erstellt werden können.
  • JSON: Die Ausgabe im JSON-Format macht die API flexibel fĂĽr Webseiten oder Apps.
  • Server-Berechtigungen: Das Cache-Verzeichnis braucht Schreibrechte, was mich dazu brachte, mich mit Serverkonfigurationen auseinanderzusetzen.

Wie kann man es nutzen?

Die API ist super einfach zu integrieren. Hier ein kleines Beispiel, wie man sie in einer Webseite verwenden kann:

<input type="text" id="plz" placeholder="Postleitzahl">
<button onclick="getWeather()">Wetter abrufen</button>
<div id="result"></div>
<script>
async function getWeather() {
    const plz = document.getElementById('plz').value;
    const response = await fetch(`index.php?plz=${plz}`);
    const data = await response.json();
    const resultDiv = document.getElementById('result');
    if (data.error) {
        resultDiv.innerHTML = `Fehler: ${data.error}`;
    } else {
        resultDiv.innerHTML = `
            <p>Ort: ${data.ort}</p>
            <p>Temperatur: ${data.aktuelle_temperatur}°C</p>
            <p>Luftfeuchtigkeit: ${data.aktuelle_luftfeuchtigkeit}%</p>
        `;
    }
}
</script>
    

Mit diesem Code kann jeder eine PLZ eingeben und die Wetterdaten direkt auf der Webseite sehen.

Ausblick

Ich habe schon ein paar Ideen, wie ich die API erweitern könnte:

  • Weitere Wetterdaten wie Windgeschwindigkeit oder Wetterbeschreibungen (z. B. „sonnig“, „regnerisch“) hinzufĂĽgen.
  • Eine schicke Frontend-Seite mit einer interaktiven Karte bauen.
  • Support fĂĽr internationale Postleitzahlen, nicht nur deutsche.

Was haltet ihr von dem Projekt? Habt ihr Ideen, wie man es noch verbessern könnte? Lasst es mich in den Kommentaren wissen! Und wenn ihr Lust habt, die API selbst zu testen, schaut in die OpenWeatherMap-Dokumentation und holt euch einen API-Schlüssel.