Seite 1 von 1

Wetterauswertung mit wunderground

Verfasst: 26. Jul 2016 20:13
von seppy
Hi Zusammen,

nachdem Cyrelian nach meiner Umsetzung für Regenvorhersage gefragt hat, fasse ich hier kurz und grob zusammen. Eine ausführliche Variante schreibe ich die Tage.

Die URL:

Code: Alles auswählen

url=http://api.wunderground.com/api/XXXXXXXXXX/forecast/lang:DL/q/pws:IWACHTBE14.xml
Items:

Code: Alles auswählen

/**
 * Gemessene Regenmenge gestern
 */
/**
 * Vorhersage Regenmenge heute
 */
String WeatherRainForecast0 "Regenmenge/Wahrscheinlichkeit [%s]" <rain> (gWetter)
String WeatherRainForecast0_Date (gWetter) {http="<[cacheWeatherForecastWunderground:300000:XSLT(wunderground_weather_rainforecast0_date.xsl)]" }
Number WeatherRainForecast0_MM (gWetter) {http="<[cacheWeatherForecastWunderground:300000:XSLT(wunderground_weather_rainforecast0_mm.xsl)]" }
Number WeatherRainForecast0_POP (gWetter) {http="<[cacheWeatherForecastWunderground:300000:XSLT(wunderground_weather_rainforecast0_pop.xsl)]" }
/**
 * Vorhersage Regenmenge morgen
 */
String WeatherRainForecast1 "Regenmenge/Wahrscheinlichkeit [%s]" <rain> (gWetter)
String WeatherRainForecast1_Date (gWetter) {http="<[cacheWeatherForecastWunderground:300000:XSLT(wunderground_weather_rainforecast1_date.xsl)]" }
Number WeatherRainForecast1_MM (gWetter) {http="<[cacheWeatherForecastWunderground:300000:XSLT(wunderground_weather_rainforecast1_mm.xsl)]" }
Number WeatherRainForecast1_POP (gWetter) {http="<[cacheWeatherForecastWunderground:300000:XSLT(wunderground_weather_rainforecast1_pop.xsl)]" }
/**
 * Vorhersage Regenmenge übermorgen
 */
String WeatherRainForecast2 "Regenmenge/Wahrscheinlichkeit [%s]" <rain> (gWetter)
String WeatherRainForecast2_Date (gWetter) {http="<[cacheWeatherForecastWunderground:300000:XSLT(wunderground_weather_rainforecast2_date.xsl)]" }
Number WeatherRainForecast2_MM (gWetter) {http="<[cacheWeatherForecastWunderground:300000:XSLT(wunderground_weather_rainforecast2_mm.xsl)]" }
Number WeatherRainForecast2_POP (gWetter) {http="<[cacheWeatherForecastWunderground:300000:XSLT(wunderground_weather_rainforecast2_pop.xsl)]" }
/**
 * Vorhersage Regenmenge heute +3
 */
String WeatherRainForecast3 "Regenmenge/Wahrscheinlichkeit [%s]" <rain> (gWetter)
String WeatherRainForecast3_Date (gWetter) {http="<[cacheWeatherForecastWunderground:300000:XSLT(wunderground_weather_rainforecast3_date.xsl)]" }
Number WeatherRainForecast3_MM (gWetter) {http="<[cacheWeatherForecastWunderground:300000:XSLT(wunderground_weather_rainforecast3_mm.xsl)]" }
Number WeatherRainForecast3_POP (gWetter) {http="<[cacheWeatherForecastWunderground:300000:XSLT(wunderground_weather_rainforecast3_pop.xsl)]" }
Bespiel für einen xslt Stylesheet:

Code: Alles auswählen

<?xml version="1.0"?>
<xsl:stylesheet 
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
	version="1.0">

	<xsl:output indent="yes" method="xml" encoding="UTF-8" omit-xml-declaration="yes" />
	<xsl:template match="/">
		<xsl:for-each select="response/forecast/simpleforecast/forecastdays/forecastday[period=1]">
			<xsl:value-of select="qpf_allday/mm"/>
		</xsl:for-each>
	</xsl:template>
</xsl:stylesheet>
Meine rules:

Code: Alles auswählen

rule "WeatherRainForecast1_Changed"
when
	Item WeatherRainForecast1_Date changed or
	Item WeatherRainForecast1_MM changed or 
	Item WeatherRainForecast1_POP changed
then
	if (WeatherRainForecast1_MM.changedSince(now.minusMinutes(5))){
		WeatherRainForecast1_MM.postUpdate(WeatherRainForecast1_MM.state as DecimalType)
	}
	WeatherRainForecast1.postUpdate(WeatherRainForecast1_Date.state + ": " + WeatherRainForecast1_MM.state + "mm / " + WeatherRainForecast1_POP.state + "%")
	logDebug("HomeBox.WeatherRainForecast_Changed", "Updated WeatherRainForecast1: " + WeatherRainForecast1.state)
	
	postUpdate(WeatherLastUpdate, new DateTimeType())
	logDebug("HomeBox.WeatherRainForecast_Changed", "Updated WeatherLastUpdate: " + WeatherLastUpdate.state)
end
Ich hoffe Ihr kommt damit weiter ... sonst einfach fragen.

Grüße,

Seppy

Wetterauswertung mit wunderground

Verfasst: 27. Jul 2016 09:56
von Cyrelian
Hi Seppy,

super, vielen Dank für die schnelle Hilfe. Ich habe meinen Fehler gefunden. Ich habe nur auf "CONDITIONS" abgefragt und nicht auf "FORECAST".
Für alle die die noch andere Dinge abfragen wollen, hier mal der Link zur API Doku:
https://www.wunderground.com/weather/api/d/docs.

Ich habe jetzt meine openhab.conf wie folgt angepasst:

Code: Alles auswählen

############################### HTTP Binding ##########################################
#
# timeout in milliseconds for the http requests (optional, defaults to 5000)
#http:timeout=

# the interval in milliseconds when to find new refresh candidates
# (optional, defaults to 1000)
#http:granularity=

# configuration of the first cache item
http:WeatherConditionsWunderground.url=http://api.wunderground.com/api/XXXXXXXXX/conditions/lang:DL/q/pws:IBORNHEI48.xml
http:WeatherConditionsWunderground.updateInterval=1800000

# configuration of the second cache item  
http:WeatherForecastWunderground.url=http://api.wunderground.com/api/XXXXXXXXX/forecast/lang:DL/q/pws:IBORNHEI48.xml
http:WeatherForecastWunderground.updateInterval=1800000
Jetzt kann ich beides abfragen :)

CYA
Cyrelian

Re: Wetterauswertung mit wunderground

Verfasst: 27. Jul 2016 12:53
von Cyrelian
Hi Seppy,

warum macht du in der XSL Datei ein for-each?:

Code: Alles auswählen

 <xsl:for-each select="response/forecast/simpleforecast/forecastdays/forecastday[period=1]">
         <xsl:value-of select="qpf_allday/mm"/>
      </xsl:for-each>
und nicht :

Code: Alles auswählen

<xsl:value-of select="response/forecast/simpleforecast/forecastdays/forecastday[period=1]/qpf_allday/mm"
Wenn ich das richtig verstehe muss man ja eh für jeden "period" eine eigene XSL datei anlegen oder?

CU
Cyrelian

Re: Wetterauswertung mit wunderground

Verfasst: 24. Sep 2018 16:07
von Ordnas
Hallo Zusammen

dieser Beitrag ist zwar schon etwas älter und ich arbeite mit OH2. Leider ist es das einzige was ich für mein vorhaben gefunden habe und in meine Richtung führt.

Ich habe in meine OH2 die Gardena Bewässerung integriert. Nun mögchte ich aber, dass die Bewässerung nicht ausgeführt wird, wenn sowieso Regen vorhergesagt wird. Falls der Regen doch nicht kommt, soll es einfach einen Tag später wieder bewässern.

Eure Beiträge sehen sehr interessant aus, damit ich dies einbauen könnte. Mir fehlen aber etwas ausfürhlichere Angaben betreffend Binding, bzw. Things.

Oder habt ihr evtl. eine überarbeitete Version?

Re: Wetterauswertung mit wunderground

Verfasst: 24. Sep 2018 23:31
von udo1toni
Das größte Problem dabei ist, eine Datenquelle zu finden. Es gibt verschiedene Wetterbindings, aus denen Du auswählen kannst (und natürlich musst Du schauen, welcher davon in Deiner Region gute Daten liefert), leider bietet Weatherunderground keine kostenlosen API-Keys mehr an, falls Du also keinen funktionierenden alten Key hast, kannst Du dieses Binding vergessen. Bleibt das Yahoo weather Binding oder alternativ das OH1 Weather Binding (welches noch andere Wetterdienste anzapft). Es gibt wohl auch erste Bestrebungen, den DWD einzubinden, allerdings habe ich keine Ahnung, wie weit das schon gediehen ist.

Re: Wetterauswertung mit wunderground

Verfasst: 25. Sep 2018 09:27
von sihui
Ordnas hat geschrieben: 24. Sep 2018 16:07 betreffend Binding
Vielleicht wäre als WU Alternative das neue OWM Binding ja interessant ...

https://github.com/eclipse/smarthome/pu ... t-30297201

Re: Wetterauswertung mit wunderground

Verfasst: 25. Sep 2018 17:52
von udo1toni
Leider ist das noch nicht gemerged, oder?

Re: Wetterauswertung mit wunderground

Verfasst: 26. Sep 2018 08:34
von sihui
udo1toni hat geschrieben: 25. Sep 2018 17:52 Leider ist das noch nicht gemerged, oder?
Nein, aber über Snapshot und Marketplace steht es bereits zur Verfügung.

https://marketplace.eclipse.org/content ... ap-binding