[gelöst]Wie rufe ich aus einer Sub (in 99_myUtils.pm) ein (Bash)-Programm auf?

Begonnen von tklein, 03 März 2017, 22:22:20

Vorheriges Thema - Nächstes Thema

tklein

Hallo,

ich würde gerne einige Programme (codesend, irsend etc.) in meinen Sub ausführen lassen. Wie muss ich die aufrufen?


..
my %Alexakommando = (
"tvlauter" => "set Denon volumeup;; ich habe den fernseher lauter gestellt",
"leinwandrunter" => system ('irsend SEND_ONCE Leinwand KEY_DOWN') ;; ich fahre die Leinwand runter",


Das gibt beim Speichern immer Probleme. habe schon "" ausprobiert mit und ohne system(). In der Suche konnte ich dazu nichts finden, oder ich habe nach dem falschem gesucht. :-)

Viele Grüße und einen schönen Abend
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

automatisierer


tklein

nö, dann kommt: syntax error at ./FHEM/99_myUtils.pm line 115, near "qx (irsend SEND_ONCE Leinwand KEY_DOWN) ;" syntax error at ./FHEM/99...
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

schka17

so zum Bespiel,
    $net_device=qx(/opt/fhem/FHEM/FhemUtils/lanping.sh $net_device);


Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

tklein

würde da nicht nur die Ausgabe des Skripts in die Variable geschrieben werden?
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

KernSani

Zitat von: tklein am 04 März 2017, 00:02:30
würde da nicht nur die Ausgabe des Skripts in die Variable geschrieben werden?
Genau... Aber um die Ausgabe zu erzeugen, wird das Skript ausgeführt und das ist doch dein Ziel, oder?
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

tklein

ja schon, aber direkt mit system (), excec oder fhem() etc. geht das nicht? So müsste ich das Skript mit Parametern aufrufen, die es dann ausführen muss.
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

CoolTux


qx(ssh proxy01 'sudo /usr/local/bin/squidGuard_SetIsabelInternet.sh normalToHoliday');


Geht bei mir wunderbar. Du kannst natürlich auch mit system() das ganze machen.

Oder aber als fhem Befehl

fhem("/usr/bin/blablaScript");

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

tklein

Danke,

dann werde ich das wohl so machen. Nur so muss ich die jeweiligen Funktionen/Parameter alles in Skripte packen.
Sonst hätte ich die halt direkt (codesend 12343343 etc.) aufrufen können
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

CoolTux

Zitat von: tklein am 04 März 2017, 10:07:06
Danke,

dann werde ich das wohl so machen. Nur so muss ich die jeweiligen Funktionen/Parameter alles in Skripte packen.
Sonst hätte ich die halt direkt (codesend 12343343 etc.) aufrufen können

Kannst Du auch. Aber halt mit vollem Pfade
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

tklein

ich dachte das braucht man nicht, wenn sie unter /bin liegen
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

CoolTux

Eigentlich nicht. Aber FHEM muss ja irgendwie unterscheiden zwischen eigene Befehle und Shell Befehle, zu mindest wenn man den Befehl in der FHEM cmd aufruft. Daher mit path
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

tklein

ok, aber ich bekomme: ....3: /opt/fhem/FhemUtils/ir_send.sh : Unknown command /opt/fhem/FhemUtils/ir_send.sh, try help." als Meldung
Das Skript ist von der Komandozeile ausführbar. Zugriff auf den Ordner sollte auch klappen.


Der Aufruf:


sub Fernsehzeit() {

fhem("set Dummy_test fernsehzeit");
fhem("/opt/fhem/FhemUtils/ir_send.sh");
return " Die Multimediageräte wurden eingeschaltet";
}
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

CoolTux

Dann suche bitte mal im Forum. Kann sein das da noch " " hin müssen.


fhem(" '/opt/fhem/FhemUtils/ir_send.sh' ");


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

DeeSPe

Zitat von: tklein am 04 März 2017, 11:00:17
ok, aber ich bekomme: ....3: /opt/fhem/FhemUtils/ir_send.sh : Unknown command /opt/fhem/FhemUtils/ir_send.sh, try help." als Meldung
Das Skript ist von der Komandozeile ausführbar. Zugriff auf den Ordner sollte auch klappen.


Der Aufruf:


sub Fernsehzeit() {

fhem("set Dummy_test fernsehzeit");
fhem("/opt/fhem/FhemUtils/ir_send.sh");
return " Die Multimediageräte wurden eingeschaltet";
}




sub Fernsehzeit() {

fhem("set Dummy_test fernsehzeit");
`/opt/fhem/FhemUtils/ir_send.sh &`;
return " Die Multimediageräte wurden eingeschaltet";
}


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe