Hallo,
kann ich ein system befehl mit einem Reading füllen.
define starten at +*00:00:02 {system("python /opt/fhem/simpletest.py 900")}
die 900 würd ich jetzt gerne aus einem reading nehmen und übergeben.
Gruß Josty
Hi,
auf die Schnelle meine Notiz -> https://heinz-otto.blogspot.com/2018/02/in-fhem-externe-programme-aufrufen.html
system() ist nicht die beste Wahl.
Prinzip:
{my $Var = ReadingsVal("Device","reading","");; system("python /opt/fhem/simpletest.py $Var")}
So kannst Du auch in der FHEM Kommandozeile testen.
Gruß Otto
Ja warum nicht ;)
define starten at +*00:00:02 {my $Value=ReadingsVal("DeviceName", "ReadingName", "Ersatzwert");; system("python /opt/fhem/simpletest.py $Value")}
Sollte gehen.
Anmerkung: system-Aufrufe sind blockierend (also wenn der pyton Aufruf länger dauert macht fhem solange nix)...
Besser (und sollte eigentlich auch gehen):
define starten at +*00:00:02 {my $Value=ReadingsVal("DeviceName", "ReadingName", "Ersatzwert");; fhem("\"python /opt/fhem/simpletest.py $Value\"")}
EDIT: @Otto: du immer mit deinen schnell geschossenen Links ;)
Aber bist du sicher, dass alle 2s eine kluge Idee ist!?
Warum so kurz hintereinander immer wieder!?
Da musst du aber sicher sein, dass das nicht länger dauert, sonst überholst du dich ja... ;)
Gruß, Joachim
define starten at +*00:00:02 {system("python /opt/fhem/simpletest.py ".ReadingsVal("Device","Reading","defaultvalue"))}
Trop facile ! ;)
Na jetzt habt ihr mich alle beim editieren und fertig schreiben überholt :) Aber meinen ganzen Text will ich eh nicht nochmal abschreiben. Die Frage hat ja ein paar Facetten.
Hallo,
Danke es funktioniert.
Das ausgeführte Python Skript setzt nur das PWM an einer SPI PCA9685 Karte.
Dieses soll einen Lüfter eines Holzvergasers steuern.
Die Werte sollen dann von dem PID30 Regler kommen.
Deshalb muss ich den Lüfter im sec Takt nachregeln.
Gruß Josty
Welche Variante hast du jetzt genommen?
Hoffentlich eine ohne "system"!?
Musst halt aufpassen, dass die Kommandos schnell genug abgearbeitet werden, sonst "stauen sie sich auf"...
Dann kannst du ja auf gelöst setzen, umbenennen in beispielsweise [gelöst] System Befehl mit reading übergeben
Gruß, Joachim