globale dummy variable an shell übergeben

Begonnen von riker1, 05 Februar 2018, 16:50:17

Vorheriges Thema - Nächstes Thema

riker1

#15
Zitat von: JoWiemann am 06 Februar 2018, 19:54:27
Ja, war aber falsch, da system() den kompletten Befehl in "" erwartet. Häng doch mal bitte das if..., siehe korrigierten Post, mit hinten dran. Dann wird system() bur ausgeführt, wenn ein Wert durch ReadingsVal übergeben wird.


Hi Jörg,

nun mit dem if, aber keine Änderung, das script wird nicht ausgeführt.
also scheint die Variable leer zu sein, ....komisch

LCR1_on_script_RV exec {my $action = ReadingsVal("relay_lctech_action","state","") ;;;;qx (/opt/fhem/relay_lctech.sh $action) if($action ne "");; }

bzw mit system:
defmod LCR1_on_script_RV_sys notify test_script:lct_r1_on_RV_sys  {my $action =  ReadingsVal("relay_lctech_action","state","") ;;;;system ("/opt/fhem/relay_lctech.sh  $action") if($action ne "");; }
kommt kein Log eintrag...

...das lag an der verbose einstellung...

im log kommt: LCR1_on_script_RV_sys exec {my $action = ReadingsVal("relay_lctech_action","state","") ;;;;system ("/opt/fhem/relay_lctech.sh $action") if($action ne "");; }
aber keine aktion.

nochmal zur sicherhaeit: das geht:
defmod Rlctech_r2off_esp notify Rlctech:r2_off_esp {   system " /opt/fhem/relay_lctech.sh relay,1,0" }
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

riker1

#16
...uff

habe was gefunden:

state war noch leer....nur STATE war gefüllt.

also die System Variante ging , qx nochmal checken:  geht auch !!! geprüft

obwohl ich den Eintrag hatte:

setstate relay_lctech_action relay,1,1

dieser hat den Wert state aber nicht gefüllt.

erst über das GUI mit
setstate relay_lctech_action 2018-02-06 20:32:18 state relay,1,1

Danke für die Hilfe an alle.

FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Otto123

#17
Zitat von: JoWiemann am 06 Februar 2018, 19:05:45
system() gibt doch nur zurück, ob die Ausführung funktioniert hat == 0 oder nicht == (-1). Will man das Ergebnis der Ausführung muss man qx() nehmen.
Ich bin mir nicht sicher, aber ich glaube bei {system()} kommt immer -1 zurück. Völlig egal ob der Befehl in () funktioniert oder nicht. Also zumindest hab ich das mit verschiedenen Inhalten probiert. Laut Beschreibung in Perl Doc ist das nicht so.
stdout landet aber im Logfile, nicht im Browser.


Aber ein Beispiel echo 'echo Test' > willi.txtIm Terminal liefert das keinen Fehler und funktioniert.
{system ("echo 'echo Test' > willi.txt")} In der Kommanozeile von FHEM liefert -1 zurück und keinen Eintrag im Logfile. Der Befehl wird ordentlich ausgeführt. Die Datei genauso geschrieben wie im Terminal.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz