[gelöst] nach FHEM Start dummy-Status setzen auf Ergebnis von Shell Script.

Begonnen von Kiki99, 07 Juli 2018, 16:20:11

Vorheriges Thema - Nächstes Thema

Kiki99

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)

Otto123

Hi,

ich hatte die Thematik für mich mal aufgeschrieben :)

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
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

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Kiki99

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

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Kiki99

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