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é
Versuchs mal so:
Himmelstemperatur : ([\d\.-]+)\s
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é
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
???
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
Danke, stand wohl noch ein ältere Version im Clipboard-Buffer ;)
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é
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é