FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Master_Nick am 07 Januar 2017, 10:37:33

Titel: stateFilte per RegEx (gcm_send) andFHEM
Beitrag von: Master_Nick am 07 Januar 2017, 10:37:33
Ich besitze bisher 3 Oregon Scientific Sensoren für Luftfeuchtigkeit und Temperatur. Deren Einzelwerte (temperature, humidity) konnte ich einfachst freischalten im stateFilter. Nun nutzt andFHEM aber bei der Anzeige dieser Sensoren als Widget auf dem Handy den state mit allen drei Werten z. B."T: 20.4 H: 44 BAT: ok", "T: 20 H: 44 BAT: low"  (mehr Ausprägungen gibt es hier nicht). Ich habe dieses wie folgt versucht freizuschalten über RegEx: 

^T:\ ([0-9]+[\.]{0,1}[0-9]{0,1}?)\ H:\ ([0-9]){2}\ BAT:\ [a-z]{1,3}\Z

Aus welchen Gründen auch immer wird es nicht so sauber genutzt. Die Folge ist, dass wenn ich auf den Sensor als Widget ansehe und drauf Tippe der Wert da schon abweicht von den readings temperature und humidity. Aber ich erhalte auch keine Meldung mehr im Log, dass das Reading ignoriert wird wegen des stateFilters.

Hat da jemand eine Idee zu oder habe ich noch etwas falsch gemacht? Habe mir das Ganze auch hier schon angesehen und es wirkt korrekt: https://regex101.com/r/SexJVv/1

Ich danke euch ;-)
Titel: Antw:stateFilte per RegEx (gcm_send) andFHEM
Beitrag von: RadioJames am 07 Januar 2017, 11:12:59
Ich würde folgenden RegEx nehmen. Habe ihn auf der von dir verlinkten Seite getestet und er liefert die drei Werte korrekt zurück ($1=Temperatur, $2=Luftfeuchtigkeit, $3=Batteriestatus.):
^T: (\d+\.\d*) H: (\d+) BAT:(.+)

Deinen RegEx habe ich dort auch ausprobiert und sehe, dass er eben nicht passt.

^T:\ ([0-9]+[\.]{0,1}[0-9]{0,1}?)\ H:\ ([0-9]){2}\ BAT:\ [a-z]{1,3}\Z

String: T: 20.3 H: 44 BAT: ok
$1=`20.3` -> OK
$2=`4`    -> falsch
$3 -> fehlt im RegEx

Grüße James


Titel: Antw:stateFilte per RegEx (gcm_send) andFHEM
Beitrag von: Master_Nick am 07 Januar 2017, 23:27:30
Stimmt meiner war nicht richtig ;-)

Ich fummel an meinem nochmal - auch wenn deiner richtig ist. :-)

Nur lernen macht den Meister.

Vielen Dank!