Hallo,
wie kann ich aus Perl heraus einen FHEM Befehl absetzen, der erst 10 Sekunden später ausgeführt wird und dann erst auch ein Reading einliest? Ich wolle es so machen:
fhem("sleep 10 ; setreading $Device z_2_1_VerbrauchIn_ws {(ReadingsNum($Device,'energy0',0);} - $oldEnergy)
Problem ist dies hier:
{(ReadingsNum($Device,'energy0',0);}
Viele Grüße
Vielleicht hilft es schon, wenn du die schießende set-magic-Klammer an der richtigen Stelle setzt? (hinten)
ja aber der Wert der Variable $oldEnergie wird noch durch den Perl-Code eingesetzt.
Zitat von: matzke am 19 Januar 2023, 18:00:34
Problem ist dies hier:
Nein. Problem ist, dass Du die Klammern nicht gezählt hast und die Zahl der öffnenden Klammern nicht mit der Zahl der schließenden Klammern übereinstimmt.
fhem("sleep 10 ; setreading $Device z_2_1_VerbrauchIn_ws ". ReadingsNum($Device,'energy0',0) - $oldEnergy)
Ich würde die Aufgabe übrigens einfach mit einem at lösen, das in 10 Sekunden ausgeführt wird.
OK, ja, ich hatte die Zeile gekürzt und dabei ist der Fehler entstanden. Ist aber nicht das eigentliche Problem. Ich werde meine Problem, habe ich mir gerade überlegt, anders lösen. Anstatt über fhem(,,") werde ich ein at schreiben, das mir dann 10 sec später (nach Update der Daten) die Sub nochmals aufruft und die Berechnungen durchführt.
Zitat von: matzke.
Zitat von: AnBad.
Gespaltene Persönlichkeit?
Ja,
anfangs, wie ich überhaupt keine Ahnung von FHEM und Perl und im allgemeinen von Coding hatte, da hat man mich hier im Forum übel behandelt, weil ich viele Fragen hatte. Da es mir zu blöd wurde, habe ich dann ein zweites Profil mir angelegt. Am Ipad bin ich wohl mit dem zweiten Profil angemeldet.... Muss ich mal ändern.