HTTPMOD einrichten für openweathermap.org

Begonnen von Ralf Kruppa, 12 August 2016, 08:38:47

Vorheriges Thema - Nächstes Thema

Ralf Kruppa

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

devil77

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.

Ralf Kruppa

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

frank

mit attr ...RegOpt=g sollten automatisch 2 readings erzeugt werden.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Ralf Kruppa

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

frank

ä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
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Ralf Kruppa

Hallo FHEM kennt RegOpt nicht.

wie kann ich das Modul aktualisieren oder installieren wenn es fehlt ?

Gruß

frank

dan starte mal ein fhem update. also "update" in die eingabezeile tippen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Ralf Kruppa


Ralf Kruppa

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

frank

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.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Ralf Kruppa

shutdown restart
das wars jetzt geht es.

Super...

Werde jetzt noch alles für openweathermap fertig machen und dann hier reinstellen.

Gruß Ralf