FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: jostmario am 03 Dezember 2018, 20:11:00

Titel: System Befehl mit reading übergeben
Beitrag von: jostmario am 03 Dezember 2018, 20:11:00
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
Titel: Antw:System Befehl mit reading übergeben
Beitrag von: Otto123 am 03 Dezember 2018, 20:32:51
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
Titel: Antw:System Befehl mit reading übergeben
Beitrag von: MadMax-FHEM am 03 Dezember 2018, 20:33:25
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
Titel: Antw:System Befehl mit reading übergeben
Beitrag von: amenomade am 03 Dezember 2018, 20:34:14
define starten at +*00:00:02 {system("python /opt/fhem/simpletest.py ".ReadingsVal("Device","Reading","defaultvalue"))}
Titel: Antw:System Befehl mit reading übergeben
Beitrag von: amenomade am 03 Dezember 2018, 20:34:58
Trop facile ! ;)
Titel: Antw:System Befehl mit reading übergeben
Beitrag von: Otto123 am 03 Dezember 2018, 20:39:14
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.
Titel: Antw:System Befehl mit reading übergeben
Beitrag von: jostmario am 03 Dezember 2018, 23:42:20
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
Titel: Antw:System Befehl mit reading übergeben
Beitrag von: MadMax-FHEM am 04 Dezember 2018, 07:48:02
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