Selsames verhalten beim Steuern über Webseite

  • Ich habe mir mit Hilfe Euer und Googls Einträgen eine fast Funktionsfähige Webseite zum Steuern und zur Statusabfrage einer einfachen Anlage erstellt.

    Ich schalte über die Webseite ein Licht ein und aus, im Hintergrund laufen kleine php Skripte die die GPIO´s steuern, mit dem Webskript index.php

    schalte ich php Skripts mit Buttons an und aus. Die Statusabfrage und Anzeige mit einen png Bildchen ist auch in index.php enthalten.

    Nun das seltsame verhalten.

    Nach einem Neustart des Raspberry pi Zero W funktioniert die Steuerung des Lichtes über die Buttons, die Statusabfrage der GPIO´s nicht.

    Wenn ich nun mit der Android APP RaspController den Raspi anwähle, auf GPIO Steuerung gehe "ohne etwas zu drücken" funktioniert die Statusabfrage der Webseite

    solange bis ein Neustart des Raspi´s durgeführt wird.

    Anbei die index.php


    Vielleicht könnt Ihr mir helfen

    Ich danke schon mal im voraus

  • Dein Code verlässt sich darauf, dass jemand anderes die GPIOs aktiviert. Sonst ergeht er sich in wenig sinnvoller Fehlerbehandung, die du ignorierst.


    Du musst die GPIOs also irgendwo selbst initialisieren.

  • Hallo

    Vielen Dank erstmal für die schnellen Antworten.

    Ich habe jetzte die drei Ausgänge in der config.txt initialisiert "gpio=20,21,26=op,dh", leider ist das ergebnis das selbe.

    Ich kann schalten aber die Statusanzeige reagiert nicht.


    MfG Peter

  • Du weißt, dass $GPIO['21'] == 1 bei Wert GPIO nicht aktiviert. auf TRUE geht wegen Typ-Konvertierung?

    Besser wäre echtes Fehlerhandling wie schon angesprcohen

  • Hallo


    Dies "$GPIO['21'] == 1" ist ja nur eine Statusabfrage, ich weiß das der Zustand konvertiert ist.

    Von Fehlerbehandlung habe leider keine Ahnung, da muss ich mich erst durchs Web ackern.

    Aber hat das mit der fehlenden Reaktion vom Status zu tun?


    Gruß Peter

  • Ich weiss nicht genau, was die config.txt da macht, aber du benutzt das sysfs-GPIO-Interface, und da kann man per "echo $pinnummer > /sys/class/gpio/export" ueberhaupt dafuer sorgen, dass ein Pin verfuegbar ist. Und den dann auf die gewuenschte Funktionalitaet einstellen.


    https://www.kernel.org/doc/Documentation/gpio/sysfs.txt