Deutscher Wetterdienst (DWD) API

Hallo Arduino Kollegen,
ich habe einen Nano 33iot mit dem ich Wetterdaten von api.openweathermap.org abrufe und da funktioniert sehr gut. Nun wollte ich via API und Json Wetterdaten vom Deutschen Wetterdienst (DWD.de) abrufen. Habe auf der DWD Seite auch Informationen dazu gefunden aber der Zugriff klappt nicht. Bekomme immer eine negative Response.
Frage: hat jemand ein Projekt bei dem er DWD Wetterdaten via API und Json abruft?

Vielen Dank für Eure Hilfe und Gruß Mascho

1 Like

Wie ist der direkter Link zu DWD? suche das gleiche aber zum Download nur alte Werte. Und so ich Wais gibt's keine API

Grüße
Bernhard

Hallo Bernhard, danke für deine Rückmeldung. Ich dachte via der Seite würde das gehen:
https://dwd.api.bund.dev/
verlinkt wird dort eine Doku

Aber die "Zugriffsarten" unterscheiden sich im dem Beispiel.
Gruß Mascho

Also als ich vor einiger zeit gesucht habe gabs das noch nicht, nach der Seite müste gehen wie bei Openweather. Nur das ist noch zu hoch für mich die JSON Daten auslesen.

Bernhard

:slight_smile: Doch schon etwas her - die Doku hat Stand 8.2019.

Nö.
aber grade mal zusammengefriemelt.

Auf der Seite der Stationen musst Du in der dritten Spalte die für Dich gewünschte id der Wetterstation raussuchen.

Dann fängst Du an deine Anfrage zu bauen.
Grundlage ist der AbrufServer.

 https://s3.eu-central-1.amazonaws.com/app-prod-static.warnwetter.de/v16/

Dahinter kommt jetzt deine Abfrage der - z.B. - Vorhersage:

forecast_mosmix_

gefolgt von Deiner Stationid und der Endung

10184.json

Der vollständige ist dann:

https://s3.eu-central-1.amazonaws.com/app-prod-static.warnwetter.de/v16/forecast_mosmix_10763.json

zurück kommt dann inhaltlich:

{"trend":{"start":1647021600000,"temperature":[77,6,-18,87,65,5,-14,79,65,6,-6,98,86,28,12,104,94,41,26,105,83,35,18,94,79],"temperatureStd":[14,16,19,16,15,20,21,17,17,19,20,20,19,20,21,23,22,20,23,22,21,22,23,23,22],"precipitationProbabilityHigh":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"precipitationProbabilityLow":[100,100,100,100,100,100,200,100,100,100,200,200,100,200,200,200,200,300,300,300,300,300,300,300]},"days":[{"stationId":null,"dayDate":"2022-03-07","temperatureMin":-34,"temperatureMax":42,"icon":null,"icon1":1,"icon2":1,"precipitation":0,"windSpeed":148,"windGust":463,"windDirection":730,"sunshine":4980},{"stationId":null,"dayDate":"2022-03-08","temperatureMin":-50,"temperatureMax":81,"icon":null,"icon1":1,"icon2":1,"precipitation":0,"windSpeed":167,"windGust":370,"windDirection":1050,"sunshine":6180},{"stationId":null,"dayDate":"2022-03-09","temperatureMin":-40,"temperatureMax":105,"icon":null,"icon1":1,"icon2":1,"precipitation":0,"windSpeed":74,"windGust":222,"windDirection":1440,"sunshine":6420},{"stationId":null,"dayDate":"2022-03-10","temperatureMin":-26,"temperatureMax":125,"icon":null,"icon1":1,"icon2":1,"precipitation":0,"windSpeed":130,"windGust":296,"windDirection":1350,"sunshine":6660}],"forecast":{"start":1646676000000,"temperature":[17,-37,-42,63,47,-17,-36,86,69,-6,-20,110,86,17,-8,98,77],"temperatureStd":[11,14,15,11,11,14,16,12,13,14,16,14,13,16,18,15,14],"windDirection":[690,900,870,1050,960,1020,1030,1440,1000,1070,1120,1350,1020,1000,1030,1180,1050],"windGust":[241,111,111,333,296,167,111,204,185,130,111,259,241,185,167,352,315],"windSpeed":[74,55,55,167,111,74,55,74,55,74,74,130,111,93,93,185,130],"icon":[1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1],"precipitationTotal":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}}

json auflösen ist wie bei otm.

Find ich cool - mal sehen, ob ich das verwerten kann.
Keine eigene id - einfach abrufen.
Hat was.
Mal sehen, was in der Doku noch so steht...

1 Like

:wink: na ja manche alte Leute sind blind, im Dezember habe das nicht gefunden :flushed:

https://www.dwd.de/DE/leistungen/klimadatendeutschland/statliste/statlex_html.html;jsessionid=00422B3472DA69654A6699F1745C92AB.live11042?view=nasPublication&nn=16102

Wie kann ich das dann im client verpacken? Danke für Eure Unterstützung.

https://s3.eu-central-1.amazonaws.com/app-prod-static.warnwetter.de/v16/forecast_mosmix_10763.json

char server[] = "s3.eu-central-1.amazonaws.com";

  if (client.connect(server, 80)) {
    Serial.println("connected to server");
    //Make a HTTP request:
    client.print("GET /app-prod-static.warnwetter.de/v16/current_measurement_10739.json");
    client.println("Host: s3.eu-central-1.amazonaws.com");
    client.println("Connection: close");
    client.println();
  }

Antwort:
19:36:58.016 -> connected to server
19:36:59.041 -> HTTP/1.1 505 HTTP Version not supported

Man muss https einbinden nur wie keine Ahnung

HTTPS hatten wir hier dieskutiert.
Ich habe die Grundlagen in diesem Tutorial zusammen gefasst (auf Basis ESP8266).

Gruß Tommy

Danke, wen mein neuer ESP8266 ankommt werde rumspielen.

Grüße
Bernhard

PS. Du und @hotsystems habt Recht gechabt mir den ESP "Einer reicht nicht" :wink:

Ja, 2 sind in festen Projekten verbaut, der 3. in einem im Bau befindlichen Projekt, einer zum Testen mit C++ und auf einem fange ich langsam mit MicroPython an.
Dann braucht man noch ein paar in Reserve.

Gruß Tommy

Irgendwas passt mir hier nicht...

wenn openweather funktioniert und dwd jetzt an https scheitert, würde es ja bedeuten, das OWM...
Ok. Ich will nicht weiter denken.
Ich messe Temperatur - stelle fest zu welcher Zeit und reagiere darauf.
Und bleibe dabei :wink:

Es war nur eine Vermutung, den DWD hat die Seite mit https

Nö...
Das geht sehr wohl mit Standard ungesichertes http

Ich hab mal ein Wireshark angeschmissen, weil mir das keine Ruhe gelassen hat.

Der DWD kann kein HTTP/1.1!

1 Like

Habe ich....
Ein funktionsfähiger Abruf:

Serial.print("connected to ");
    Serial.println(client.remoteIP());
    client.print("GET /app-prod-static.warnwetter.de/v16/current_measurement_10739.json HTTP/1.0\r\n");
    client.print("Host: s3.eu-central-1.amazonaws.com\r\n");
    client.print("Connection: close\r\n");
    client.println();

Es kommt zurück:

21:01:09.896 -> connecting to s3.eu-central-1.amazonaws.com...
21:01:09.996 -> connected to 52.219.75.19
21:01:10.062 -> HTTP/1.1 200 OK
21:01:10.095 -> x-amz-id-2: 356vq4w4536w46vwgwrtz5
21:01:10.095 -> x-amz-request-id: 54r6b45z56e75678b
21:01:10.095 -> Date: Thu, 10 Mar 2022 20:01:11 GMT
21:01:10.095 -> x-amz-replication-status: COMPLETED
21:01:10.095 -> Last-Modified: Thu, 10 Mar 2022 19:40:56 GMT
21:01:10.095 -> ETag: "---- "
21:01:10.095 -> x-amz-meta-minimum-api-version: 1
21:01:10.095 -> x-amz-meta-best-before: Fri, 11 Mar 2022 01:40:48 GMT
21:01:10.128 -> Content-Encoding: gzip
21:01:10.128 -> x-amz-meta-backoff: 120
21:01:10.128 -> x-amz-version-id: 34t63v trze56uzbev54676
21:01:10.128 -> x-amz-meta-next-refresh: Thu, 10 Mar 2022 20:11:48 GMT
21:01:10.128 -> Accept-Ranges: bytes
21:01:10.128 -> Content-Type: application/json
21:01:10.128 -> Server: AmazonS3
21:01:10.128 -> Content-Length: 1225
21:01:10.128 -> Connection: close

ABER!
Das was da zurück kommt ist:

Da musst also nopch dran arbeiten.
Aber es funktioniert schon mal....

Danke Tommy für den Link zu deinem Tutorial. Werde ich checken. Vielen Dank auch an my_xy_projekt das sieht gut aus aber mein knowledge reicht da nicht Dir zu folgen... Ich bleibe dran da rein zu kommen. Viele Grüße Mascho

Da dürfte der gziped Content das Problem sein. Da gibt es einen issue zu. Ich habe ihn nicht komplett gelesen.

Gruß Tommy

Danke, aber Hinweis: Ich bin mit einem W5100 unterwegs.

Ich werd mich mal die Tage ggfls. drum kümmern, ob das Json auch plain irgendwie zur Verfügung steht.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.