at Befehl in Notify verpacken - Anfänger

Begonnen von Tho-Gra, 28 März 2016, 21:59:42

Vorheriges Thema - Nächstes Thema

Tho-Gra

Hallo alle zusammen,

Ich komme einfach nicht auf die Lösung meines Problemes.
Ich hoffe ihr könnt mir helfen.

Folgender Code funktioniert ohne Probleme :

define at_nFL_Keymatic at +00:00:10  { if (Value("FL.Tuer") eq "closed" && Value("FL.Keymatic") ne "locked") { fhem("set FL.Keymatic lock") }}

Führe ich diese Codezeile einfach so aus, funktioniert mein Vorhaben.

Verpacke ich das nun in ein Notify, funktioniert es nicht.

define nFL.Tuer_Keymatic notify FL.Tuer:closed {fhem("define at_nFL_Keymatic at +00:00:10  { if (Value("FL.Tuer") eq "closed" && Value("FL.Keymatic") ne "locked") { fhem("set FL.Keymatic lock") }}")}

Dies funktioniert leider nicht :(...

Hier die Fehlermeldung aus der Log.
Zitat2016.03.28 21:39:19 1: PERL WARNING: Bareword found where operator expected at (eval 27514) line 1, near ""define at_nFL_Keymatic at +00:00:10  { if (Value("FL"
2016.03.28 21:39:19 3: eval: my $EVENT='closed';my $TYPE='CUL_HM';my $EVTPART0='closed';my $NAME='FL.Tuer';my $SELF='nFL.Tuer_Keymatic';{fhem("define at_nFL_Keymatic at +00:00:10  { if (Value("FL.Tuer") eq "closed" && Value("FL.Keymatic") ne "locked") { fhem("set FL.Keymatic lock") }}")}
2016.03.28 21:39:19 1: PERL WARNING: String found where operator expected at (eval 27514) line 1, near "Tuer") eq ""
2016.03.28 21:39:19 3: eval: my $EVENT='closed';my $TYPE='CUL_HM';my $EVTPART0='closed';my $NAME='FL.Tuer';my $SELF='nFL.Tuer_Keymatic';{fhem("define at_nFL_Keymatic at +00:00:10  { if (Value("FL.Tuer") eq "closed" && Value("FL.Keymatic") ne "locked") { fhem("set FL.Keymatic lock") }}")}
2016.03.28 21:39:19 1: PERL WARNING: Bareword found where operator expected at (eval 27514) line 1, near "") eq "closed"
2016.03.28 21:39:19 3: eval: my $EVENT='closed';my $TYPE='CUL_HM';my $EVTPART0='closed';my $NAME='FL.Tuer';my $SELF='nFL.Tuer_Keymatic';{fhem("define at_nFL_Keymatic at +00:00:10  { if (Value("FL.Tuer") eq "closed" && Value("FL.Keymatic") ne "locked") { fhem("set FL.Keymatic lock") }}")}
2016.03.28 21:39:19 1: PERL WARNING: String found where operator expected at (eval 27514) line 1, near "closed" && Value(""
2016.03.28 21:39:19 3: eval: my $EVENT='closed';my $TYPE='CUL_HM';my $EVTPART0='closed';my $NAME='FL.Tuer';my $SELF='nFL.Tuer_Keymatic';{fhem("define at_nFL_Keymatic at +00:00:10  { if (Value("FL.Tuer") eq "closed" && Value("FL.Keymatic") ne "locked") { fhem("set FL.Keymatic lock") }}")}
2016.03.28 21:39:19 1: PERL WARNING: Bareword found where operator expected at (eval 27514) line 1, near "" && Value("FL"
2016.03.28 21:39:19 3: eval: my $EVENT='closed';my $TYPE='CUL_HM';my $EVTPART0='closed';my $NAME='FL.Tuer';my $SELF='nFL.Tuer_Keymatic';{fhem("define at_nFL_Keymatic at +00:00:10  { if (Value("FL.Tuer") eq "closed" && Value("FL.Keymatic") ne "locked") { fhem("set FL.Keymatic lock") }}")}
2016.03.28 21:39:19 1: PERL WARNING: String found where operator expected at (eval 27514) line 1, near "Keymatic") ne ""
2016.03.28 21:39:19 3: eval: my $EVENT='closed';my $TYPE='CUL_HM';my $EVTPART0='closed';my $NAME='FL.Tuer';my $SELF='nFL.Tuer_Keymatic';{fhem("define at_nFL_Keymatic at +00:00:10  { if (Value("FL.Tuer") eq "closed" && Value("FL.Keymatic") ne "locked") { fhem("set FL.Keymatic lock") }}")}
2016.03.28 21:39:19 1: PERL WARNING: Bareword found where operator expected at (eval 27514) line 1, near "") ne "locked"
2016.03.28 21:39:19 3: eval: my $EVENT='closed';my $TYPE='CUL_HM';my $EVTPART0='closed';my $NAME='FL.Tuer';my $SELF='nFL.Tuer_Keymatic';{fhem("define at_nFL_Keymatic at +00:00:10  { if (Value("FL.Tuer") eq "closed" && Value("FL.Keymatic") ne "locked") { fhem("set FL.Keymatic lock") }}")}
2016.03.28 21:39:19 1: PERL WARNING: String found where operator expected at (eval 27514) line 1, near "locked") { fhem(""
2016.03.28 21:39:19 3: eval: my $EVENT='closed';my $TYPE='CUL_HM';my $EVTPART0='closed';my $NAME='FL.Tuer';my $SELF='nFL.Tuer_Keymatic';{fhem("define at_nFL_Keymatic at +00:00:10  { if (Value("FL.Tuer") eq "closed" && Value("FL.Keymatic") ne "locked") { fhem("set FL.Keymatic lock") }}")}
2016.03.28 21:39:19 1: PERL WARNING: Bareword found where operator expected at (eval 27514) line 1, near "") { fhem("set"
2016.03.28 21:39:19 3: eval: my $EVENT='closed';my $TYPE='CUL_HM';my $EVTPART0='closed';my $NAME='FL.Tuer';my $SELF='nFL.Tuer_Keymatic';{fhem("define at_nFL_Keymatic at +00:00:10  { if (Value("FL.Tuer") eq "closed" && Value("FL.Keymatic") ne "locked") { fhem("set FL.Keymatic lock") }}")}
2016.03.28 21:39:19 3: nFL.Tuer_Keymatic return value: syntax error at (eval 27514) line 1, near ""define at_nFL_Keymatic at +00:00:10  { if (Value("FL"

Es wäre schön, wenn mir wer helfen könnte.

Danke und Grüße

Tho-Gra

viegener

In Deiner Definition gibt es auf jeden Fall mal ein Problem mit den Anführungsstrichen. Denn in der at definition befinden sich mehrere Texte in Anführungsstrichen und dann setzt Du im Notify nochmal das ganze in Anführungsstriche. Allerdings funktioniert das nicht wie Klammern, sondern sobald das 2. " kommt ist der entsprechende Text zu Ende.

In den Befehlen verwendest mehrfach die perl-Ebene also z.B. fhem("..."). Das ist aber vielfach gar nicht nötig.

Du könntest also in der Definition des notifies den ganzen Teil mit dem umgebenden fhem("...") einfach weglassen, denn es handelt sich ja um ein einfaches fhem statement. Ich habe das aber jetzt nicht im Detail überprüft.



Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Rince

Du willst deine Haustür verriegeln wenn sie für 10 Minuten geschlossen ist?

Schau mal dieses DOIF an:

Internals:
   DEF        ([fl_KEY_Haustuer] ne "locked"
and [fl_TK_Haustuer] eq "closed")
(say Ich schließe die Haustüre wieder zu)
(set fl_KEY_Haustuer lock)

Attributes:
   wait       3000,10


fl_KEY_Haustuer die Keymatik
fl_TK_Haustuer ein Tür/Fensterkontakt (allerdings von Max)

say ist ein CMDALIAS, das wird bei dir erst mal nicht gehen

Wait ist wichtig:
Nach 3000 Sekunden kommt die Sprachansage, dass die Tür verriegelt wird, 10 Sekunden später wird sie verriegelt. War wichtig für den WAF, weil meine Frau immer erschrak wenn auf einmal ohne Vorwarnung die Keymatik losratterte. Jetzt wird sie vorgewarnt => perfekt
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)