Hauptmenü

Syntaxfehler im Notify

Begonnen von raspklaus, 22 Juli 2016, 12:23:17

Vorheriges Thema - Nächstes Thema

raspklaus

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

saxandl

ich vermute mal, dass time eine Variable ist, und damit mit $time in die if-schleife gehört

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

ungetestet!

raspklaus

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

betateilchen

ungetestet:


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

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

raspklaus

@betateilchen

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

Wo kann ich da genauere Beschreibungen finden ?

betateilchen

#5
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
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

raspklaus