FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Schiltkamp am 12 Juni 2016, 21:05:40

Titel: <gelöst> ReadingsVal mit Regex - KS300 Regen Tageswert raus filtern
Beitrag von: Schiltkamp am 12 Juni 2016, 21:05:40
Hallo zusammen,

ich denke ich habe mein möglichstes getan, aber nach fast 10 Stunden Forum und unzählige try and error wände ich mich jetzt an euch.

folgendes Reading von KS300:

avg_day T: 15.5 H: 87 W: 1.1 R: 10.2

und ich möchte gerne die 10 raus filtern.

Ich habe mich auch intensiv mit regulären Ausdrücken beschäftigt, aber bei folgendem ist mein Latein stehen geblieben:

(R: )[0-9]+

damit bekomme ich R: 13

Leider konnte ich mit dem Regular Expression Tester keine Lookbehinds testen.

Ziel des ganzen ist es, wenn der Tageswert vom Regen über 5 liegt, die Rasenspränger nicht arbeiten zu lassen.

Grüße aus der Oberpfalz

Christian
Titel: Antw:ReadingsVal mit Regex - KS300 Regen Tageswert raus filtern
Beitrag von: chris1284 am 12 Juni 2016, 21:10:07
nutz einfach das rain modul und lies den wert direkt aus dem reading (wobei er meine ich auch so das reading rain hat)
Titel: Antw:ReadingsVal mit Regex - KS300 Regen Tageswert raus filtern
Beitrag von: Schiltkamp am 12 Juni 2016, 21:18:00
rain habe ich, aber das ist leider ein Wert der über den Monat hoch zählt, dann müsste ich auch wieder rechnen
Titel: Antw:ReadingsVal mit Regex - KS300 Regen Tageswert raus filtern
Beitrag von: justme1968 am 12 Juni 2016, 21:23:31
ich weiss nicht was du genau gemacht hast, aber das das ergebniss wirklich  R: 13 ist kommt mir sehr unwahrscheinlich vor.

du hast eine capture group in deiner regex. und die extrahiert nur R: und das leerzecihen.

das einfachste ist wenn du das ganze rückwärts angehst und die die zahl am ende des wertes extrahierst: if( ReadinsgVal('device', 'avg_day'. '' ) =~ m/([0-9.]+)$/ ) {
  my $val = $1;
}
 

oder wenn du am R: aufhängen willst: /R:\s([0-9.]+)/

gruss
  andre
Titel: Antw:ReadingsVal mit Regex - KS300 Regen Tageswert raus filtern
Beitrag von: Schiltkamp am 12 Juni 2016, 21:59:39
Danke