Nachhilfe bei Notify, DOIF & Co

Begonnen von edition, 09 Juli 2016, 11:29:39

Vorheriges Thema - Nächstes Thema

edition

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

marvin78

Die fehlt ein Vergleichsoperator (bspw. eq). Bitte die Doku zu DOIF lesen. Diese ist sehr umfangreich (wenn sie auch zu 90% aus Beispielen besteht ;))

edition

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.

CoolTux

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.
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

edition

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?

marvin78

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.