python script starten

Begonnen von snoopy_andi, 20 Mai 2015, 18:24:22

Vorheriges Thema - Nächstes Thema

snoopy_andi

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

JoWiemann

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
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

snoopy_andi

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



JoWiemann

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
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

snoopy_andi

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

Phill

#5
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"
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

Wernieman

Unter der Vorraussetzung, das in der ersten Zeile der #! Eintrag richtig ausgefüllt wurde ... oben im Beispielscript wurde es eben nicht eingetragen.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

snoopy_andi

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"

Phill

hast du meinen Beitrag gelesen?
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

snoopy_andi

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