Hallo zusammen,
ich würde gerne meine Lampe ab einem bestimmten Zeitpunkt zufällig abschalten lassen - allerdings nur, sofern ich im Home state "absent" bin. Dazu habe ich mir folgendes überlegt:
*23:00 {
if (value("rr_max") eq "absent" || value("rr_max") eq "gone")
{
my $range_std = 0;
my $range_min = 1;
my $zfz1 = int(rand($range_std));
my $zfz2 = int(rand($range_min));
my $zfz = sprintf("%02d:%02d", $zfz1, $zfz2);
fhem (define lichtaus at +".$zfz set wz_licht off")
}
}
Leider erhalte ich nur eine lange Fehlermeldung.
Weiß jemand Rat?
Vielen Dank vorab,
Max
ZitatLeider erhalte ich nur eine lange Fehlermeldung.
ZitatWeiß jemand Rat?
Auch wenn es dir nicht gefällt:
http://forum.fhem.de/index.php/topic,16311.0.html (http://forum.fhem.de/index.php/topic,16311.0.html)
Mit ersterem kann niemand etwas anfangen - poste die Fehlermeldung.
Niemand wird deinen Code in seine Installation einbauen um zu schauen WELCHE Fehlermeldung kommt.
value sollte mWn Value heissen - FHEM ist case sensitiv (es beachtet Gross- Kleinschreibung).
Weiters wundert mich diese Zeile etwas:
fhem (define lichtaus at +".$zfz set wz_licht off")
Ich vermute die Meldung bezieht sich darauf (oder bereits auf die if-Abfrage).
Aber da meine Glaskugel Ferien hat musst du uns schon helfen.
Aber ist nicht schlimm - lies dir den Link durch und dann poste was noch fehlt.
Hallo Puschel,
danke für die schnelle Antwort. Das "Value" mit "V" hat schon mal die Zeilen an Fehlermeldung deutlich reduziert. Jetzt steht im Logfile nur noch
licht_aus_zufall: Bareword "at" not allowed while "strict subs" in use at (eval 3999) line 9.
Ich vermute, die Übergabe der Variablen $zfz funktioniert nicht richtig. Ersetze ich die Variable bspw. durch 00:05:00 funktioniert das ausschalten der Leuchte 5 Min. später ohne Probleme.
Kann man den Wert, welchen die Variable hat/hatte, irgendwie auslesen?
Danke,
Max
Probiere doch mal:
fhem ("define lichtaus at $zfz set wz_licht off")
denn bei:
fhem (define lichtaus at +".$zfz set wz_licht off")
wird versucht define, lichtaus, at als Perl Befehle aufzulösen. Das Funktionsargument für fhem() ist ein vollständiger Befehls-STRING.
Grüße Jörg
Hallo Jörg,
allerbesten Dank - das ist die Lösung! Jetzt läuft alles wie es soll!
Viele Grüße,
Max