[PHP] Abfrage GPIO Eingang

  • Hallo zusammen,


    ich suche gerade nach einer Möglichkeit einen GPIO Eingang ohne viel aufwand auf änderung abzufragen.


    Also ich nutze folgenden Befehl:


    Code
    $val_gpio4 = trim(@shell_exec("cat /sys/class/gpio/gpio4/value"));


    in einer PHP Datei. Wenn ich mit einem Button arbeite liest er auch den Wert ein und speichert ihn in der variable.


    Meine Frage ist nun wie es hin bekomme das die Eingangsvariable automatisch abgefragt wird? Eine andere Frage wäre dann ob das ganze dann nur funktioniert wenn die entsprechende Seite geöffnet ist. Müsste ich dann andernfalls mit einem script arbeiten?


    Im prinzip will ich wenn ein Eingang gesetzt ist einen Ausgang setzen und dieses über die Weboberfläche bedienen.

  • Guck mal hier: http://www.forum-raspberrypi.d…rieren?pid=34791#pid34791
    An dem Code kannst du dich orientieren


    Um den Eingang immer wieder ab zu fragen musst du entweder die Seite immer wieder neu laden, oder AJAX nutzen



    Und ja, das PHP Script funktioniert nur wenn du es im Browser geöffnet hast, ansonsten müsstest du dir ein anderes Scipt schreiben zum Beispiel über Python, bash oder es ginge sogar PHP...

  • Habe mir mal dein Beispiel angesehen und ausprobiert. Bei mir funktioniert es nicht zu 100% die farbigen Punke funktionieren nicht und es aktualisiert nicht automatisch.


    Ich denke ich werde den weg über ein bash script gehen.


    Im pinzip erstelle ich ein script welches ich über einen button starte. Dieses fragt in einer Dauerschleife einen GPIO Eingang ab und setzt entsprechend einen GPIO Ausgang. Durch einen weiteren Button beende ich das scipt wieder.


    Meinst du das ist machbar? Denke ich zu kompliziert? Wird es Probleme mit der Dauerschleife geben?

  • Okay ich habe nun ein script zusammen gebastelt welches meine Anforderungen erfüllt.
    Ich habe jetzt das Problem das wenn ich es über den Webserver starten will, nichts passiert. Führe ich es manuell aus geht es.


    Es wäre auch kein Problem wenn es ständig im hintergrund läuft. Hat jemand ne idee warum ich es über den Webserver nicht starten kann?


  • Wegen meines GPIO webscripts: Die "farbigen Punkte" werden durch CSS erzeugt (<style>...), das muss bei dir eigentlich auch funktionieren :-/



    Entweder das Script ist nicht ausführbar oder der Webserver Benutzer www-data hat kein Recht die Datei auszuführen.. Prüf mal die Logdatei /var/log/apache2/error.log


    Bei deinem Script sehe ich aber noch evtl. ein Problem: was passiert wenn sich die Value des GPIO-4 pins wieder auf 0 ändert?

  • Die Rechte zum ausführen hat der Benutzer www-data. Ich hatte testweise nur "reboot" in die Datei geschrieben und das funktionierte auch über den Webserver. Ich habe kein apache2 installiert. Habe den lighttpd installiert. Im error.log sind aber keine Fehlermeldungen vorhanden.



    Nein das ist schon so in Ordnung das er GPIO23 nur auf 1 gesetzt werden kann und nicht wieder zuück auf 0.