FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: raspklaus am 22 Juli 2016, 12:23:17

Titel: Syntaxfehler im Notify
Beitrag von: raspklaus am 22 Juli 2016, 12:23:17
Hallo zusammen,

das folgende Notify erzeugt den Fehler:

2016.07.22 12:18:46 3: AusDummyNeu3 return value: syntax error at (eval 297319) line 1, at EOF


AusDummy3:on {{(fhem"set Motion3Verlauf 0")} if (time - time_str2num(ReadingsTimestamp("Motion3Verlauf","state",0)) > 16 )}

Ich stehe da etwas auf dem Schlauch und kann eigentlich keinen Fehler finden
Titel: Antw:Syntaxfehler im Notify
Beitrag von: saxandl am 22 Juli 2016, 12:27:15
ich vermute mal, dass time eine Variable ist, und damit mit $time in die if-schleife gehört

... if ($time - time_str2num(Reading ...

ungetestet!
Titel: Antw:Syntaxfehler im Notify
Beitrag von: raspklaus am 22 Juli 2016, 17:42:22
Diese Änderung bringt nur weitere Fehlermeldungen:

2016.07.22 14:44:24 1: PERL WARNING: Variable "$time" is not imported at (eval 318971) line 1.
2016.07.22 14:44:24 3: eval: my $EVTPART0='on';my $TYPE='dummy';my $SELF='AusDummyNeu3';my $EVENT='on';my $NAME='AusDummy3';{{(fhem"set Motion3Verlauf 0")} if ($time - time_str2num(ReadingsTimestamp("Motion3Verlauf","state",0)) > 16 )}
2016.07.22 14:44:24 3: AusDummyNeu3 return value: Global symbol "$time" requires explicit package name at (eval 318971) line 1.
syntax error at (eval 318971) line 1, at EOF
Titel: Antw:Syntaxfehler im Notify
Beitrag von: betateilchen am 22 Juli 2016, 17:49:50
ungetestet:


AusDummy3:on { CommandSet(undef,'Motion3Verlauf 0') if (ReadingsAge('Motion3Verlauf','state',0) > 16) }

Titel: Antw:Syntaxfehler im Notify
Beitrag von: raspklaus am 22 Juli 2016, 19:41:26
@betateilchen

scheint zu funktionieren, aber ich suche in Perl und der Commandreferenz mehr zu CommandSet() und Readingsage

Wo kann ich da genauere Beschreibungen finden ?
Titel: Antw:Syntaxfehler im Notify
Beitrag von: betateilchen am 22 Juli 2016, 20:09:36
Zu CommandSet() wirst Du keine Doku finden, das ist die fhem-interne Funktion, die verwendet wird, wenn ein "set <device> irgendwas" ausgeführt werden soll. Es würde auch mit Deiner Variante fhem() funktionieren, aber das war mir zuviel Aufwand beim Schreiben  8)

ReadingsAge() ist eine Standardfunktion, die mit in die Gruppe ReadingsVal() und ReadingsTimestamp() gehört. Die Funktion ist in der fhem.pl dokumentiert. Sie gibt das Alter eine readings, ausgehend vom seinem Timestamp zurück und tut somit einfach genau das, was Du selbst versucht hast, auszurechnen.

ReadingsAge() existiert erst seit März 2016

https://forum.fhem.de/index.php/topic,50783.0.html

https://forum.fhem.de/index.php/topic,50812.0.html
Titel: Antw:Syntaxfehler im Notify
Beitrag von: raspklaus am 22 Juli 2016, 20:51:57
Danke für deine Hilfe