Wettervorhersage über die openweather-API von www.wetter.com

Begonnen von tupol, 10 November 2014, 20:35:42

Vorheriges Thema - Nächstes Thema

tupol

zu 1. Bitte commandref lesen und Projekt auf wetter.com passend einstellen.

zu 2. Das sagt mir alles nichts. Ein Icon könnte man sich selber aus dem weathercode basteln.


dan1180


  • Danke. Commandref hat mir da nicht weiter geholfen aber ein erneuter Blick auf Wetter.com. Hatte mir nur die Wettervorhersage angeschaut und dort die gewünschten Werte gefunden, nicht aber kapiert warum die nicht übermittelt werden. Für alle mit den selben Problemen: wetter.com -> Projektverwaltung -> Projekt wählen -> Vorhersageeinstellungen (rechte Seite wird übermittelt)
  • Bei der Wettervorhersage von Yahoo wird wenn es regnet eine Regenwolke darkestellt. Wenn die Sonne scheint eine Sonne und wenn es bewölkt ist... Bei OPENWEATHER werden keine Bilder angezeigt. Wenn ich eine Lampe einschalte kann ich über devStateIcon ein anderes Bild anzeigen lassen als wenn ich diese Lampe aus schalte. Nun meine Frage: Kann ich solche Bilder/Icons über devStateIcon anzeigen lassen (wenn ja wie) oder muss ich mir ein Notify schreiben welches bei einer Wetteränderung den Status wechselt?
FHEM 6.2 auf RPi4B
Raspberrymatic 3.X auf RPI3B

1xDS2408 und 6xDS18B20 an GPIO über Modul RPI_1Wire
>50 Homematic-Geräte

tupol

#17
1. Stimmt. Zitat commandref: Wichtig! Die Vorhersagewerte (in Klammern) müssen zuerst in den Vorhersageeinstellungen des Projektes auf wetter.com ausgewählt werden.
2. Kann man nicht.

dan1180

Ok, das hab ich dann ca 126x überlesen  ::) Dank dir.

Zu 2. werd ich das glaub mal für meinen Floorplan mit nem virtuellen device und nem Notify versuchen...

Gruß
Dan
FHEM 6.2 auf RPi4B
Raspberrymatic 3.X auf RPI3B

1xDS2408 und 6xDS18B20 an GPIO über Modul RPI_1Wire
>50 Homematic-Geräte

oracess

Hallo,

Ich bekomme im Log folgende Meldung:

"PERL WARNING: Invalid conversion in sprintf: "%<" at ./FHEM/59_OPENWEATHER.pm line 489."

Ich komme nicht weiter, da ich glaube alles richtig gemacht zu haben (lt. Anleitung). Im Ergebnis ist auch nichts Sonderbares zu erkennen - es wird die Dreitagesvorschau korrekt dargestellt.

Vorhersage Petronell
heute   bedeckt
min. 3 °C max. 5 °C
Nieders.risiko: 90 %
Wind: 16 km/h aus O
Do   bedeckt
min. 5 °C max. 6 °C
Nieders.risiko: 30 %
Wind: 20 km/h aus O
Fr   bedeckt
min. 5 °C max. 5 °C
Nieders.risiko: 75 %
Wind: 10 km/h aus O

#Start wetter.com
define Wetter OPENWEATHER raspifhem ATAT10016001 xxxxxxxxxxxxxx
attr Wetter room Plots
define MyForecast weblink htmlCode { OPENWEATHER_Html("Wetter") }
attr MyForecast fp_Aussen 150,350,1,WETTER.COM
#Ende wetter.com

Danke für einen Hinweis !

tupol


oracess

Herzlichen Dank - funkt jetzt ohne Fehlermeldung im Log !!
:) :) :)

dan1180

Hallo zusammen und frohes neues Jahr!

Ich habe mich mal daran gemacht diese Wettervorhersage mit schönen Bildern zu versehen (siehe Anhang). Gelöst habe ich mein Vorhaben mittels dummys und notifys. Hier mein Vorgehen:

Zuerst habe ich mir die Übersetzung der WetterCodes auf der wetter.com Seite gesucht.
http://www.wetter.com/apps_und_mehr/website/api/dokumentation/#  -> Wetterzustände
Ich finde das einfacher als über die Text-Zustände zu gehen, da hier u.U. Leerzeichen, Sonderzeichen, etc. auftauchen. Außerdem finde ich das unten stehende Notify übersichtlicher.

Dann habe ich mir drei dummys definiert (heute, morgen, übermorgen). Diese heißen bei mir WI0, WI1 und WI2 (WeatherIcon#). Diesen habe ich verschiedene StateIcons gegeben.
attr WI# devStateIcon 0:icn_sunny_S 1:icn_partlycloudy_S 2:icn_cloudy_S 3:icn_cloudy_S 4:icn_foggy_S 5:icn_rainy_S 6:icn_rainy_S 7:icn_snow_S 8:icn_rainy_S 9:icn_thunder_S
Mir reichen hier die 10 Hauptzustände aus. Es kann natürlich auch für jeden der 46? WetterCodes ein eigenes Icon definiert werden. Die Icons habe ich mir im Internet gesucht. Bitte darauf achten, dass sie "Freeware" sind.

Last but not least braucht man jetzt noch die notifys zur Statusänderung. Miene heißen nt_WC# (notify_WeatherCode), meine Vorhersage heißt Forecast. Also:
define nt_WC# notify Forecast:fc#_weatherCode:.* {CODE}

Mit folgendem code am Beispiel fc0 (Wetter heute):
if (ReadingsVal("Forecast","fc0_weatherCode",999) eq 0) {fhem("set WI0 0")}

elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 1) {fhem("set WI0 1")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 10) {fhem("set WI0 1")}

elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 2) {fhem("set WI0 2")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 20) {fhem("set WI0 2")}

elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 3) {fhem("set WI0 3")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 30) {fhem("set WI0 3")}

elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 4) {fhem("set WI0 4")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 40) {fhem("set WI0 4")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 45) {fhem("set WI0 4")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 48) {fhem("set WI0 4")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 49) {fhem("set WI0 4")}

elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 5) {fhem("set WI0 5")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 50) {fhem("set WI0 5")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 51) {fhem("set WI0 5")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 53) {fhem("set WI0 5")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 55) {fhem("set WI0 5")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 56) {fhem("set WI0 5")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 57) {fhem("set WI0 5")}

elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 6) {fhem("set WI0 6")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 60) {fhem("set WI0 6")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 61) {fhem("set WI0 6")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 63) {fhem("set WI0 6")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 65) {fhem("set WI0 6")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 66) {fhem("set WI0 6")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 67) {fhem("set WI0 6")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 68) {fhem("set WI0 6")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 69) {fhem("set WI0 6")}

elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 7) {fhem("set WI0 7")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 70) {fhem("set WI0 7")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 71) {fhem("set WI0 7")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 73) {fhem("set WI0 7")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 75) {fhem("set WI0 7")}

elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 8) {fhem("set WI0 8")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 80) {fhem("set WI0 8")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 81) {fhem("set WI0 8")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 82) {fhem("set WI0 8")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 83) {fhem("set WI0 8")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 84) {fhem("set WI0 8")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 85) {fhem("set WI0 8")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 86) {fhem("set WI0 8")}

elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 9) {fhem("set WI0 9")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 90) {fhem("set WI0 9")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 95) {fhem("set WI0 9")}
elsif (ReadingsVal("Forecast","fc0_weatherCode",999) eq 96) {fhem("set WI0 9")}

else {fhem("set WI0 999")}

Hier reduziere ich die Zwischenstufen auf die für mich ausreichenden 10 Haupt-Zustände. Ich habe versucht das etwas einfacher zu machen, leider aber bisher (heute) nicht geschafft. Da fehlt mir einfach Programmierkenntnis/-erfahrung.

Bei Fragen oder Anregungen (vor Allem zur Vereinfachung der Notifys) keine Zurückhaltung  ;)

Grüße
Dan
FHEM 6.2 auf RPi4B
Raspberrymatic 3.X auf RPI3B

1xDS2408 und 6xDS18B20 an GPIO über Modul RPI_1Wire
>50 Homematic-Geräte

tupol

Gute Sache.  Auf Wetter.vom gibt es auch Icons für jeden Wetterzustand.

thunder1902

Hallo!

2 Fragen:

1. Bei mir werden die Vorhersagen für die nächsten beiden Tage nicht übermittelt. Auf der Projektverwaltung habe ich alle Werte zur Übermittlung "freigegeben". Es werden aber nur Werte des laufenden Tages angezeigt.
Zitatheute   wolkig
min. -3 °C max. 4 °C
Nieders.risiko: 30 %
Wind: 7 km/h aus W

min. °C max. °C
Nieders.risiko: %
Wind: km/h aus

min. °C max. °C
Nieders.risiko: %
Wind: km/h aus
powered by wetter.com

2. Was macht folgende Zeile?
attr MyForecast fp_Aussen 150,350,1,WETTER.COM

tupol

Zitat
1. Bei mir werden die Vorhersagen für die nächsten beiden Tage nicht übermittelt. Auf der Projektverwaltung habe ich alle Werte zur Übermittlung "freigegeben". Es werden aber nur Werte des laufenden Tages angezeigt.
Vermutlich hast Du nur einen Tag ausgewählt.

thunder1902


dan1180

Kleine Ergänzung noch:

Die Icons sind nicht in der Vorhersage integriert. Es wurden lediglich die Dummies auf dem Floorplan entsprechend positioniert.

Gruß
Dan
FHEM 6.2 auf RPi4B
Raspberrymatic 3.X auf RPI3B

1xDS2408 und 6xDS18B20 an GPIO über Modul RPI_1Wire
>50 Homematic-Geräte

Andy89

Servus,
irgendwie bekomme ich die Icons immer noch nicht hin. Vielleicht kann ja mal jemand schauen, was der Fehler dafür ist.
#Wetter.com
define Forecast OPENWEATHER wettercomfhem DE000**** *********************
attr Forecast room Wetter
define myForecast weblink htmlCode { OPENWEATHER_Html("Forecast") }
attr myForecast fp_Grundriss 501,50,0,
attr myForecast room Wetter

define WI0 dummy
attr WI0 room Wetter
#attr WI0 devStateIcon 0:wettercom_icons/d_0_M 1:wettercom_icons/d_1_M 10:wettercom_icons/d_10_M 2:wettercom_icons/d_2_M 3:wettercom_icons/d_3_M 4:wettercom_icons/d_4_M 5:wettercom_icons/d_5_M 6:wettercom_icons/d_6_M 7:wettercom_icons/d_7_M 8:wettercom_icons/d_8_M 9:wettercom_icons/d_9_M
#attr WI0 setList 0 1 10 2 3 4 5 6 7 8 9

define nt_WC0 notify Forecast:fc0_weatherCode: .* {if (ReadingsVal("Forecast","fc0_weatherCode",999) eq 0) {fhem("set WI0 0")}\
\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 1) {fhem("set WI0 1")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 10) {fhem("set WI0 1")}\
\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 2) {fhem("set WI0 2")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 20) {fhem("set WI0 2")}\
\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 3) {fhem("set WI0 3")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 30) {fhem("set WI0 3")}\
\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 4) {fhem("set WI0 4")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 40) {fhem("set WI0 4")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 45) {fhem("set WI0 4")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 48) {fhem("set WI0 4")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 49) {fhem("set WI0 4")}\
\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 5) {fhem("set WI0 5")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 50) {fhem("set WI0 5")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 51) {fhem("set WI0 5")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 53) {fhem("set WI0 5")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 55) {fhem("set WI0 5")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 56) {fhem("set WI0 5")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 57) {fhem("set WI0 5")}\
\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 6) {fhem("set WI0 6")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 60) {fhem("set WI0 6")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 61) {fhem("set WI0 6")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 63) {fhem("set WI0 6")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 65) {fhem("set WI0 6")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 66) {fhem("set WI0 6")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 67) {fhem("set WI0 6")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 68) {fhem("set WI0 6")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 69) {fhem("set WI0 6")}\
\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 7) {fhem("set WI0 7")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 70) {fhem("set WI0 7")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 71) {fhem("set WI0 7")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 73) {fhem("set WI0 7")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 75) {fhem("set WI0 7")}\
\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 8) {fhem("set WI0 8")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 80) {fhem("set WI0 8")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 81) {fhem("set WI0 8")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 82) {fhem("set WI0 8")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 83) {fhem("set WI0 8")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 84) {fhem("set WI0 8")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 85) {fhem("set WI0 8")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 86) {fhem("set WI0 8")}\
\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 9) {fhem("set WI0 9")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 90) {fhem("set WI0 9")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 95) {fhem("set WI0 9")}\
elsif(ReadingsVal("Forecast","fc0_weatherCode",999) eq 96) {fhem("set WI0 9")}\
\
else {fhem("set WI0 999")}}
attr nt_WC0 room Wetter


Ich vermute es hat irgendwas mit dem dummy zu tun. Denn der folgende Code ändert den Status von WI0 auch nicht. Das notify test2 funktioniert ohne Probleme. Und das ändern in der Befehlszeile geht auch ohne Probleme.
define test2 notify WZ_Balkontür: .* {fhem("set WZ_Wanthermostat_Climate desired-temp 12.0")}
define test notify WZ_Balkontür: .* {fhem("set WI0 0")}
attr test room Wetter


Ich hoffe ihr könnt mir helfen.

Beste Grüße
Andy
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD

Andy89

ich habe heute herausgefunden, wie man einen Code direkt in den notifys editieren kann.
Mit dieser neu-erlangten Macht funktionieren die Icons nun auch bei mir....

so einfach kann es gehen, wenn man den Code nicht direkt in die fhem.cfg schreibt ;D ;D ;D
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD