Python Rechte an GPIO geben

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo an Alle.

    Ich habe vor kurzem schon eine Frage gestellt und mir wurde echt super schnell und klasse geholfen. Daher versuche ich es wieder mit einer neun Frage:

    Ich habe einen Raspberry Pi B+ mit FHEM drauf. Nun wollte ich ein Python Programm aus FHEM starten. Das klappt nicht. Ich kann es im Terminal und auch aus dem Python Editor von Raspbian aus starten, dann klappt alles wunderbar. Aber nicht aus FHEM. Mir wurde, im FHEM-Forum, wo mir ebenfalls super toll unter die Arme gegriffen wurde, gesagt, ich soll nach "raspberry gpio python rechte" suchen und mich darüber informieren. also es kann etwas mit den GPIO - Rechten des Raspberry Pi von python zu tun haben.

    Leider kenne ich mich hier noch überhaupt nicht aus. Ich will es natürlich verstehen lernen, aber ich denke im Moment ist das nicht primär mein Ziel. Daher frage ich wieder um Hilfe.

    Meine Frage:
    Wei kann ich Python die Rechte an GPIO geben? Muss ich das überhaupt um das Programm starten zu können?

    Wen im FHEM - Forum den genauen Vorgang der 18 Posts lesen will kann diesen Link folgen:
    [url=http://forum.fhem.de/index.php/topic,32369.0.html]FHEM Forum Beitrag von KBLc[/url]

    Mein lieblingssatt ist wohl:
    Wenn mir jemand helfen kann oder nur einen Tipp geben kann ist das für mich und mein Weiterkommen und lernen schon immer sehr wichtig und gut. Ich bin ehrlich dankbar über alle Hinweise.
    Vielen Dank

    Kai_Benjamin[/code]

  • Ich habe gesehen, dass Du das Python Programm im home von root liegen hast. Ich gehe davon aus, dass Du das evtl als root ertsellt hast und deswegen lässt es sich auch nur als root ausführen. Also Du musst dafür sorgen, dass der Benutzer, der FHEM ausführt auch berechtigt ist das Python Programm auszuführen. Nächstes Problem ist, dass Du wenn Du kein root mehr bist, nicht auf den GPIO zugreifen kannst, dann musst Du den GPIO vorher exportieren.

  • Kannst du bitte die Fehlermeldung mal posten?
    (das bitte immer machen!)

    Ansonsten wäre es auch hilfreich zu wissen wo das Script liegt und über welchen Benutzer das ausgeführt wird.... Ich Rate mal und tippe auf " www-data ", was der Standard Benutzer für WebServer wäre... Wenn dem so ist, dann vermute ich weiter das dieser Benutzer keine Rechte hat auf GPIO zuzugreifen. In dem Fall würde es vermutlich helfen den Benutzer der Gruppe gpio hinzuzufügen:

    Code
    sudo usermod -G gpio -a www-data


    Anschließend müsste der WebServer Dienst aber auch noch neu gestartet werden - hier weiß ich jetzt aber nicht welchen du verwendest?

  • Danke danke für die Hilfe.

    hier noch die gewünschten Infos.

    Zitat

    Also Du musst dafür sorgen, dass der Benutzer, der FHEM ausführt auch berechtigt ist das Python Programm auszuführen.


    Der Benutzer fhem hat root Rechte und ist sogar in der Gruppe "root".

    Zitat

    Nächstes Problem ist, dass Du wenn Du kein root mehr bist, nicht auf den GPIO zugreifen kannst, dann musst Du den GPIO vorher exportieren.


    Ich kann aus FHEM alle GPIOs mit dem FHEM verwenden. Ich kann eine LED einschalten und auch einen Taster verwenden. Aber leider kann ich kein Script aus Python starten. Ich habe auch keine Kontrolle darüber wie weit mein Befehl kommt, ob es daran scheitert, dass Python die LED nicht einschaltet oder gar schon vorher und gar nicht bei Python ankommt (womit ich dann vermutlich im falschen Forum gelandet wäre). Aber da haben wir im FHEM Forum versucht alle möglichen Fehler zu beseitigen bzw. alle Möglichkeiten auszuschöpfen um sagen zu können, dass hier der Fehler bei mir nicht liegt. Also muss ich irgendwas mit den Rechten und mit der LED1.py falsch gemacht haben.

    Wobei das Script lässt sich ja starten und funktioniert.

    Hier mal das Script:

    Code
    #!/usr/bin/env python
    import RPi.GPIO as GPIO
    import time
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(38,GPIO.OUT)
    for x in range(0,3):
        GPIO.output(38,True)
        time.sleep(1)
        GPIO.output(38,False)

    Die Fehlermeldung in FHEM ist die einzige die ich sehe und da steht immer nur

    Code
    -1

    mehr nicht.

    Herzlichen Dank nochmal

    Kai_Benjamin[/code]

    Einmal editiert, zuletzt von Kai_Benjamin (23. Januar 2015 um 14:43)

  • Du hast leider nicht beantwortet Wo das Script liegt - also der Ordner, das Verzeichnis, der Pfad

    Auch würde mich mal interessieren WIE du das Script manuell ausführst :huh: Bitte exakt angeben/posten! Den Befehl, nicht irgendwelche Beschreibung!

    Und wenn wir schon dabei sind poste auch mal bitte die Ausgabe des Befehls:

    Code
    id www-data
  • Ja, sorry, habe ich nicht gemacht.

    Hier der Ordner:

    /programme/led1.py

    Starten tue ich es mit:

    sudo python /programme/led1.py

    Das geht auch.

    Oder im Editor von Raspbian, das übrigens auch geht, mit "Run".

    Hier noch das gewünschte Ergebnis:

    Code
    pi@raspberrypi ~ $ id www-data
    uid=33(www-data) gid=33(www-data) Gruppen=33(www-data)
    pi@raspberrypi ~ $

    Vielen Dank

    Einmal editiert, zuletzt von Kai_Benjamin (24. Januar 2015 um 00:03)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!