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
aus der Hilfe:
["regex for trigger":"<regex filter>":<output>,<default value>]
Siehst Du, dass der default value als letztes angegeben wird?
hm, bin ich zu doof für
["FHT:actuator":d,"0%"]
funktioniert jedenfalls nicht
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.
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
(["FHT:actuator:d",0]
Eventuell so
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%"]
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.
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.