PHP/JavaScript/GPIO

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

    Ich arbeite momentan als blutiger Anfänger an einem Projekt mit meinem Raspberry Pi, ich möchte GPIO-Pins über Tastendruck ansteuern, da ich mir ein kleinen fahrenden Roboter bauen möchte. Habe schon lange am Script gebastelt und möchte Knöpfe haben, wenn man jetzt eine Taste drückt, soll per Javascript ein Button gedrückt werden, der ein PHP-Script ausführt und einen Pin anschaltet. Wenn ich die Datei als .php speicher, dann kann ich zwar die Buttons mit der Maus drücken und der Pin geht an, aber das Tastendrücken, also das Javascript funktioniert nicht. Wenn ich die Datei als .html speicher ist es genau umgekehrt, ich kann die taste drücken und es wird auch erkannt, da sich die URL ändert, aber es wird der Pin schaltet nicht.

    Vielleicht könnt ihr mir weiterhelfen bzw. habt ihr eine bessere idee um das Umzusetzen, das ich dann mit verschiedenen Tasten verschiedene Pins über den Browser steurn kann?

    lg und vielen Dank im Voraus

    Luca

  • FAQ --> Nützliche Links / Linksammlung --> Befehle über PHP mit root Rechten ausführen (sudo webscript)

    In dem Beitrag findest du am Ende auch Hinweise speziell für GPIO

  • Ja ich bin mir sicher. Die Rechte für /sys/class/gpio/ sind Eindeutig: Nur der Besitzer "root" oder Mitglieder in der Gruppe "gpio" haben Schreibrechte. Wie in dem verlinkten Beitrag beschrieben, läuft der Webserver über den Benutzer "www-data" welcher aber keine entsprechenden Rechte hat.

    Davon abgesehen benötigt das Konsolenprogramm "gpio" ebenfalls root-Rechte aber aus zusätzlich/anderen Gründen (/dev/shm).
    Es ist zudem ungünstig/langsamer über PHP ein Konsolenprogramm auszuführen. Das kann man lieber nativ in PHP machen. Es macht eigentlich auch kein Sinn den GPIO jedes mal erneut als 'out' festzulegen.
    Aber auch das leider weit verbreitet shell_exec(); ist Mist, da es zum einen keine Rückmeldung gibt ob ein Befehl erfolgreich war, also kein Exitcode behandelt, und zum anderen keine Zeilenweise Ausgabe anbietet sondern alles in nur einer "Zeile" packt...

    Zu deinem eigentlichen Problem:
    auch eine *.php Datei kann ganz normal HTML oder JavaScript behandeln. Nur eben als einzige auch zusätzlich PHP da das in der Webserver-Konfiguration so eingestellt ist.
    Besser wäre es wenn du das javascript innerhalb des head'ers deklarierst aber nicht im body aber vor allem nicht erst nach den Buttons... Eine Alternative zu dem wie du es macht hast wäre auch direkt beim Button ein "onKeyDown" Event einbaust, siehe dazu:
    http://www.w3schools.com/jsref/event_onkeydown.asp
    http://wiki.selfhtml.org/wiki/JavaScript/Event-Handler
    http://help.dottoro.com/ljlkwans.php

Jetzt mitmachen!

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