FHEM Forum

FHEM => Sonstiges => Thema gestartet von: snoopy_andi am 20 Mai 2015, 18:24:22

Titel: python script starten
Beitrag von: snoopy_andi am 20 Mai 2015, 18:24:22
Hallo

ich schaffe es einfach nicht ein python script aus FHEM heraus zu starten

/etc/group
root:x:0:fhem,pi


/etc/sudoers
fhem ALL=(ALL) NOPASSWD: ALL


dann gebe ich das oben ins Command Fenster ein

{system('/opt/fhem/test.sh');; }
{system(sudo '/opt/fhem/test.sh');; }


bekomme immer ein -1 zurück ...

das test.sh ist ein einfaches

echo "YEP"

Was kann ich da noch ändern damit das dann funkt?

im Endeffekt will ich ein python sktipt starten das dann die GPIO's steuert ... also auch mehr Rechte braucht
Titel: Antw:python script starten
Beitrag von: JoWiemann am 20 Mai 2015, 19:55:04
Nun, system() gibt den Rückgabewert des bash-Interpreters zurück. Möchtest du stdout oder stderr habe, dann verwende am Besten qx()

Hier ein Beispiel für qx()


  my $retWhatsApp = qx(sudo python /home/pi/yowsup/yowsup-cli demos -c /home/pi/yowsup/config.fnetz -s $handy '$text' 2\>&1 &);

  $retWhatsApp =~ s/\n|\r/ /g; #s,[\r\n]*,,g;        # remove CR from return-string

  Log3 "sendWhatsApp", 3, "sendWhatsApp: $retWhatsApp";



Grüße Jörg
Titel: Antw:python script starten
Beitrag von: snoopy_andi am 20 Mai 2015, 20:02:45
hmmmm Danke .... bin nun nen schritt weiter

folgendes python script :
import RPi.GPIO as GPIO
import time
import sys

# Pin Definitons:
io1 = 6
io2 = 13
io3 = 19
io4 = 26

print "Start1"

# Pin Setup:
GPIO.setmode(GPIO.BCM)
GPIO.setup(io1, GPIO.OUT)
GPIO.setup(io2, GPIO.OUT)
GPIO.setup(io3, GPIO.OUT)
GPIO.setup(io4, GPIO.OUT)

print "Start2"


Ausgabe im FHEM :

Start1
daher weiss ich mal das das GPIO per FHEM nicht startet .....

Hätte auch mal das hier so

root@raspberrypi:/opt/fhem# groups fhem
fhem : dialout root adm tty sudo plugdev netdev input spi gpio


Titel: Antw:python script starten
Beitrag von: JoWiemann am 20 Mai 2015, 20:33:21
Für den Zugriff auf die GPIO gibt es doch ein Fhem-Modul: http://forum.fhem.de/index.php/topic,16519.0.html

oder willst Du Dich selber einarbeiten, dann könnte das hier hilfreich sein: http://www.fhemwiki.de/wiki/Raspberry_Pi:_GPIOs_schalten

Grüße Jörg
Titel: Antw:python script starten
Beitrag von: snoopy_andi am 21 Mai 2015, 06:34:48
hmmm

Ich habe eben schon das fix fertig python Script was ich im Moment eher nicht ändern möchte .... und vermute es handelt sich nur mehr noch um ein kleines Rechte Problem ....

Nur das Problem ist das das Script einfach aufhört, ich nicht weiss ob es wo eine Log gibt, damit ich weiter suchen kann, so sucht man ziemlich ins blaue rein ....
das nächste wird sein zu versuchen den FHEM als root zu starten ... das müsste ja auch gehen irgendwie
Titel: Antw:python script starten
Beitrag von: Phill am 21 Mai 2015, 08:04:31
Hallo,

Nur noch mal zum Hinweis, in deinem ersten Beitrag muss das sudo innerhalb der Anführungszeichen stehen. qx ist da anders weil die Klammern hier den Texteinschluss bewirken.

Eigentlich sollte alles interessante in der fhem.log stehen. Ich weiß nicht ob 2>&1 notwendig ist für die Fehlerausgabe in der fhem.log. Schaden tuts jedenfalls nicht. Wie war denn dein genauer qx aufruf?

Ich würde es gleich in die Log umleiten.
{Log 1, qx(sudo pythonscript)}

fhem kannst du auch mit sudo starten.

Aber ich würde dir auch empfehlen das Modul RPI_GPIO zu verwenden.

Gruß

Achja, du brauchst übrigens überhaupt kein Perl um Shellcomandos auszuführen. Doppelte Anführungszeichen machen das selbe.
"pythonscript"
Titel: Antw:python script starten
Beitrag von: Wernieman am 21 Mai 2015, 11:49:44
Unter der Vorraussetzung, das in der ersten Zeile der #! Eintrag richtig ausgefüllt wurde ... oben im Beispielscript wurde es eben nicht eingetragen.
Titel: Antw:python script starten
Beitrag von: snoopy_andi am 21 Mai 2015, 19:25:45
Also das Problem ist das

GPIO.setup
Start1
Start1.1
wurde im FHEM noch geschreiben dann nix mehr

ich wollte nun fhem als root starten lassen, aber ... wie?

print "Start1"

# Pin Setup:
GPIO.setmode(GPIO.BCM)
print "start1.1"
GPIO.setup(io1, GPIO.OUT)
print "start1.1.1"
GPIO.setup(io2, GPIO.OUT)
GPIO.setup(io3, GPIO.OUT)
GPIO.setup(io4, GPIO.OUT)

print "Start2"
Titel: Antw:python script starten
Beitrag von: Phill am 21 Mai 2015, 23:08:47
hast du meinen Beitrag gelesen?
Titel: Antw:python script starten
Beitrag von: snoopy_andi am 22 Mai 2015, 18:12:50
ja hatte ich - nur hats nicht funktioniert!

Allerdings hatte ich es ohne dem sudo getestet gehabt zum schluß

Nun hab ich es nochmal MIT sudo getestet und nun funktioniert es - DANKE!

Zitat{qx(sudo /opt/fhem/rollo.py up) }
funkt genau so wie ich es haben wollte