neues Wetter Modul - DWD Open Data

Begonnen von somansch, 10 April 2018, 23:49:05

Vorheriges Thema - Nächstes Thema

somansch

Hallo FTUI Gemeinde,

Jens entwickelt gerade ein neues Wettermodul auf Basis der Open Data Schnittstelle des Deutschen Wetterdienstes. Um dies in FTUI nutzen zu können, fehlen noch die Wetter-Icons bzw. Definition.

Wer kann in diesem Thread unterstützen? https://forum.fhem.de/index.php/topic,83097.msg792440.html#new

Danke und Gruß
Andreas

somansch

#1
Das Modul ist jetzt soweit fertig und wird von Jens offiziell eingecheckt. Ein zusätzliches Reading für den Wochentag ist hinzugefügt. Jetzt fehlt eigentlich nur noch eine Logik, das korrekte Wetter-Icon anzuzeigen.

Daher nochmal die Frage, wer hier unterstützen kann. Eventuell ein User-Reading mit einer entsprechenden Logik?!

PS: Es gibt sogar Daten für eine Vorhersage im 3-Stunden-Rythmus!

Danke und Gruß
Andreas


somansch

Ich habe heute mal das "weather_widget" angepasst, sodass ich die kleinklima Icons im neuen DWD Open Data verwenden kann. Folgende Ergänzung ab Zeile 274:        // DWD_OpenData (by somansch)
'äußerst heftiger Regenschauer': 'showers.png',
'Bewölkung abnehmend': 'partly_cloudy.png',
'Bewölkung unverändert': 'cloudy.png',
'Bewölkung zunehmend': 'overcast.png',
'Bewölkungsentwicklung nicht beobachtet': 'sunny.png',
'durchgehend leichter Regen': 'rain.png',
'durchgehend leichter Schneefall': 'snow.png',
'durchgehend leichter Sprühregen': 'drizzle.png',
'durchgehend mäßiger Regen': 'rain.png',
'durchgehend mäßiger Schneefall': 'snow.png',
'durchgehend mäßiger Sprühregen': 'drizzle.png',
'durchgehend starker Regen': 'rain.png',
'durchgehend starker Schneefall': 'snow.png',
'durchgehend starker Sprühregen': 'drizzle.png',
'leichter gefrierender Regen': 'rainsnow.png',
'leichter gefrierender Sprühregen': 'rainsnow.png',
'leichter Regenschauer': 'scatteredshowers.png',
'leichter Schneeregen': 'rainsnow.png',
'leichter Schneeregenschauer': 'rainsnow.png',
'leichter Schneeschauer': 'snow.png',
'leichter Sprühregen mit Regen': 'rain.png',
'leichtes oder mäßiges Gewitter mit Graupel oder Hagel': 'scatteredthunderstorms.png',
'leichtes oder mäßiges Gewitter mit Regen oder Schnee': 'scatteredthunderstorms.png',
'mäßiger oder starker gefrierender Regen': 'rainsnow.png',
'mäßiger oder starker gefrierender Sprühregen': 'rainsnow.png',
'mäßiger oder starker Graupelschauer': 'storm.png',
'mäßiger oder starker Hagelschauer': 'storm.png',
'mäßiger oder starker Regenschauer': 'showers.png',
'mäßiger oder starker Schneeregen': 'rainsnow.png',
'mäßiger oder starker Schneeregenschauer': 'rainsnow.png',
'mäßiger oder starker Schneeschauer': 'snow.png',
'mäßiger oder starker Sprühregen mit Regen': 'rain.png',
'Nebel in einiger Entfernung': 'fog.png',
'Nebel in Schwaden oder Bänken': 'fog.png',
'Nebel mit Reifansatz, Himmel erkennbar': 'fog.png',
'Nebel mit Reifansatz, Himmel nicht erkennbar': 'fog.png',
'Nebel, Himmel erkennbar, dichter werdend': 'fog.png',
'Nebel, Himmel erkennbar, dünner werdend': 'fog.png',
'Nebel, Himmel erkennbar, unverändert': 'fog.png',
'Nebel, Himmel nicht erkennbar, dichter werdend': 'fog.png',
'Nebel, Himmel nicht erkennbar, dünner werdend': 'fog.png',
'Nebel, Himmel nicht erkennbar, unverändert': 'fog.png',
'Sicht durch Rauch oder Asche vermindert': 'fog.png',
'starkes Gewitter mit Graupel oder Hagel': 'thunderstorms.png',
'starkes Gewitter mit Regen oder Schnee': 'thunderstorms.png',
'starkes Gewitter mit Sandsturm': 'thunderstorms.png',
'unterbrochener leichter Regen oder einzelne Regentropfen': 'rain.png',
'unterbrochener leichter Schneefall oder einzelne Schneeflocken': 'snow.png',
'unterbrochener leichter Sprühregen': 'drizzle.png',
'unterbrochener mäßiger Regen': 'rain.png',
'unterbrochener mäßiger Schneefall': 'snow.png',
'unterbrochener mäßiger Sprühregen': 'drizzle.png',
'unterbrochener starker Regen': 'rain.png',
'unterbrochener starker Schneefall': 'snow.png',
'unterbrochener starker Sprühregen': 'drizzle.png',


@setstate, kannst du diese Ergänzung offiziell übernehmen?

setstate


curt

Zitat von: somansch am 15 April 2018, 23:41:45
Das Modul ist jetzt soweit fertig und wird von Jens offiziell eingecheckt.

Hallo,
darf ich bitte fragen, wie das Modul für FTUI heißt und wie man es nutzt? Ein Beispiel wäre auch sehr schön.
RPI 4 - Jeelink HomeMatic Z-Wave

moonsorrox

gib mal in die Befehlszeile deines Fhem folgendes ein
help DWD_OpenData
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

grossmaggul

Ich vermute, das ist nicht das was curt wissen möchte, er fragt nach dem Namen des Moduls in FTUI.
FHEM auf Debian Buster Server, 2 x nanoCUL868, 1xnanoCUL465; Homematic, MAX, MiLight, HUE,  2 x Gosund SP1

curt

Du vermutest recht. Es gibt in den Weiten des Forums (mindestens) ein inoffizielles FTU-Modul für DWDopendata. Das ist aber nicht mehr funktional, alternativ ich zu doof.

Ich habe eine Teilerkenntnis, es (siehe oben) ist wohl in widget_weather.js integriert.


# grep "by somansch" *
widget_weather.js:        // DWD_OpenData (by somansch)


Nun wäre ein Beispiel (gern mehrere) gar nicht schlecht; ich habe keinerlei Erfahrungen mit widget_weather und gleich gar nicht in Zusammenhang mit DWDopendata.

@somansch
RPI 4 - Jeelink HomeMatic Z-Wave

moonsorrox

OK, ich hatte vermutet das sich in den Weiten der commandref etwas findet...!
Was mir noch einfällt ist der User Romanxxx weiter weiß ich nicht hat auf seiner Seite etwas dazu schau mal hier

Er hat das ehemalige GDS Widget für DWD genutzt, evtl. ist das was du suchst
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

curt

Zitat von: moonsorrox am 09 November 2018, 16:50:38
OK, ich hatte vermutet das sich in den Weiten der commandref etwas findet...!

Das ist grundsätzlich falsch, da FTUI-Widgets eine völlig andere Ebene sind. Ich wurde gerade (Link unten) genau darüber belehrt.

Im Einzelfall hast Du aber vermutlich sogar recht: Ich kann das nicht im einzelnen beurteilen, da ich das weather-Widget noch nie einsetzte, aber es sieht so aus als ob das Widget "nur" den Durchgriff auf verschiedene Wetter-Devices sicherstellt sowie noch Bildchen dafür hat - die einzelnen Variablen muss man sich wohl selbst zusammenklauben. Und an dem Punkt würde Dein help-Hinweis wieder stimmen.

Zitat von: moonsorrox am 09 November 2018, 16:50:38
Was mir noch einfällt ist der User Romanxxx weiter weiß ich nicht hat auf seiner Seite etwas dazu schau mal hier

Dieses Widget steht in einem Thread in den Weiten des Forums: https://forum.fhem.de/index.php/topic,89570.msg820325.html#msg820325 . Download uswusf - funktioniert nicht. Dafür gibt es zig Möglichkeiten. Von "bin selbst zu dumm" über "wird nicht mehr gepflegt" bis hin zu "DWD hat was geändert", der Maintainer von DWD-opendata jammert regelmäßig darüber.

Dieser Problemkreis (unklare Versionsstände, fehlende Dokus) wird übrigens gerade hier diskutiert: https://forum.fhem.de/index.php?topic=92218.msg847362#msg847362

Zitat von: moonsorrox am 09 November 2018, 16:50:38
Er hat das ehemalige GDS Widget für DWD genutzt, evtl. ist das was du suchst

Ich habe -zugegeben- @roman1528 noch gar nicht angesprochen. Hiermit Marker gesetzt.
RPI 4 - Jeelink HomeMatic Z-Wave

curt

Tage später:
Ja, es ist so, dass widget_weather.js "lediglich" die Daten eines (beliebigen) FHEM-Wettermoduls durchleitet, ggf. filtert. Somit hast Du recht: Man muss eigentlich "nur" die richtigen Readings heraussuchen, dann [es würde lang].

Auf Anregung von @somansch ist im widget_weather.js auch die Filterung "Textmeldung -> Bildchen" drin. Leider ist mir völlig unklar, wie man die konkret anspricht.

Ich habe @somansch via PN gebeten, seine konkrete Nutzung vorzustellen.
RPI 4 - Jeelink HomeMatic Z-Wave

Knallkopp_02

Hallo curt,

ich bin aktuell auch an der Stelle das ausgelesene Wetter in das grafische des FTUI umzusetzen. Leider habe ich noch keine Lösung gefunden, die mir zu 100% gefällt.

Ich habe zuerst mit Proplanta angefangen und die Weathericons eingebunden und etwas herum gespielt. Setstate war so net und hat auch ein paar Änderungen im JS gemacht, damit man es besser nutzen konnte.

Aktuell bin ich dabei DWD und die Kleinklima Icons unter einen Hut zu bekommen. Leider bin ich kein Programmierer und stocher nur im Nebel rum um meine Anzeige so zu bekommen, wie ich mir das vorstelle. Setstate sagte mir, das er das JS nur übernommen hat und es auch ungern anffast, da es sehr undurchsichtig ist.

Wenn du möchtest, kann ich dir gern meinen bislang erzeugten Code für FTUI bereit stellen.

Evtl findet sich ja ein Programmierer der die Umsetzung für ein überarbeitetes JS in Angriff nimmt. Ich selbst würde mich sofort als Tester zur Verfügung stellen. Ebenso bin ich der Meinung, dass noch Icons fehlen was Kleinkima angeht.

DWD + widget_weather.js + Kleinklima machen einen sehr guten Eindruck. Mir persönlich fehlen nur noch ein paar Sachen um meine 100% zu erreichen.
Ich bin kein Programmierer und habe keine Ahnung.

Raspberry PI 3B+ mit HM-MOD-RPI-PCB,     
HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-SEC-SCo
Raspberry PI 3B+ mit 7" Touchdisplay

curt

Ja, bitte. Ich würde das gern sehen.
RPI 4 - Jeelink HomeMatic Z-Wave

jensb

Wenn widget_weather.js im Wesentlichen Readings durchreicht, wie es @curt schreibt, dann kommt es stark darauf an, was man in der FTUI darstellen will. Die 2-Icons-Lösung pro Tag mit uhrzeitabhängigem 1. Tag, wie es der Weblink für das OpenData Modul anbietet, funktioniert nicht mit fixen Readings. Man könnte jedoch im Weblink-Modul die aufbereiteten Daten nicht nur als HTML ausgeben sondern optional als Readings zur Verfügung stellen, wie ich es @Knallkopp_02 bereits angedeutet hatte.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

somansch

Zitat von: curt am 12 November 2018, 23:11:32
Tage später:
Ja, es ist so, dass widget_weather.js "lediglich" die Daten eines (beliebigen) FHEM-Wettermoduls durchleitet, ggf. filtert. Somit hast Du recht: Man muss eigentlich "nur" die richtigen Readings heraussuchen, dann [es würde lang].

Auf Anregung von @somansch ist im widget_weather.js auch die Filterung "Textmeldung -> Bildchen" drin. Leider ist mir völlig unklar, wie man die konkret anspricht.

Ich habe @somansch via PN gebeten, seine konkrete Nutzung vorzustellen.

Hier meine Konfig. Das DWD Modul ist wie folgt definiert:
defmod DWD DWD_OpenData
attr DWD alertArea %DEINE_LOKATION%
attr DWD alertLanguage DE
attr DWD event-on-update-reading 1
attr DWD forecastDays 4
attr DWD forecastProperties DD,FF,RRhc,Rh00,SunD,TTT,Tx,Tn,ww,wwd
attr DWD forecastResolution 3
attr DWD forecastStation %DEINE_LOKATION%
attr DWD forecastWW2Text 1
attr DWD room 096_Wetter
attr DWD userReadings fc0_SunDh {ReadingsVal("DWD","fc0_SunD","")/3600},\
fc1_SunDh {ReadingsVal("DWD","fc1_SunD","")/3600},\
fc2_SunDh {ReadingsVal("DWD","fc2_SunD","")/3600},\
fc3_SunDh {ReadingsVal("DWD","fc3_SunD","")/3600},\
fc4_SunDh {ReadingsVal("DWD","fc4_SunD","")/3600}


In FTUI nutze ich Templates. Hier das Content-File:
<!DOCTYPE html>
<html>
<body>
    <div class="page" id="content_weather_DWD_new">
<div class="phone-back-btn">
<div data-type="link" data-url="#content_weather.html" data-load="#content_weather" data-color="white" data-icon="mi-chevron_left" class="large"></div>
</div>

<div class="hbox">
<div class="vbox phone-width">
<div class="card lift">
<header>DWD Vorhersage</header>
<section>
<div data-template="template_weather_DWD.html" data-parameter='{"var_device":"DWD","var_day":"fc0"}'></div>
</section>
<section>
<div data-template="template_weather_DWD.html" data-parameter='{"var_device":"DWD","var_day":"fc1"}'></div>
</section>
<section>
<div data-template="template_weather_DWD.html" data-parameter='{"var_device":"DWD","var_day":"fc2"}'></div>
</section>
<section>
<div data-template="template_weather_DWD.html" data-parameter='{"var_device":"DWD","var_day":"fc3"}'></div>
</section>
<section>
<div data-template="template_weather_DWD.html" data-parameter='{"var_device":"DWD","var_day":"fc4"}'></div>
</section>
</div>
</div>
</div>
</div>
</body>

</html>


...und hier das Template-File:
<!DOCTYPE html>
<html>
<head>
<!-- FHEM Tablet UI V2.6 -->
<!-- Template für DWD -->
</head>
<body>
<div class="hdm-flexbox-container">
<div class="hdm-flexbox-item-10">
<div class="bigger" data-type="label" data-device="var_device" data-get="var_day_weekday"></div>
</div>
<div class="hdm-flexbox-item-10">
<div class="readonly" data-type="weather" data-device="var_device" data-get="var_day_4_wwd" data-imageset="kleinklima"></div>
</div>
<div class="hdm-flexbox-item-10">
<div class="" data-type="symbol" data-icon="oa-temp_temperature_max" data-off-color="blue"></div>
<div class="bigger" data-type="label" data-device="var_device" data-get="var_day_Tx" data-limits="[-50,-10,0,10,20,25,30]" data-colors='["#0000ff","#9999ff","#ffbdff","#FAA460","#ff6900","#ff3333","#ff0000"]' data-unit="&deg;C" data-fix="0"></div>
</div>
<div class="hdm-flexbox-item-10">
<div class="" data-type="symbol" data-icon="oa-weather_rain_light" data-off-color="blue"></div>
<div class="bigger" data-type="label" data-device="var_device" data-get="var_day_2_RRhc" data-limits="[0,1,5,10,20,30]" data-colors='["#00ff00","#bfff00","#ffff00","#ff6900","#ff3333","#ff0000"]' data-unit="mm" data-fix="0"></div>
</div>
<div class="hdm-flexbox-item-10">
<div class="" data-type="symbol" data-icon="fa-umbrella" data-off-color="blue"></div>
<div class="bigger" data-type="label" data-device="var_device" data-get="var_day_6_Rh00" data-limits="[0,1,10,25,50,75]" data-colors='["#00ff00","#bfff00","#ffff00","#ff6900","#ff3333","#ff0000"]' data-unit="%" data-fix="0"></div>
</div>
<div class="hdm-flexbox-item-10">
<div class="" data-type="symbol" data-icon="wi wi-sandstorm" data-off-color="blue"></div>
<div class="bigger" data-type="label" data-device="var_device" data-get="var_day_3_FF" data-limits="[0,5,10,30,50,100]" data-colors='["#00ff00","#bfff00","#ffff00","#ff6900","#ff3333","#ff0000"]' data-part="1" data-fix="0" data-unit="km/h"></div>
</div>
<div class="hdm-flexbox-item-10">
<div class="mini" data-type="wind_direction" data-device="var_device" data-direction="var_day_3_DD" data-speed="var_day_3_FF" data-calm="~" data-tickstep="45" data-angleoffset="0" data-hdcolor="#6699FF"></div>
</div>
<div class="hdm-flexbox-item-10">
<div class="" data-type="symbol" data-icon="fa-sun-o" data-off-color="blue"></div>
<div class="bigger" data-type="label" data-device="var_device" data-get="var_day_SunDh" data-limits="[0,2,4,6,8,10]" data-colors='["#ff0000","#ff3333","#ff6900","#ffff00","#bfff00","#00ff00"]' data-unit="h" data-fix="0"></div>
</div>
<div class="hdm-flexbox-item-10">
<div class="readonly" data-type="weather" data-device="var_device" data-get="var_day_0_wwd" data-imageset="kleinklima"></div>
</div>
<div class="hdm-flexbox-item-10">
<div class="" data-type="symbol" data-icon="oa-temp_temperature_min" data-off-color="blue"></div>
<div class="bigger" data-type="label" data-device="var_device" data-get="var_day_Tn" data-limits="[-50,-10,0,10,20,25,30]" data-colors='["#0000ff","#9999ff","#ffbdff","#FAA460","#ff6900","#ff3333","#ff0000"]' data-unit="&deg;C" data-fix="0"></div>
</div>
<div class="hdm-flexbox-item-10">
<div class="" data-type="symbol" data-icon="oa-weather_rain_light" data-off-color="blue"></div>
<div class="bigger" data-type="label" data-device="var_device" data-get="var_day_6_RRhc" data-limits="[0,1,5,10,20,30]" data-colors='["#00ff00","#bfff00","#ffff00","#ff6900","#ff3333","#ff0000"]' data-unit="mm" data-fix="0"></div>
</div>
<div class="hdm-flexbox-item-10">
<div class="" data-type="symbol" data-icon="fa-umbrella" data-off-color="blue"></div>
<div class="bigger" data-type="label" data-device="var_device" data-get="var_day_2_Rh00" data-limits="[0,1,10,25,50,75]" data-colors='["#00ff00","#bfff00","#ffff00","#ff6900","#ff3333","#ff0000"]' data-unit="%" data-fix="0"></div>
</div>
<div class="hdm-flexbox-item-10">
<div class="" data-type="symbol" data-icon="wi wi-sandstorm" data-off-color="blue"></div>
<div class="bigger" data-type="label" data-device="var_device" data-get="var_day_7_FF" data-limits="[0,5,10,30,50,100]" data-colors='["#00ff00","#bfff00","#ffff00","#ff6900","#ff3333","#ff0000"]' data-part="1" data-fix="0" data-unit="km/h"></div>
</div>
<div class="hdm-flexbox-item-10">
<div class="mini" data-type="wind_direction" data-device="var_device" data-direction="var_day_7_DD" data-speed="var_day_7_FF" data-calm="~" data-tickstep="45" data-angleoffset="0" data-hdcolor="#6699FF"></div>
</div>
</div>
</body>
</html>


Ich hoffe, das hilft weiter.

Leider ist noch keine Icon-Unterscheidung zwischen Tag und Nacht möglich. Bin kein Entwickler, stehe aber gern als Betatester zur Verfügung  ;).

Viele Grüße
Andreas