Rückgabewert aus Batchdatei verarbeiten

Begonnen von TomNo, 11 Februar 2013, 20:32:45

Vorheriges Thema - Nächstes Thema

TomNo

Ich finde mal wieder keine passende Idee im Wiki, deshalb hier meine Frage:
Ich möchte eine Batchdatei (Linux / Rpi) aufrufen, dabei Parameter übergeben (das klappt) und anschließend ein Ergebnis aus der Batchdatei in fhem wieder zur Verfügung haben, um damit eine IF-Abfrage zu füttern. Bislang sieht das bei mir so aus:

define Testbutton dummy
attr Testbutton setList 0 1 2 3
# ...
define RTest1 notify Testbutton:1 {\
my $rw=`/opt/toms/rtest 1`}
define RTest2 notify Testbutton:2 {\
my $rw=`/opt/toms/rtest 2`}
# ...# ...

Ich kann nun in der Weboberfläche einen der Werte 0 bis 4 auswählen, der wird dann auch an das Programm rtest übergeben. Die Backticks um den Aufruf führen dazu, dass der Rückgabewert an eine Variable $rw übergeben wird. Nun möchte ich $rw verwenden, um in einem weiteren notify eine bedingte Aktion auszuführen, also sinngemäß:

define act_on_kalt notify  { if ("$rw" lt "35") { fhem("set abc_sw on") } }

Für den letzten Schritt fehlt mir ein Tip für die richtige Umsetzung.
TomNo

mmatt

Leider kann ich Dir nicht weiterhelfen (bin absoluter Anfänger) finde aber Deine Frage sehr interessannt.

brauchst Du "rtest" für die GPIO des RPI ?

Was funktioniert den genau nicht bei:
define act_on_kalt notify  { if ("$rw" lt "35") { fhem("set abc_sw on") } }


Vielleicht, (wenn der Beitrag ja jetzt wieder nach oben geschoben wird) findet ein Profi eine Antwort darauf.

Gruss Martin

- FHEM 5.5 auf RPI REV.2
- CUL V3 868MHz
- CUL_HM: HM-LC-Dim1TPBU-FM/HM-LC-Swl1PBU-FM/HM-LC-Sw1-BA-PCB/HB-UW-Sen-THPL-O/HM-SEN-MDIR-SM

Puschel74

Guten morgen,

ich vermute mal das bei dem notify-Aufruf die Variable $rw noch leer ist.

So wie ich das sehe ist diese als lokale Variable definiert und wird nach dem verlassen des Testbutton-Notify wieder auf
undef oder 0 oder was auch immer gesetzt daher kann TomNo diese Variable im zweiten notify so nicht einfach abfragen.

Ich hab jetzt aber leider auch keine Ahnung wie diese Variable global definiert werden kann - dazu sollte es aber schon
Fragen bzw. Einträge geben.

@TomNo
Warum musst du diesen Wert in deine Batchdatei schreiben und nicht einfach in ein Logfile?
Wobei das egal sein dürfte - du müsstest aus der Batchdatei analog zum auslesen aus einem Logfile wieder auf den
Wert zugreifen können.
Oder du speicherst den Wert in einem Dummy und liest im zweiten Notify mit ReadingsVal bzw. Value den Wert des Dummy wieder ein.

Ich hoffe mal ich hab jetzt nicht allzu großen Blödsinn geschrieben.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

TomNo

Hallo
Zitatich vermute mal das bei dem notify-Aufruf die Variable $rw noch leer ist.

So wie ich das sehe ist diese als lokale Variable definiert und wird nach dem verlassen des Testbutton-Notify wieder auf
undef oder 0 oder was auch immer gesetzt daher kann TomNo diese Variable im zweiten notify so nicht einfach abfragen.
Ich hab jetzt aber leider auch keine Ahnung wie diese Variable global definiert werden kann - dazu sollte es aber schon
Fragen bzw. Einträge geben.
Ja, in der Ecke lag das Problem. Inzwischen ist es aber gelöst, andere Forumsbeiträge haben zu globalen Variablen ein paar Infos.

Zitat@TomNo
Warum musst du diesen Wert in deine Batchdatei schreiben und nicht einfach in ein Logfile?
In der Batchdatei befindet sich ein Skript, das die Schaltsignale für die Steuerrelais berechnet und auslöst. Beispiel: Ich rufe die Batchdatei auf mit rtest 2=70 1=30 Das bedeutet, dass Rolladen Nr. 2 von der aktuellen Position auf 70% bewegt werden soll und Rolladen 1 auf 30%. Wenn das Skript nun die aktuellen Positionen hat, kann es ermitteln, welche Fahrzeit in welcher Richtung für welchen Rolladen notwendig ist und die GPIO-Pins entsprechend ansteuern.
[/quote]