Gelöst:Rückgabewert aus Script übernehmen

Begonnen von TottiToad, 14 Oktober 2017, 13:06:16

Vorheriges Thema - Nächstes Thema

TottiToad

Hallo zusammen,

habe jetzt die ganze Nacht gelesen, jedoch keine Lösung gefunden.

Ich möchte per notify ein php Script ausführen und dessen Rückgabewert in FHEM übernehmen / erhalten.

Das ausführen des Scripts läuft problemlos, jedoch wird als Wert immer -1 geschrieben ?!?

Das Script wird ausgeführt, da der Code erstellt wird.

Im Script wird er am Ende mittels return Befehl ausgegeben.


echo "\nCode: ";
echo $code[0];
echo "\n";

return $code[0];




Hier der teil aus meiner 99_myUtilis:


sub Code_Anfordern($) {
my ($code) = system("php /usr/local/src/Voucher.php ");
fhem ("set Code_Dummy ".$code);
}


Das ganze führe ich wie gesagt über ein Notify aus, was auch grundsätzlich funktioniert.
Nur an das Code_Dummy wird der Wert -1 übergeben. Müsste aber jedesmal ein individueller 8 Stelligen Code sein.

Hier die Meldungen im log:


2017.10.14 13:03:34 4 : dummy set Voucher_Dummy Voucher_anfordern
2017.10.14 13:03:34 5 : Triggering Voucher_create
2017.10.14 13:03:34 4 : Voucher_create exec {Code_Anfordern("$EVENT")}
2017.10.14 13:03:34 4 : dummy set Code_Dummy -1
2017-10-14 13:03:34 dummy Code_Dummy -1
2017-10-14 13:03:34 dummy Voucher_Dummy Voucher_anfordern


Was mache ich falsch ? Weshalb kommt nur Wert -1 zurück ?

Ich habe mal zu Testzwecken zwei Test Dummys gemacht und ein TestNotify mit einem ganz einfachen php Script

<?php 
echo time(); 
?>



Aber auch hier, wird anstatt der Zeit nur -1 ausgegeben.


Ich hoffe ihr könnt mir irgendwie weiterhelfen ?

Grüße & Danke
Totti

der-Lolo

Hallo TottiToad,
vielleicht hilft Dir das im Fhemwiki bei 99_myUtils verlinkte Howto weiter...
https://waschto.eu/eigene-routinen-erstellen-und-auslagern/

Ziemlich unten geht es um Rückgabewerte...

AndreR

auf die schnelle würde ich im PHP Script den Wert per Telnet in einen Dummy schreiben... geht aber bestimmt auch eleganter

Gesendet von meinem SM-G955F mit Tapatalk

FHEM auf Raspberry Pi
CUL868
diverse FS20 Aktoren, Somfy Markisensteuerung

CoolTux


my  $state = qx(ssh proxy01 'sudo /etc/iptables/rules.scripts/ssh_inbound_inet.sh deny');
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

TottiToad

@CoolTux

Weiß jetzt leider nicht wirklich was mit deiner Codezeile ist ?

Stellt das nen Beispiel dar ?

@der-Lolo
Dank für den Link. Hat mir im allgemeinen definitiv weitergeholfen. (Die Seite besuche ich ohnehin auch immer gerne ; )

@AndreR
Die Lösung über Telnet schaue ich mir mal an


Ich bin jedenfalls schon wieder ein Stück weiter.
Der Code wird im log angezeigt, jedoch nicht ins Dummy oder irgendwohin übernommen ?

Wie komme ich an diesen Code ????

Hier der Auszug aus dem log:


2017.10.14 19:15:30 4: dummy set Voucher_Dummy Voucher_anfordern
2017.10.14 19:15:30 5: Triggering Voucher_create
2017.10.14 19:15:30 4: Voucher_create exec {Code_Anfordern("$EVENT")}

Code: 8098743296
2017.10.14 19:15:33 4: dummy set Code_Dummy -1


Der erzeugte Code taucht im log auf, jedoch wird weiterhin -1 an den Dummy übergeben.
Möchte irgendwie das dieser Code übergeben wird

Grüße
Totti

Hans Franz

Du musst, wie von CoolTux vorgeschlagen, statt des system-Aufrufes qx verwenden. Backticks gehen auch. So bekommst du nur eine Meldung über den Erfolg des Aufrufes.

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

TottiToad

Hi,

die Info brauchte ich noch ;)

Danke, jetzt läuft es. Der Wert "Code 123456789" wird ans Dummy übergeben.


my $code = qx(php /usr/local/src/Voucher.php 24 &);


Grüße & Danke