FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Stargazer am 30 Januar 2017, 08:15:54

Titel: HTTPMOD Regex liest den Wert nicht aus - regex101.com sagt aber okay
Beitrag von: Stargazer am 30 Januar 2017, 08:15:54
Hallo zusammen,

mir ist das schon letztens bei meiner alten Wetterstation aufgefallen, das nach einem FHEM Update, gewisse Regex nicht mehr funktionieren. Nun habe ich einen ähnlichen Fall bei meinem Auslesen der Temperaturwerte meines Arduinos. Ich bekomme in FHEM im Buffer folgende Werte:

Type: text/html Umgebungstemperatur : 2.81 °C<br /> Himmelstemperatur : 2.01 °C<br />
code
200

Diese lese ich mit folgenden Regex aus :

Himmelstemperatur :[^0-9]+([0-9\.]+)

...Und...

Umgebungstemperatur :[^0-9]+([0-9\.]+)

Leider hatte ich vergessen, dass er so nicht das Minuszeichen bei Frost mit ausliest. Sondern nur den
reinen Zahlenwert.

Dann habe ich es mit der Endung : ([\d\.-]+)

Das funktioniert auch in regex101. Aber nicht in FHEM.

Hat da jemand eine Idee ?


Viele Grüße und besten Dank

André
Titel: Antw:HTTPMOD Regex liest den Wert nicht aus - regex101.com sagt aber okay
Beitrag von: dev0 am 30 Januar 2017, 08:39:16
Versuchs mal so:


Himmelstemperatur : ([\d\.-]+)\s
Titel: Antw:HTTPMOD Regex liest den Wert nicht aus - regex101.com sagt aber okay
Beitrag von: Stargazer am 30 Januar 2017, 10:25:11
Hi dev0,

Habe das gerade ausprobiert. Damit aktualisiert er das betroffene Reading nicht mehr. Das gleiche hatte ich bei dem vorherigen Versuch auch. Füge ich wieder "[^0-9]+([0-9\.]+)" ein, so läuft das.

Viele Grüße

André
Titel: Antw:HTTPMOD Regex liest den Wert nicht aus - regex101.com sagt aber okay
Beitrag von: dev0 am 30 Januar 2017, 11:29:45
Ich kenne das HTTPMOD Modul nicht, aber die gepostete regexp funktioniert bei mir:

{
  my $buffer = "Type: text/html Umgebungstemperatur : 2.81 °C<br /> Himmelstemperatur : 2.01 °C<br />";
  $bufer =~ m/Himmelstemperatur : ([\d\.-]+)\s/;
  return "Wert: ".$1;
}

Wert: 2.01

Titel: Antw:HTTPMOD Regex liest den Wert nicht aus - regex101.com sagt aber okay
Beitrag von: betateilchen am 30 Januar 2017, 11:37:59
???

Zitat
{
  my $buffer = "Type: text/html Umgebungstemperatur : 2.81 °C<br /> Himmelstemperatur : 2.01 °C<br />";
  $bufer =~ m/Himmelstemperatur : ([\d\.-]+)\s/;
  return "Wert: ".$1;
}

Wert: 2.01
Titel: Antw:HTTPMOD Regex liest den Wert nicht aus - regex101.com sagt aber okay
Beitrag von: dev0 am 30 Januar 2017, 12:23:03
Danke, stand wohl noch ein ältere Version im Clipboard-Buffer ;)
Titel: Antw:HTTPMOD Regex liest den Wert nicht aus - regex101.com sagt aber okay
Beitrag von: Stargazer am 30 Januar 2017, 18:17:47
Hallo Leute,

habe das jetzt nochmal Zuhause am PC versucht.

Himmelstemperatur :([\d\.-]+)\s

Umgebungstemperatur :([\d\.-]+)\s

...bringt bei mir nichts. Warum nur nicht ?
Vom Regex her wäre es genau das, was ich bräuchte.
Aber das Problem hatte ich bei meiner verschiedenen alten Wetterstation auch.
Da arbeiteten die Regex's plötzlich auch nicht mehr.

Könnte ich noch etwas vor das "[^0-9]+([0-9\.]+)" hängen, damit ich die Stelle vor den Zahlen noch
mit nehmen kann ?
Habe da schon einiges Versucht, aber noch nicht das richtige gefunden.

VG

André

Titel: Antw:HTTPMOD Regex liest den Wert nicht aus - regex101.com sagt aber okay
Beitrag von: Stargazer am 31 Januar 2017, 20:26:37
Hallo zusammen,

nochmals vielen Dank für eure Hilfe.

Ich habe es nun mal mit : "Himmelstemperatur :([^0-9]+....)" versucht.
Obwohl es recht rudimentär wirkt, funktioniert es einwandfrei.
Falls jemand vielleicht später nach einer Lösung sucht.


Viele Grüße und besten Dank

André