Hallo zusammen,
ich habe ein dummy Device mit dem ich nun ein Script auf einem anderen Rechner Starten oder killen kann. So weit so gut:
define Alexa FS20 1234 50
attr Alexa dummy 1
attr Alexa room Wohnzimmer
define Alexa_An notify Alexa:on "/opt/fhem/Pi_Alexa_An.sh"
define Alexa_Aus notify Alexa:off "/opt/fhem/Pi_Alexa_Aus.sh"
Das funktioniert so weit. Einzig störend ist, dass der Status nach einem Neustart von fhem natürlich manchmal falsch ist. Ich müsste jetzt dafür definieren:
define notify_fhem_reload_AlexaStat notify global:INITIALIZED set Alexa "/opt/fhem/Pi_Alexa_Status.sh"
was so natürlich nicht funktioniert. In welche Klammern, Kommandos oder Whatever muss ich den Scriptaufruf einbetten, damit das Script aufgerufen und das Ergebnis dem Device zugewiesen wird? :o Das Script gibt on oder off zurück ;D
Wenn ich nach notify und script oder bash suche dann finde ich zwar scriptaufrufe im notify (wie auch bei mir oben) aber nie, um das Ergebnis einem Gerät zuzuweisen :/
Danke im voraus für Tipps :) 8)
Hi,
ich hatte die Thematik für mich mal aufgeschrieben (https://heinz-otto.blogspot.com/2018/02/in-fhem-externe-programme-aufrufen.html) :)
So direkt wie Du das machen willst geht das nicht (denke ich), Du kannst den Weg über Perl gehen. Ähnlich meinem Beispiel im Text (schon angepasst - nicht getestet):
{my $b = qx/bash /opt/fhem/Pi_Alexa_An.sh/;; fhem("set Alexa $b")}
Gruß Otto
Ich sehe ja nichts von einem anderen Rechner (wahrsch./evtl. "im" Shell-Script) aber du kannst auch im Script selber die Werte im Dummy setzen:
perl /opt/fhem/fhem.pl 7072 "set Alexa on"
perl /opt/fhem/fhem.pl 7072 "set Alexa off"
Gruß, Joachim
Hi ihr beiden und danke erst mal für die Tipps.
Funktionieren tut es aber noch nicht ganz irgendwelche Klammern, Anführungszeichen oder was auch immer fehlen noch, im Log steht
PERL WARNING: Bareword found where operator expected at (eval 49) line 1, near "qx/bash "/opt"
2018.07.09 20:40:07 1: ERROR evaluating my $EVTPART0='INITIALIZED';my $SELF='notify_fhem_reload_AlexaStat';my $NAME='global';my $TYPE='Global';my $EVENT='INITIALIZED';{my $b = qx/bash "/opt/fhem/Pi_Alexa_Status.sh"/; fhem("set Alexa $b")}: syntax error at (eval 49) line 1, near "qx/bash "/opt"
Er zerlegt also den Befehl in Einzelteile?
Den zweiten Vorschlag verstehe ich leider nicht ganz. Ich kann doch aus der Unix bash nicht Set Alexa on aufrufen? Vielleicht mit fhem davor? ??? Und für was steht die 7073 ???
Sorry, ich spreche Perlisch und Shellisch noch nicht so gut :'( ;)
Gruß
Kiki
So wie ich es bislang gesehen/verstanden habe läuft dort wo das Script aufgerufen wird auch fhem!?
Zumindest konnte ich nix bzgl. remote sehen...
Du kannst mit dem Aufruf per Telnet (Port 7072) den Wert im Dummy setzen...
Einfach mal in der Linux Console eintippen und zwar komplett so...
Vors. fhem ist unter /opt/fhem installiert...
Gruß, Joachim
Ahh, okay, das ist sehr praktisch.
Ja, Du hast recht, der Remoteaufruf ist komplett in dem bash script, damit ich ihm leichter auf die Finger schauen kann ;)
Da kommen dann jetzt Deine beiden Aufrufe rein. Sehr praktisch, Danke ;D
Gruß Kiki