Hallo zusammen,
Ich möchte ein langsames Aufdimmen zu einem festen Zeitpunkt hinterlegen, wenn dies in meinem Dummy-Device aktiviert wurde. Dazu habe ich nun folgendes gemacht:define terra_sunrise doif ([08:00] and [automatische_Lichtsteuerung:state] = on) (define sunrise at +*{12}00:01 set Test1 dimup)
Leider mit wenig Erfolg:perl error in condition: DOIF_time_once($hash->{timer}{0},$wday,"") and ReadingValDoIf('automatische_Lichtsteuerung','state','') = on: Can't modify non-lvalue subroutine call in scalar assignment at (eval 397) line 2, at EOF Bareword "on" not allowed while "strict subs" in use at (eval 397) line 1
Grob gesagt, das ist nicht zulässig, oder wie muss ich die Meldung interpretieren?
unberechtigte Grüße
Niels
define terra_sunrise doif ([08:00] and [automatische_Lichtsteuerung:state] eq "on") (define sunrise at +*{12}00:01 set Test1 dimup)
"eq" nicht "="
Oder "==" bei Zahlenwerten.
= ist kein Vergleich und hat in den Bedingungen nichts zu suchen. Damit wird Variablen ein Werte zugewiesen.
Und Texte in Anführungszeichen.
Gruß
Siehe Commandref:
ZitatVergleichende Abfragen werden, wie in Perl gewohnt, mit Operatoren ==, !=, <, <=, >, >= bei Zahlen und mit eq, ne, lt, le, gt, ge, =~, !~ bei Zeichenketten angegeben. Logische Verknüpfungen sollten zwecks Übersichtlichkeit mit and bzw. or vorgenommen werden. Selbstverständlich lassen sich auch alle anderen Perl-Operatoren verwenden, da die Auswertung der Bedingung vom Perl-Interpreter vorgenommen wird. Die Reihenfolge der Auswertung wird, wie in höheren Sprachen üblich, durch runde Klammern beeinflusst. Stati werden mit [<devicename>], Readings mit [<devicename>:<readingname>], Internals mit [<devicename>:&<internal>] angegeben.
Danke Phill,
Der Teufel steckt bekanntlich immer im Detail und wer lesen kann ist sowieso im Vorteil ;)
Ich habe noch keinen Schuh, aber die Socke ist Dank Eurer Hilfe langsam fertig ;D
voranschreitende Grüße
Niels