Hallo, ich möchte gerne die Wettervorhersagen von openweathermap.org in FHEM einbinden.
Es gibt dort eine entsprechende API um dieses zu machen und man bekommt dann eine entsprechende XML Datei.
Ich habe nun schon so einiges mit den Readings und dem Regex probiert aber ich bekomme es nicht hin.
die XML Datei sieht folgendermacßen aus (nur ein Auszug):
<weatherdata>
<location>
<name>Langenhagen</name>
<type/>
<country>DE</country>
<timezone/>
<location altitude="0" latitude="52.450001" longitude="9.75" geobase="geonames" geobaseid="0"/></location>
<credit/>
<meta>
<lastupdate/>
<calctime>0.0696</calctime>
<nextupdate/>
</meta>
<sun rise="2016-08-11T03:58:29" set="2016-08-11T18:52:28"/>
<forecast>
<time from="2016-08-11T12:00:00" to="2016-08-11T15:00:00">
<symbol number="803" name="broken clouds" var="04d"/>
<precipitation/>
<windDirection deg="240.503" code="WSW" name="West-southwest"/>
<windSpeed mps="6.57" name="Moderate breeze"/>
<temperature unit="celsius" value="17.49" min="16.47" max="17.49"/>
<pressure unit="hPa" value="1028.35"/>
<humidity value="73" unit="%"/>
<clouds value="broken clouds" all="64" unit="%"/>
</time>
<time from="2016-08-11T15:00:00" to="2016-08-11T18:00:00">
<symbol number="500" name="light rain" var="10d"/>
<precipitation unit="3h" value="0.84" type="rain"/>
<windDirection deg="221.501" code="SW" name="Southwest"/>
<windSpeed mps="7.01" name="Moderate breeze"/>
<temperature unit="celsius" value="14.13" min="13.37" max="14.13"/>
<pressure unit="hPa" value="1027.55"/><humidity value="88" unit="%"/>
<clouds value="overcast clouds" all="92" unit="%"/>
</time>
Folgendes habe ich in FHEM eingetragen:
define Wetter_Langenhagen HTTPMOD http://api.openweathermap.org/data/2.5/forecast/city?q=Langenhagen,de&mode=xml&APPID=a45c5f186ba821cadac660ba9cf6eb9a 300
attr Wetter_Langenhagen userattr readingsName_temperatur
attr Wetter_Langenhagen readingsName_temperatur temperatur
attr Wetter_Langenhagen readingsRegex_temperatur temp":([\d\.]+)
attr Wetter_Langenhagen room Klimawerte
Es ligt sicherlich an den Regex eintrag. Aber wie müste es aussehen um die beiden Temperaturen auszulesen ?
Temperatur1 = 17.49
Temperatur2 = 14.13
Vielen Dank für die Hilfe.
Gruß Ralf
Es liegt ganz sicher am regex denn Du suchst die xml nach einem string ab der überhaupt nicht vorkommt.
temp":
Versuche mal als regex folgendes
celsius" value="([\d\.]+)
Für solchen Sachen verwende ich immer gerne http://rubular.com/
Hier kann man in ruhe Testen und sieht sofort ein Ergebnis.
Hallo,
danke für die schnelle Antwort es klappt und das Tool ist super zum Teste.
In meinem Beispiel gibt es ja nun zwei Treffer.
Kann man nun auch die entsprehend in zwei separate Readings schreibe?
Beispiel:
Temperatur1
Temperatur2
So wird nur der Erste Treffer angezeigt.
Gruß Ralf
mit attr ...RegOpt=g sollten automatisch 2 readings erzeugt werden.
Hallo,
wie muß es denn genau heißen ?
Folgendes habe ich alles Probiert, aber ohne Erfolg.
attr Wetter_Langenhagen RegOpt_temperatur=g
attr Wetter_Langenhagen RegOpt_temperatur=g
attr Wetter_Langenhagen RedingsRegOpt_temperatur=g
attr Wetter_Langenhagen RedingsRegOpt_temperatur g
Gruß Ralf
ändere mal die namen deiner attribute gemäss der "neuen" namensgebung (siehe commandref):
attr Wetter_Langenhagen reading01Name temperatur
attr Wetter_Langenhagen reading01Regex temp":([\d\.]+)
attr Wetter_Langenhagen reading01RegOpt g
Hallo FHEM kennt RegOpt nicht.
wie kann ich das Modul aktualisieren oder installieren wenn es fehlt ?
Gruß
dan starte mal ein fhem update. also "update" in die eingabezeile tippen.
Versuche es mal mit
update 98_HTTPMOD.pm
Das hat nichts gebracht und alles Updaten ist mir zu riskant nicht das dann was anderes nicht mehr geht.
Muß man für die RegOpt noch was anderes aktualiesieren bzw. erstmal installieren ?
Gruß Ralf
je nach dem, wie alt der rest ist, kann es probleme geben.
warum nicht alles erneuern? zu not nutze attr global excludeFromUpdate für gewisse module.
ausserdem nach dem update am besten shutdown restart.
shutdown restart
das wars jetzt geht es.
Super...
Werde jetzt noch alles für openweathermap fertig machen und dann hier reinstellen.
Gruß Ralf