Doif Abfrage nach Aktor-Event-> funktioniert, verursacht aber Perl-Warnings

Begonnen von Klinki, 05 Februar 2017, 11:45:06

Vorheriges Thema - Nächstes Thema

Klinki

Hi,

Hier die Definition
(["FHT:actuator","0%":d] > 20) (set EnO_Pumpe_SZ_Bad on) DOELSE (set EnO_Pumpe_SZ_Bad off)
"0%" soll der Default-Wert sein. "0" oder 0 habe ich schon probiert.
Das DoIf macht was es soll, es werden aber Perl-Warnungen im Log erzeugt:

2017.02.05 11:39:51.365 1: PERL WARNING: Argument "86%" isn't numeric in numeric gt (>) at (eval 136461) line 1.

gruß
klinki

Ellert

aus der Hilfe:
["regex for trigger":"<regex filter>":<output>,<default value>]

Siehst Du, dass der default value als letztes angegeben wird?

Klinki

hm, bin ich zu doof für

["FHT:actuator":d,"0%"]

funktioniert jedenfalls nicht

CoolTux

Also erstmal nimm mal bei deinem Default die Prozent weg. Denn die willst du ja nicht. Du willst ja nur die Zahl haben. Dann scheint dein d nicht zu klappen denn er nimmt beim einlesen die Prozent noch aus dem Resding mit.
Informiere dich Mal wie das mit dem d genau geht.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Klinki

schon probiert. Auch ohne Gänsefüßchen. Hätte ich mal posten können...
Zitat von: CoolTux am 05 Februar 2017, 16:56:41
Also erstmal nimm mal bei deinem Default die Prozent weg. Denn die willst du ja nicht. Du willst ja nur die Zahl haben. Dann scheint dein d nicht zu klappen denn

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Ellert

Zitat von: Klinki am 05 Februar 2017, 16:52:20
hm, bin ich zu doof für

["FHT:actuator":d,"0%"]

funktioniert jedenfalls nicht

Das sollte funktionieren, denn hier steht:
ZitatRegex-Filter- und Output-Parameter sind optional. Der Default-Wert ist verpflichtend.

Die Angaben zum Filter und Output funktionieren, wie die beim Reading-Filter. Siehe: Filtern nach Ausdrücken mit Ausgabeformatierung


Wenn kein Filter, wie obigen Beispiel, angegeben wird, so wird intern folgende Regex vorbelegt: "[^\:]*: (.*)" Damit wird der Wert hinter der Readingangabe genommen. Durch eigene Regex-Filter-Angaben kann man beliebige Teile des Events herausfiltern, ggf. über Output formatieren und in der Bedingung entsprechend auswerten, ohne auf Readings zurückgreifen zu müssen.

Über den Zugriff auf Readings sollte es auf jeden Fall funktionieren [FHT:actuator:d,"0%"]

Klinki

wenn ich das Device direkt verwende, also
([FHT_SZ:actuator:d,0] > 20)
funktioniert´s auch. Aber mit der o.a. Regex, kommt dieser Fehler
di_Pumpe3 DOIF: wrong filter Regex: d

wie gesagt: das zuerst gennante (["FHT:actuator","0%":d] > 20) (set EnO_Pumpe_SZ_Bad on) DOELSE (set EnO_Pumpe_SZ_Bad off) funktioniert. Liefert halt nur die Perl-Warning.

Vielleicht ist das Problem, dass das Reading, welches ja mit einem %-Zeichen geliefert wird, mit dem Default-Wert verglichen wird. Numerisch und String lassen nicht vergleichen.

Ellert

Dann funktioniert :d als Filter in der Regex wohl nicht und bei Deinem funktionierendem Versuch wird nicht gefiltert, da die % noch im Wert drin sind.

Dann solltest Du nicht :d nehmen, sondern eine Filter-Regex also :"\d*" oder so.