Hauptmenü

(Gelöst) Regex / HTTPMOD

Begonnen von Marcel_R, 06 Oktober 2015, 19:31:48

Vorheriges Thema - Nächstes Thema

Marcel_R

Grüezi Ihr Alle!

Der Beitrag http://forum.fhem.de/index.php/topic,39600.15.html hat mich dazu animiert, einen lang gehegten Wunsch noch einmal in Angriff zu nehmen. Leider ist der angegebene Link http://www.wetter.com/wetter_aktuell/wetterstationen/ nur für Deutschland gültig. :(

Nun versuche ich verzweifelt Wetterdaten einer nahe liegenden Station zu verarbeiten.
define wetter_regen_Lsne HTTPMOD http://www.weatherlink.com/user/meteolausanne 30
attr wetter_regen_Lsne userattr reading01Name reading01Regex
attr wetter_regen_Lsne group Wetter
attr wetter_regen_Lsne reading01Name Regen_pro_Stunde
attr wetter_regen_Lsne reading01Regex (Rain\<\/td\> \<td class="glamor_datatemp" nowrap\>)([\d\.]+)
attr wetter_regen_Lsne room Wetter
attr wetter_regen_Lsne showMatched 1

define FileLog_wetter_regen_Lsne FileLog ./log/Wetter1-%Y.log wetter_regen_Lsne
attr FileLog_wetter_regen_Lsne room File Logs


Ist der Regex Ausdruck in reading01Regex korrekt? Ich erhalte keinen Wert zurück (bei MATCHED_READINGS wird lediglich die Uhrzeit angezeigt).

Ich habe nach der Methode Trial and Error sehr viele Varianten versucht - but no luck.

Danke für einen Schubs in die richtige Richtung!!

Marcel


FHEM / Fritz!Box 7490 / CULv3 / Raspi / COC / MAX! / HomeMatic /

Marcel_R

#1
Der Textabschnitt, gegen welchen geprüft werden sollte ist:
Zitat<tr>
      <td class="glamor_variable" style="padding-left: 40px;">Rain</td>
      <td class="glamor_datatemp" nowrap>9.0mm</td>
      <td class="glamor_detailtemp" nowrap>Seasonal Total&nbsp;791.6mm</td>
   </tr>

Wie ich in der Zwischenzeit herausgefunden habe, ist der reading01Regex Ausdruck im ersten Post fehlerhaft.

Folgende Versionen habe ich mit https://regex101.com/#pcregeprüft. Dort  ergeben sie einen Match - in FHEM jedoch nicht!
# attr wetter_regen_Lsne reading01Regex Rain\<\/td\> \<td class="glamor_datatemp" nowrap\>([\d\.]+)
# attr wetter_regen_Lsne reading01Regex Rain<\/td> <td class="glamor_datatemp" nowrap>([\d\.]+)
# attr wetter_regen_Lsne reading01Regex Rain.{41}([\d\.]+)
# attr wetter_regen_Lsne reading01Regex Rain.........................................([\d\.]+)
attr wetter_regen_Lsne reading01Regex (?s)Rain.........................................([\d\.]+)

(Um zu zeigen, dass ich selber mein Möglichstes gebe - leider reicht dies nicht....)
Marcel
P.S. Habe natürlich die Zeilen erst auskommentiert, nachdem sie nicht das gewünschte Ergebnis gezeigt haben.
FHEM / Fritz!Box 7490 / CULv3 / Raspi / COC / MAX! / HomeMatic /

Marcel_R

Da der Ausdruck über zwei Zeilen mit Tabulator geht, braucht es für diese Steuerzeichen auch Platzhalter.

Somit gibt es einen Match mit folgendem Ausdruck:
attr wetter_regen_Lsne reading01Regex (?s)Rain.{44}([\d\.]+)


Obwohl Platzhalter (für ZV,WR,Tab) vorhanden sind, ist "(?s)" zwingend nötig.

Marcel
P.S. Danke für das Forum --> das "ansprechen" von Anderen brachte mich aus dem Teufelskreis der Lösungssuche. Somit konnte ich an andere Lösungsansätze denken.
FHEM / Fritz!Box 7490 / CULv3 / Raspi / COC / MAX! / HomeMatic /