Kostenlose Wetterdaten von open-meteo.com

Begonnen von Guenni1404, 20 März 2023, 20:22:34

Vorheriges Thema - Nächstes Thema

Guenni1404

Hi,

ich habe gesehen, dass https://open-meteo.com kostenlose Wetterdaten über eine API anbietet. Es ist kein Key notwendig.
Hat zufällig schon jemand was damit gemacht?

Aurel_B

Ich kannte diese Seite noch nicht, sieht super interessant aus! Wenn ich dazu komme, werde ich in den nächsten Wochen mich mal damit beschäftigen und meine Erkentnisse hier posten.

holle75

kann sich geändert haben, aber "damals" (vor ca 1,5 Jahren) waren die Daten recht eingeschränkt und die API nervig. Aber vielleicht sieht es jetzt besser aus? Zur Info ...

satprofi

Hallo.
Danke für den Tip! Schaut gut aus, sehr gute Daten abzufragen.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

holle75

#4
wo ich gerade hier bin.

Ja, da hat sich richtig was getan (zu meinem Post weiter oben).
Doppelt so viele Werte wie "damals" und eine Api die man sich zusammenklicken kann. Und free.
Respekt.

... jetzt müssen die Daten nur noch "gut" und nicht nur "hübsch" sein.

Muss mal versuchen, ob ich das in einen LogProxy Plot bekomme.

Gisbert

Hallo zusammen,

ich konnte eine URL erzeugen; das war ziemlich leicht.

Wie sieht denn eine Definition in Fhem aus? Ich hab's mit HTTPMOD versucht, aber es kommen keine Readings rein. Muss ich dafür alle Attribute händisch definieren? Wenn ja, wie müssten die aussehen?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

holle75

#6
Hallo Gisbert, zB so

define WetterOpenMeteo HTTPMOD https://api.open-meteo.com/v1/forecast?latitude=xx.xx&longitude=11.yyyyyy&hourly=temperature_2m,precipitation_probability,precipitation,cloud_cover,wind_speed_10m,wind_direction_10m,wind_gusts_10m,soil_temperature_0cm,uv_index,sunshine_duration&daily=weather_code,temperature_2m_max,temperature_2m_min,sunshine_duration,uv_index_max,precipitation_sum,precipitation_probability_max,wind_speed_10m_max,wind_gusts_10m_max,wind_direction_10m_dominant&timezone=Europe%2FBerlin 3600
attr WetterOpenMeteo enforceGoodReadingNames 1
attr WetterOpenMeteo event-on-change-reading .*
attr WetterOpenMeteo extractAllJSON 1

da musst du jetzt nur noch xx und yy (lon/lat) auf deinen Ort packen. Oder klicks dir hier https://open-meteo.com/en/docs zusammen.

dann vielleicht ein set reread und danach das Device aktualisieren.

Gisbert

Hallo holle75,

hier ein list meiner Definition:
define OpenMeteo HTTPMOD https://api.open-meteo.com/v1/forecast?latitude=51.0163&longitude=7.0045&current=temperature_2m,relative_humidity_2m,precipitation,cloud_cover,wind_speed_10m,wind_gusts_10m&hourly=temperature_2m,relative_humidity_2m,dew_point_2m,precipitation_probability,precipitation,weather_code,cloud_cover,wind_speed_10m,wind_gusts_10m&timezone=Europe%2FBerlin&models=best_match 3600
attr OpenMeteo enforceGoodReadingNames 1
attr OpenMeteo extractAllJSONFilter 1
attr OpenMeteo group Wetter
attr OpenMeteo room Weather
#  BUSY      0
#  CFGFN     
#  DEF        https://api.open-meteo.com/v1/forecast?latitude=51.0163&longitude=7.0045&current=temperature_2m,relative_humidity_2m,precipitation,cloud_cover,wind_speed_10m,wind_gusts_10m&hourly=temperature_2m,relative_humidity_2m,dew_point_2m,precipitation_probability,precipitation,weather_code,cloud_cover,wind_speed_10m,wind_gusts_10m&timezone=Europe%2FBerlin&models=best_match 3600
#  FUUID      657d94fc-f33f-e986-4ad5-654b27e24d72b88d
#  Interval  3600
#  MainURL    https://api.open-meteo.com/v1/forecast?latitude=51.0163&longitude=7.0045&current=temperature_2m,relative_humidity_2m,precipitation,cloud_cover,wind_speed_10m,wind_gusts_10m&hourly=temperature_2m,relative_humidity_2m,dew_point_2m,precipitation_probability,precipitation,weather_code,cloud_cover,wind_speed_10m,wind_gusts_10m&timezone=Europe%2FBerlin&models=best_match
#  ModuleVersion 4.1.16 - 4.4.2023
#  NAME      OpenMeteo
#  NOTIFYDEV  global
#  NR        1367
#  NTFY_ORDER 50-OpenMeteo
#  STATE      ???
#  TYPE      HTTPMOD
#  eventCount 22
#  value     
#  HttpUtils:
#    NAME     
#    addr      https://api.open-meteo.com:443
#    auth      0
#    code      200
#    compress  1
#    conn     
#    data     
#    displayurl https://api.open-meteo.com/v1/forecast?latitude=51.0163&longitude=7.0045&current=temperature_2m,relative_humidity_2m,precipitation,cloud_cover,wind_speed_10m,wind_gusts_10m&hourly=temperature_2m,relative_humidity_2m,dew_point_2m,precipitation_probability,precipitation,weather_code,cloud_cover,wind_speed_10m,wind_gusts_10m&timezone=Europe%2FBerlin&models=best_match
#    header   
#    host      api.open-meteo.com
#    httpheader HTTP/1.1 200 OK
#Date: Sun, 17 Dec 2023 08:14:53 GMT
#Content-Type: application/json; charset=utf-8
#Connection: close
#Content-Encoding: deflate
#    httpversion 1.0
#    hu_blocking 0
#    hu_filecount 1
#    hu_port    443
#    hu_portSfx
#    ignoreredirects 1
#    loglevel  4
#    path      /v1/forecast?latitude=51.0163&longitude=7.0045&current=temperature_2m,relative_humidity_2m,precipitation,cloud_cover,wind_speed_10m,wind_gusts_10m&hourly=temperature_2m,relative_humidity_2m,dew_point_2m,precipitation_probability,precipitation,weather_code,cloud_cover,wind_speed_10m,wind_gusts_10m&timezone=Europe%2FBerlin&models=best_match
#    protocol  https
#    redirects  0
#    timeout    2
#    url        https://api.open-meteo.com/v1/forecast?latitude=51.0163&longitude=7.0045&current=temperature_2m,relative_humidity_2m,precipitation,cloud_cover,wind_speed_10m,wind_gusts_10m&hourly=temperature_2m,relative_humidity_2m,dew_point_2m,precipitation_probability,precipitation,weather_code,cloud_cover,wind_speed_10m,wind_gusts_10m&timezone=Europe%2FBerlin&models=best_match
#    sslargs:
#  QUEUE:
#  READINGS:
#  REQUEST:
#    context    reading
#    data     
#    header   
#    ignoreredirects 0
#    num        unknown
#    retryCount 0
#    type      update
#    url        https://api.open-meteo.com/v1/forecast?latitude=51.0163&longitude=7.0045&current=temperature_2m,relative_humidity_2m,precipitation,cloud_cover,wind_speed_10m,wind_gusts_10m&hourly=temperature_2m,relative_humidity_2m,dew_point_2m,precipitation_probability,precipitation,weather_code,cloud_cover,wind_speed_10m,wind_gusts_10m&timezone=Europe%2FBerlin&models=best_match
#  helper:
#    bm:
#      CODE(0x55d1f707b088):
#        cnt        210
#        dmx        -1000
#        dtot      0
#        dtotcnt    0
#        mTS        16.12. 13:15:56
#        max        0.00858592987060547
#        tot        0.134667873382568
#        mAr:
#          HASH(0x55d1fc4c5ef0)
#          OpenMeteo
#          ?
#      CODE(0x55d1f717be68):
#        cnt        6
#        dmx        -1000
#        dtot      0
#        dtotcnt    0
#        mTS        16.12. 13:17:58
#        max        0.00245499610900879
#        tot        0.00669097900390625
#        mAr:
#          set
#          OpenMeteo
#          room
#          Weather
#      CODE(0x55d1f71f38f0):
#        cnt        6
#        dmx        -1000
#        dtot      0
#        dtotcnt    0
#        mTS        17.12. 04:01:29
#        max        0.00220417976379395
#        tot        0.012343168258667
#        mAr:
#          HASH(0x55d1fc4c5ef0)
#          OpenMeteo HTTPMOD https://api.open-meteo.com/v1/forecast?latitude=51.0163&longitude=7.0045&current=temperature_2m,relative_humidity_2m,precipitation,cloud_cover,wind_speed_10m,wind_gusts_10m&hourly=temperature_2m,relative_humidity_2m,dew_point_2m,precipitation_probability,precipitation,weather_code,cloud_cover,wind_speed_10m,wind_gusts_10m&timezone=Europe%2FBerlin&models=best_match
#      CODE(0x55d1f71f3aa0):
#        cnt        28
#        dmx        -1000
#        dtot      0
#        dtotcnt    0
#        mTS        17.12. 04:01:29
#        max        3.29017639160156e-05
#        tot        0.000479221343994141
#        mAr:
#          HASH(0x55d1fc4c5ef0)
#          HASH(0x55d1f17e0000)
#      CODE(0x55d1f71f5bf0):
#        cnt        61
#        dmx        -1000
#        dtot      0
#        dtotcnt    0
#        mTS        17.12. 09:45:52
#        max        0.000332832336425781
#        tot        0.00466823577880859
#        mAr:
#          HASH(0x55d1fc4c5ef0)
#          OpenMeteo
#          ?
#
Finde den Fehler ;D - ich bekomme keinerlei Readings, egal was ich mit reread und neu laden anstelle.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

MadMax-FHEM

attr OpenMeteo extractAllJSONFilter 1 vs. attr OpenMeteo extractAllJSON 1

Wäre mein Tipp...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

holle75

Probier mal was MadMax geschrieben hat (wobei es bei mir mit dem attr so funktioniert)

Sonst würde ich mal "meine Def" (mit deinen Koordinaten) probieren. Dann drehen wir nämlich "Finde den Fehler" um ;)

Nobbynews

Zitat von: Gisbert am 17 Dezember 2023, 10:01:22attr OpenMeteo extractAllJSONFilter 1

Probier mal statt dessen
attr OpenMeteo extractAllJSON 1

MadMax-FHEM

Zitat von: holle75 am 17 Dezember 2023, 10:12:12Probier mal was MadMax geschrieben hat (wobei es bei mir mit dem attr so funktioniert)
Aber du hast doch eben extractAllJSON und nicht extractAllJSONFilter ;)

Oder hab ich mich verkuckt? 8)

@Gisbert: ich habe eben deine DEF mit (wie von mir geschrieben) extractAllJSON ausprobiert und bekomme 1Mio Readings ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

betateilchen

Warum denn die Krämpfe mit HTTPMOD wenn die API doch json liefert?
Dann nimmt man doch besser JsonMod...

defmod openmeteo JsonMod https://api.open-meteo.com/v1/forecast?latitude=53.53&longitude=9.71&current=temperature_2m,relative_humidity_2m,apparent_temperature,pressure_msl,surface_pressure,wind_speed_10m,wind_direction_10m&timezone=auto&forecast_days=3
attr openmeteo interval 1 * * * *
attr openmeteo readingList complete()
attr openmeteo stateFormat T: current.temperature_2m H: current.relative_humidity_2m P: current.pressure_msl
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

holle75

#13
Zitat von: MadMax-FHEM am 17 Dezember 2023, 10:20:39Aber du hast doch eben extractAllJSON und nicht extractAllJSONFilter ;)

Jo, deswegen meinte ich ja, er soll mal dein extractAllJSONFilter probieren. Mit dem Hinweis, dass es bei mir auch mit extractAllJSON funktioniert. Will sagen, es kann, muss aber nicht daran liegen.

Zitat von: betateilchen am 17 Dezember 2023, 10:20:49Warum denn die Krämpfe mit HTTPMOD wenn die API doch json liefert?
Dann nimmt man doch besser JsonMod...

Kannte ich noch nicht. Wenn die anderen Baustellen durch sind schau ich mir das an.

@Alle: Jemand Lust auf eine Perl Sub Routine Fingerübung? ;)
Für VisualCrossing Wetter habe ich (resp. Frank vor hundert Jahren für Proplanta und ich habs abgewandelt. Cooltux mir noch zwischendurch mit irgendwelchen timestamps geholfen) einen wunderschönen Plot (primär in FTUI genutzt. Anbei die fhem Variante).

Bei OpenMeteo liegt die Stunde an einer anderen Stelle in den Readings und ich bekomme seit 2 Tagen das RegEx nicht angepasst. Grrrrrr

Du darfst diesen Dateianhang nicht ansehen.

Gisbert

Zitat von: betateilchen am 17 Dezember 2023, 10:20:49Warum denn die Krämpfe mit HTTPMOD wenn die API doch json liefert?
Dann nimmt man doch besser JsonMod...

defmod openmeteo JsonMod https://api.open-meteo.com/v1/forecast?latitude=53.53&longitude=9.71&current=temperature_2m,relative_humidity_2m,apparent_temperature,pressure_msl,surface_pressure,wind_speed_10m,wind_direction_10m&timezone=auto&forecast_days=3
attr openmeteo interval 1 * * * *
attr openmeteo readingList complete()
attr openmeteo stateFormat T: current.temperature_2m H: current.relative_humidity_2m P: current.pressure_msl


Hallo betateilchen,

danke für diesen Tipp. Damit funktioniert es.
Ich wundere mich nur, dass die Geodaten in den Readings nicht denen in der Definition übereinstimmen. Das war bei der HPPTMOD-Definition auch so.
latitude 51.02 2023-12-17 13:42:41
longitude 6.9999995 2023-12-17 13:42:4

list:
define OpenMeteo JsonMod https://api.open-meteo.com/v1/forecast?latitude=51.0163&longitude=7.0045&current=temperature_2m,relative_humidity_2m,precipitation,weather_code,cloud_cover,surface_pressure,wind_speed_10m,wind_gusts_10m&forecast_days=3
attr OpenMeteo interval 1 * * * *
attr OpenMeteo readingList complete ()
#  API_LAST_MSG 200
#  API_LAST_RES 1702816961.79868
#  CFGFN     
#  DEF        https://api.open-meteo.com/v1/forecast?latitude=51.0163&longitude=7.0045&current=temperature_2m,relative_humidity_2m,precipitation,weather_code,cloud_cover,surface_pressure,wind_speed_10m,wind_gusts_10m&forecast_days=3
#  FUUID      657ee8de-f33f-e986-d6e2-7095335697556d2c
#  NAME      OpenMeteo
#  NEXT      2023-12-17 14:01:00
#  NR        1368
#  SOURCE    https://api.open-meteo.com/v1/forecast?latitude=51.0163&longitude=7.0045&current=temperature_2m,relative_humidity_2m,precipitation,weather_code,cloud_cover,surface_pressure,wind_speed_10m,wind_gusts_10m&forecast_days=3 (200)
#  STATE      ???
#  SVN        27933 2023-09-04 13:29:42 UTC
#  TYPE      JsonMod
#  eventCount 738
#  CONFIG:
#    IN_REQUEST 0
#    SOURCE    https://api.open-meteo.com/v1/forecast?latitude=51.0163&longitude=7.0045&current=temperature_2m,relative_humidity_2m,precipitation,weather_code,cloud_cover,surface_pressure,wind_speed_10m,wind_gusts_10m&forecast_days=3
#    SECRET:
#  OLDREADINGS:
#  READINGS:
#    2023-12-17 13:42:41  current.cloud_cover 43
#    2023-12-17 13:42:41  current.interval 900
#    2023-12-17 13:42:41  current.precipitation 0
#    2023-12-17 13:42:41  current.relative_humidity_2m 83
#    2023-12-17 13:42:41  current.surface_pressure 1031.4
#    2023-12-17 13:42:41  current.temperature_2m 7.9
#    2023-12-17 13:42:41  current.time    2023-12-17T12:30
#    2023-12-17 13:42:41  current.weather_code 2
#    2023-12-17 13:42:41  current.wind_gusts_10m 17.3
#    2023-12-17 13:42:41  current.wind_speed_10m 6.8
#    2023-12-17 13:42:41  current_units.cloud_cover %
#    2023-12-17 13:42:41  current_units.interval seconds
#    2023-12-17 13:42:41  current_units.precipitation mm
#    2023-12-17 13:42:41  current_units.relative_humidity_2m %
#    2023-12-17 13:42:41  current_units.surface_pressure hPa
#    2023-12-17 13:42:41  current_units.temperature_2m °C
#    2023-12-17 13:42:41  current_units.time iso8601
#    2023-12-17 13:42:41  current_units.weather_code wmo code
#    2023-12-17 13:42:41  current_units.wind_gusts_10m km/h
#    2023-12-17 13:42:41  current_units.wind_speed_10m km/h
#    2023-12-17 13:42:41  elevation      47
#    2023-12-17 13:42:41  generationtime_ms 0.219941139221191
#    2023-12-17 13:42:41  latitude        51.02
#    2023-12-17 13:42:41  longitude      6.9999995
#    2023-12-17 13:42:41  timezone        GMT
#    2023-12-17 13:42:41  timezone_abbreviation GMT
#    2023-12-17 13:42:41  utc_offset_seconds 0
#  helper:
#    bm:
#      JsonMod_Attr:
#        cnt        2
#        dmx        -1000
#        dtot      0
#        dtotcnt    0
#        mTS        17.12. 13:27:49
#        max        0.00379395484924316
#        tot        0.00384187698364258
#        mAr:
#          set
#          OpenMeteo
#          interval
#          1 * * * *
#      JsonMod_Define:
#        cnt        3
#        dmx        -1000
#        dtot      0
#        dtotcnt    0
#        mTS        17.12. 13:26:06
#        max        0.000526905059814453
#        tot        0.00117087364196777
#        mAr:
#          HASH(0x55d2022cec50)
#          OpenMeteo JsonMod https://api.open-meteo.com/v1/forecast?latitude=51.0163&longitude=7.0045&current=temperature_2m,relative_humidity_2m,precipitation,cloud_cover,wind_speed_10m,wind_gusts_10m&hourly=temperature_2m,relative_humidity_2m,dew_point_2m,precipitation_probability,precipitation,weather_code,cloud_cover,wind_speed_10m,wind_gusts_10m&timezone=Europe%2FBerlin&forecast_days=3&models=best_match
#      JsonMod_Set:
#        cnt        775
#        dmx        -1000
#        dtot      0
#        dtotcnt    0
#        mTS        17.12. 13:41:36
#        max        0.00222420692443848
#        tot        0.041733980178833
#        mAr:
#          HASH(0x55d2022cec50)
#          OpenMeteo
#          reread
#
setstate OpenMeteo 2023-12-17 13:42:41 .computedReadings current.interval,current_units.time,current.wind_speed_10m,current.temperature_2m,elevation,current_units.precipitation,current.surface_pressure,utc_offset_seconds,current.relative_humidity_2m,current.cloud_cover,current.weather_code,current_units.temperature_2m,current_units.wind_speed_10m,longitude,current_units.wind_gusts_10m,current_units.relative_humidity_2m,current_units.cloud_cover,latitude,current.time,current_units.interval,timezone,generationtime_ms,current.wind_gusts_10m,current_units.surface_pressure,current_units.weather_code,current.precipitation,timezone_abbreviation
setstate OpenMeteo 2023-12-17 13:42:41 current.cloud_cover 43
setstate OpenMeteo 2023-12-17 13:42:41 current.interval 900
setstate OpenMeteo 2023-12-17 13:42:41 current.precipitation 0
setstate OpenMeteo 2023-12-17 13:42:41 current.relative_humidity_2m 83
setstate OpenMeteo 2023-12-17 13:42:41 current.surface_pressure 1031.4
setstate OpenMeteo 2023-12-17 13:42:41 current.temperature_2m 7.9
setstate OpenMeteo 2023-12-17 13:42:41 current.time 2023-12-17T12:30
setstate OpenMeteo 2023-12-17 13:42:41 current.weather_code 2
setstate OpenMeteo 2023-12-17 13:42:41 current.wind_gusts_10m 17.3
setstate OpenMeteo 2023-12-17 13:42:41 current.wind_speed_10m 6.8
setstate OpenMeteo 2023-12-17 13:42:41 current_units.cloud_cover %
setstate OpenMeteo 2023-12-17 13:42:41 current_units.interval seconds
setstate OpenMeteo 2023-12-17 13:42:41 current_units.precipitation mm
setstate OpenMeteo 2023-12-17 13:42:41 current_units.relative_humidity_2m %
setstate OpenMeteo 2023-12-17 13:42:41 current_units.surface_pressure hPa
setstate OpenMeteo 2023-12-17 13:42:41 current_units.temperature_2m °C
setstate OpenMeteo 2023-12-17 13:42:41 current_units.time iso8601
setstate OpenMeteo 2023-12-17 13:42:41 current_units.weather_code wmo code
setstate OpenMeteo 2023-12-17 13:42:41 current_units.wind_gusts_10m km/h
setstate OpenMeteo 2023-12-17 13:42:41 current_units.wind_speed_10m km/h
setstate OpenMeteo 2023-12-17 13:42:41 elevation 47
setstate OpenMeteo 2023-12-17 13:42:41 generationtime_ms 0.219941139221191
setstate OpenMeteo 2023-12-17 13:42:41 latitude 51.02
setstate OpenMeteo 2023-12-17 13:42:41 longitude 6.9999995
setstate OpenMeteo 2023-12-17 13:42:41 timezone GMT
setstate OpenMeteo 2023-12-17 13:42:41 timezone_abbreviation GMT
setstate OpenMeteo 2023-12-17 13:42:41 utc_offset_seconds 0

Die Geodaten in der Definition habe ich über das Suchfeld für meine Umgebung gesetzt, also nicht mein genauer Standort.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY