Ich muß eine Perl-Funktion zeitlich verzögert auslösen. Um fhem nicht zu blockieren, nutze ich fhem() zusammen mit {} - hier als minimales perl-Skript:
...;
fhem("sleep 3; {qx(date)}");
...;Das qx wird scheinbar nie aufgerufen. Mit doppelten ;; friert fhem komplett ein (nicht nur 3s). Eigentlich brauche ich nicht diese komplexe Verschachtelung. Oder muß ich den Perl InternalTimer nutzen?
Grüßle, Michael
wenn du eine Ausgabe sehen willst, das erfolgt bei qx() nicht. Das ;; funktioniert nicht, weil das sleep den nachfolgenden Befehl dann nicht mehr "sieht".
so ists richtig:
fhem('sleep 3; { meineFunktion() }');
Wenn du eine eigene Funktion aufrufen willst, wäre aber die Nutzung von InternalTimer vorzuziehen:
InternalTimer(gettimeofday() + 3, \&meineFunktion, $hash, 0);
Danke für die schnelle Antwort - bin mittlerweile bei InternalTimer
my $nextTime = Time::HiRes::gettimeofday() + $wait;
InternalTimer($nextTime, "EpsonPowerToggle", "", 0);
$nextTime = Time::HiRes::gettimeofday() + $wait + 0.1;
InternalTimer($nextTime, "EpsonPowerToggle", "", 0);
Bzgl. Rückgabe: qx(date) schreibt den Output entweder ins Log-Fenster oder in die Logdatei, hab' ich ausprobiert.
Grüßle, Michael