Fernsteuern mit Apache2 - Problem

  • Hallo ,

    ich habe mir den neuen RASPI 2 zugelegt, über SemperVideo erfolgreich den Apache2-Server installiert und habe hinsichtlich GPIO-Fernsteuern innerhalb des WLAN da ein Problem, das ich mit dem alten RASPI nicht hatte:

    Mit meiner FIXEN RASPI-IP von xx.x.x.x bekomme ich zwar über xx.x.x.x/index.html Zugang zum Server, d.h., die Graphik ist da und die Meldung z.B. an.php oder aus.php kommt, aber am Ausgangspin 39, der dem GPIO-Port 21 entspricht, tut sich nichts. Der bleibt entweder auf 3.3V oder auf 0V.
    Die Rechte für an.sh und aus.sh habe ich im Verzeichnis /var/www/ mit sudo chmod +x an.sh auf executable geschaltet. In dem Verzeichnis habe ich allers drin, auch die Photos.

    Gebe ich nun in den Opera-Browser xx.x.x.x/index.html ein, kommt die Oberfläche mit den Schaltern, aber am GPIO rührt sich nix!
    Gebe ich am RASPI direkt ./an.sh oder ./aus.sh ein , funktioniert das Schalten am Pin 39 vom RASPI , also in dem Fall GPIO 21

    Wo liegt der Fehler?

    Noch etwas: Ich habe mir auch das neueste PiFace für den RASPI2 zugelegt. Damit komme ich mit der Fernsteuerung der Relais über Linux gar nicht zurande. Mit Python Null Problemo, aber wie geht das zum Beispiel über den Apache2-Server? Da brauche ich doch Linux-Befehle oder liege ich da verkehrt?

    Hier bitte 3 Screenshots von meinem Problem. sh, php und html

    Beste Grüße Gerhard und vielleicht kann mir jemand in der Not beistehen. Bin nicht mehr der Jüngsten einer und ausserdem in Linux bestimmt kein Schefe! ;)

    21780031rv.jpg

    21780030li.jpg

    21780032ci.jpg

    Achja, noch etwas: Warum kann man mit den Relais auf der PiFace-Karte nur 20V maximal schalten? Das bringt doch nichts, wenn man keinen Endverbraucher mit 220V schalten kann, weil man dann ja erst ein zusätzliches Relais braucht, oder?

    Viele Fragen auf einmal von einem weit über 60-Jährigem.

  • Ich muss mich korrigieren. Habe mich verschrieben. Es handelt sich natürlich nicht um den PIN 39, der ja GND ist, sondern um PIN 40.
    Habe auch schon andere GPIO-Pins versucht, zu schalten. Der Erfolg war ebenso negativ.
    Werde heute versuchen, Python-Befehle in ein Script-File zu packen. Vielleicht habe ich mit dem PiFace Glück im WLAN.

  • Vielen Dank für den Hinweis. Beide Dateien waren nur auf read gesetzt. chmod +x hat aber leider auch nichts gebracht. Die Graphik mit meinen Schaltflächen bekomme ich nach wie vor angezeigt , aber am GPIO rührt sich nichts. (Nur, wenn ich den Port mit den an - aus-Scripbefehlen direkt am Raspi anspreche.)

    Wie kann ich den Vermerk "erledigt" rückgängig machen?

  • Da bin ich anfangs auch reingefallen ;)

    Der Webserver wird als User "www-data" ausgeführt, und somit auch das Script als dieser User aufgerufen. Dieser User hat aber wahrscheinlich nicht die Berechtigung, die GPIOs zu bedienen (-> Stichwort sudoscript).
    In den Log-Dateien sollte dieser Fehler aufscheinen.

    Anfragen ausserhalb des Forums (Mail o.ä.) werden ignoriert!

  • Diesbezüglich konnte ich nichts finden, aber es gibt so Situationen, in denen man zeitweise im Kreis läuft. ;)
    Inzwischen habe ich etwas auf dem alten RASPI gefunden. Damit gehts einwandfrei, nur, die einfachste Lösung ist das auch nicht.

    21809542ek.jpg
    21809562hs.jpg

  • Wenn's funktioniert ist's gut.
    Wenn man's versteht, warum, ist noch besser.
    Eine Lösung mit einer Datei scheint mir weniger kompliziert, als eine Lösung mit mehreren Dateien.

    Was mir noch aufgefallen ist: Deine Scripte (aus dem 1. Posting) liegen anscheinend im Home-Verzeichnis vom User pi. Da der Webserver unter dem User "www-data" läuft und auch dieser User die Scripte aufrufen soll: Hat der User "www-data" die Rechte, diese Scripte im Home-Verzeichnis vom User "pi" zu lesen/starten?

    Und nochmal: Fehlermeldungen in /var/log/apache/error.log lesen!

    Anfragen ausserhalb des Forums (Mail o.ä.) werden ignoriert!

    Einmal editiert, zuletzt von digiart (5. Mai 2015 um 22:54)

  • Hallo,

    hab das ganze jetzt nur überflogen, aber:
    In der ersten Lösung schaltest du die Pins direkt, was vermutlich an fehlenden Rechten scheitert (www-data hat keine Schreibrechte in /sys).
    Bei der zweiten Lösung verwendest du das gpio-tool zum Schalten der Pins.
    Das gpio-tool benötigt keine besonderen Rechte um Pins zu schalten, weshalb das in diesem Fall vermutlich funktioniert.

    an.sh

    Code
    #! /bin/bash
    
    
    gpio -g mode 21 out
    gpio -g write 21 1
  • Zitat

    Deine Scripte (aus dem 1. Posting) liegen anscheinend im Home-Verzeichnis vom User pi.

    Ich habe die Dateien versuchsweise mal zwischendurch ins Home-Verzeichnis kopiert gehabt.
    Habe fast den ganzen Tag mit dem Problem verbracht. Ohne Erfolg. Es gelingt mir einfach nicht, eine Script-Datei von PHP aus aufzurufen.
    Das error.log bzw. das access.log sagen mir auch nicht viel.

    21825801jn.jpg

    21825800bv.jpg

    Wenn ich den Schaltbefehl direkt in die PHP-Datei schreibe, klappt alles bestens.

    21825799nj.jpg

    Damit könnte ich ja zufrieden sein, aber ich möchte die Python-Script-Datei verwenden, damit ich die PiFace-Relais schalten kann. Direkt auf dem Raspberry geht das mit der Datei ja auch.

    21825798jt.jpg

    Habe mich heute "durchgegoogelt", aber ich hatte mit nichts in der Richtung Erfolg und das frustriert etwas.[/quote]

  • Mir sagt dein error.log (schon in der ersten dargestellten Zeile): Permission denied
    wenn ich mir jetzt die Berechtigungen ansehe:

    Code
    ls -la /sys/class/gpio/export


    Bekomme ich die Ausgabe:

    Code
    --w------- 1 root root 4096 Apr 30 22:34 export

    Dies sagt mir, dass nur der User "root" diese Datei beschreiben darf.

    Deswegen musst das Script, das auf die GPIOs mittels echo schreiben soll, als User "root" ausgeführt werden (Stichwort "sudo").

    Anfragen ausserhalb des Forums (Mail o.ä.) werden ignoriert!

    Einmal editiert, zuletzt von digiart (6. Mai 2015 um 20:03)

  • Warum funktioniert das Fernsteuern des GPIO eigentlich hier so einfach? :

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Er legt die beiden Scripts an.sh und aus.sh in das Home-Verzeichnis, weist beiden +x zu und spricht sie über das PHP-Script mit shell_exec ('/home/pi/an.sh'); z.B. von /var/www aus an.

Jetzt mitmachen!

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