FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: satprofi am 26 Februar 2025, 10:05:06

Titel: myUtils.pm
Beitrag von: satprofi am 26 Februar 2025, 10:05:06
Hallo.
Möchte gerne Befehl über SUB ausführen, aber klappt irgendwie nicht. Mit DOIF funktioniert er so
 ("python2 /usr/local/bin/10Amp.py")

Wie muss ich das in der myUtils formatieren/eintragen?
So klappt's nicht

fhem("python2 /usr/local/bin/10Amp.py");
Und logausgabe
Subroutine fhem_not redefined at /opt/fhem/FHEM/99_myUtils.pm line 294.

Lg
 
Titel: Aw: myUtils.pm
Beitrag von: betateilchen am 26 Februar 2025, 10:09:43
Mit fhem() führt man FHEM-Befehle aus, nicht Betriebssystemkommandos.

Am einfachsten geht es mit qx()

qx(python2 /usr/local/bin/10Amp.py)
Wobei es notwendig sein kann, den kompletten Pfad zur ausführbaren Datei - hier: python2 - anzugeben.



Aber nur am Rande angemerkt: python2 ist doch finsterstes Mittelalter? Das wurde Anfang 2020 eingestellt.
Titel: Aw: myUtils.pm
Beitrag von: Otto123 am 26 Februar 2025, 10:13:10
Zitat von: satprofi am 26 Februar 2025, 10:05:06Wie muss ich das in der myUtils formatieren/eintragen?
Die doppelten Anführungszeichen schützen
fhem("\"python2 /usr/local/bin/10Amp.py\"")https://heinz-otto.blogspot.com/2018/02/in-fhem-externe-programme-aufrufen.html

Wobei es zweifelhaft ist es über fhem() zu machen. Allerdings blockiert der Aufruf so nicht, qx() blockiert. system() wäre eine nicht blockierende, direkte Alternative in Perl.

Gruß Otto
Titel: Aw: myUtils.pm
Beitrag von: satprofi am 26 Februar 2025, 10:16:49
Danke
Titel: Aw: myUtils.pm
Beitrag von: satprofi am 26 Februar 2025, 16:03:01
Zitat von: betateilchen am 26 Februar 2025, 10:09:43Mit fhem() führt man FHEM-Befehle aus, nicht Betriebssystemkommandos.

Am einfachsten geht es mit qx()

qx(python2 /usr/local/bin/10Amp.py)
Wobei es notwendig sein kann, den kompletten Pfad zur ausführbaren Datei - hier: python2 - anzugeben.



Aber nur am Rande angemerkt: python2 ist doch finsterstes Mittelalter? Das wurde Anfang 2020 eingestellt.

hab eh python 3.x laufen, aber nur python2 im befehl startet das script.