Öffentliche Schnittstelle · OpenAPI 3.1
Wetterdaten per API
Lokale Messungen aus Hohenkammer als JSON. Der Zugriff ist ohne Anmeldung und API-Schlüssel möglich. Fehlende oder veraltete Messwerte entfallen; alle Zeiten gelten in Europe/Berlin.
10 Anfragen pro Minute je IP
Pro IP sind 10 Anfragen innerhalb von rollierenden 60 Sekunden (1 Minute) erlaubt. Die 11. Anfrage sperrt die IP für 15 Minuten und liefert HTTP 429. Weitere Anfragen verlängern die Sperre nicht. Retry-After nennt die verbleibende Sperrzeit in Sekunden.
Das Limit gilt gemeinsam für GET, HEAD, abgewiesene Methoden und Wetterfehler auf /api/weather. CORS-Preflight (OPTIONS), diese Dokumentation und die OpenAPI-Datei zählen nicht.
/api/weather
Aktuelle Sensordaten abrufen. Keine Parameter erforderlich. HEAD liefert dieselben Status- und Rate-Limit-Header ohne Antwortinhalt.
curl -i https://hohenkammer-wetterstation.de/api/weatherBeispielantwort mit verfügbaren Messwerten
{
"last_update": "19:50",
"date": "22 Juni 2025",
"current_weather": "Dry",
"temperature": 30.5,
"max_temperature": {
"value": 34.9,
"time": "17:50"
},
"min_temperature": {
"value": 9.1,
"time": "04:25"
},
"wind": {
"speed": 1.9,
"direction": "W (270°)",
"gusts": 3,
"max_speed_today": 8,
"max_speed_today_time": "15:20"
},
"rain": {
"last_hour": 0,
"since_midnight": 0,
"last_24_hours": 0
},
"atmosphere": {
"humidity": 47,
"pressure": 1018.3,
"brightness": 45000
}
}Antwortfelder
Nur last_update und date sind immer enthalten. Weitere Felder erscheinen, wenn die entsprechenden frischen Messungen vorliegen. Bei Tagesextrema ist der Wert erforderlich, sobald das Objekt enthalten ist.
| Feld | Typ | Beschreibung |
|---|---|---|
| last_update(Pflicht) | string | Neuester Sensorzeitpunkt unter den ausgegebenen Messwerten, HH:mm. |
| date(Pflicht) | string | Datum dieses Sensorzeitpunkts in Europe/Berlin, z. B. 22 Juni 2025. |
| current_weather | string | Zustand des lokalen Regensensors: trocken oder Regen. |
| temperature | number | Aktuelle Außentemperatur in °C. |
| max_temperature | object | Netatmo-Temperaturmaximum des aktuellen Tages. |
| max_temperature.value(Pflicht) | number | Temperatur in °C. |
| max_temperature.time | string | Ereigniszeit in Europe/Berlin; entfällt ohne verfügbaren Zeitpunkt. |
| min_temperature | object | Netatmo-Temperaturminimum des aktuellen Tages. |
| min_temperature.value(Pflicht) | number | Temperatur in °C. |
| min_temperature.time | string | Ereigniszeit in Europe/Berlin; entfällt ohne verfügbaren Zeitpunkt. |
| wind | object | Windmessungen ohne zugesichertes 10-Minuten- oder Stundenintervall. |
| wind.speed | number | Aktuelle Windgeschwindigkeit in km/h. |
| wind.direction | string | Windrichtung mit Himmelsrichtung und Grad, z. B. W (270°). |
| wind.gusts | number | Aktueller Böenwert in km/h; kein Stundenmaximum. |
| wind.max_speed_today | number | Netatmo-Windmaximum des Tages in km/h; kein zugesichertes Minutenmittel oder Böenmaximum. |
| wind.max_speed_today_time | string | Ereigniszeit des Tageswindmaximums in Europe/Berlin. |
| rain | object | Regenmengen in mm mit getrennten Bezugszeiträumen. |
| rain.last_hour | number | Regenmenge der letzten Stunde in mm. |
| rain.since_midnight | number | Regenmenge seit Mitternacht in mm. |
| rain.last_24_hours | number | Rollierende Regenmenge der letzten 24 Stunden in mm. |
| atmosphere | object | Weitere lokale Sensormessungen. |
| atmosphere.humidity | number | Relative Luftfeuchtigkeit in %. |
| atmosphere.pressure | number | Luftdruck in hPa. |
| atmosphere.brightness | number | Roher Homematic-Helligkeitswert ohne bestätigte Einheit. |
Statuscodes und Fehler
- 200
- Frische Wetterdaten; fehlende Werte entfallen.
- 429
- IP gesperrt. Pro IP sind 10 Anfragen innerhalb von rollierenden 60 Sekunden (1 Minute) erlaubt. Die 11. Anfrage sperrt die IP für 15 Minuten und liefert HTTP 429. Weitere Anfragen verlängern die Sperre nicht. Retry-After nennt die verbleibende Sperrzeit in Sekunden.
- 503
- Vorübergehend nicht verfügbar: WEATHER_UNAVAILABLE (Backend), NO_FRESH_DATA (keine frischen Messungen), CLIENT_IP_UNAVAILABLE (Proxy-IP fehlt) oder RATE_LIMIT_UNAVAILABLE (Sperrspeicher nicht verfügbar). Rate-Limit-Header sind nur nach erfolgreicher Limitprüfung vorhanden.
Nicht unterstützte Methoden liefern HTTP 405. OPTIONS antwortet mit HTTP 204. Bei einer Sperre sieht der JSON-Fehler so aus:
HTTP 429
Retry-After: 900
{"error":"IP_BANNED"}Rate-Limit-Header
- X-RateLimit-Limit
- Maximale Anfragen pro IP im rollierenden Zeitfenster.
- X-RateLimit-Remaining
- Verbleibende Anfragen im aktuellen Zeitfenster; bei Sperre 0.
- X-RateLimit-Reset
- Unix-Zeit in Sekunden, zu der die älteste gezählte Anfrage verfällt; bei Sperre deren Ablaufzeit.
HTTP 429 ergänzt Retry-After in Sekunden. Alle Antworten senden Cache-Control: no-store. CORS erlaubt Lesezugriffe von anderen Websites und macht die Rate-Limit-Header zugänglich.
OpenAPI-Spezifikation
Die maschinenlesbare Spezifikation enthält Antwortschemas, Einheiten, Statuscodes und das IP-Limit. Sie lässt sich in OpenAPI-Werkzeuge importieren.
OpenAPI JSON öffnen