Hallo zusammen
Ich merke immer wieder das ich blutiger Anfänger bin, wenn es darum geht ein Notify, oder ein DOIF zu erstellen. Die größten Probleme bereitet es mir, die Bedingungen richtig zu definieren, was Leerzeichen, Klammern und so betrifft.
Wenn ich z.b.
define Testdoif DOIF ([Drehgriff_Terassentuer:state] tilted) (set Vitrine on) DOELSE (set Vitrine off)
erstelle,
Erhalte ich beim betätigen des Drehgriffs folgende Fehlermeldung:
perl error in condition: ReadingValDoIf($hash,'Drehgriff_Terassentuer','state','','',AttrVal($hash->{NAME},'notexist',undef)) tilted: syntax error at (eval 1387) line 1, near ") tilted "
Wo liegt denn da der Fehler? Den Drehgriff_Terassentuer gibt es doch!
gruß
edition
Die fehlt ein Vergleichsoperator (bspw. eq). Bitte die Doku zu DOIF lesen. Diese ist sehr umfangreich (wenn sie auch zu 90% aus Beispielen besteht ;))
Also, wenn ich es so definiere
define Testdoif DOIF ([Drehgriff_Terassentuer:state] eq "tilted") (set Vitrine on) DOELSE (set Vitrine off)
funktioniert es. Verstanden habe ich es aber nicht.
Du hattest doch sicherlich in der Schule Mathe. Und da hat man Zahlen vergleichen. So ähnlich ist das hier auch, nur das du nicht eine Zahl gegen eine andere vergleichst sondern vergleichst ob der Fensterkontakt den Status open closed oder tilted hat.
eq = Equivalent also GLEICHHEIT.
Dann steht also das eq für gleich. Meine ursprüngliche Definition fragte also übersetzt: Drehgriff Terassentür Status gekippt. Dabei muss es heißen: Drehgriff Terassentür Status gleich gekippt. Kann man das so sagen?
eq steht für equal (oder gleich, ja). Und ja, das heißt es. Es gibt auch noch andere Operatoren wie ne (not equal). Bitte die Doku lesen, dann verstehst du es besser.