PHP/HTML und GPIO-Ausgabe

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Kann man die php-Seite und das py-Script parallel laufen lassen?

    Ja, indem das Python-Skript mit einem & am Ende der Aufrufzeile gestartet wird, aber das könnte zu Verhängnis werden, wenn dann 100mal das selbe Skript gestartet wird.


    Und wie schaffe ich es die LEd so lange eingeschaltet zu lassen, bis sie von einem anderen Script wieder ausgeschaltet wird?

    Dafür würde ich schon fast wieder RPi.GPIO statt gpiozero verwenden (es sei denn gpiozero "kann" mittlerweile auch den Pin aktiv zu lassen, nachdem das Skript beendet ist). Das Problem was ich hier sehe ist allerdings das Danach, also wenn der Browser nicht mehr benötigt wird oder was auch immer. Dann würde die letzte aktive LED für immer leuchten. Dafür müsste man sich noch etwas einfallen lassen. :conf:


    Vielleicht gibt es aber noch eine Lösung, an die ich gerade nicht gedacht habe.

  • Naja die Lösung wäre *ein* Python-Programm als Dienst zu starten dem man mitteilen kann welche LEDs er schalten soll. Dann muss man auch nicht von PHP aus was starten was www-data die Rechte gibt auf die GPIOs zuzugreifen.

    „Eat the rich — the poor are full of preservatives.“ — Rebecca ”Becky” Connor, The Connors

  • Hab nochmals darüber nachgedacht...


    - PHP schreibt in eine Datei auf welcher Seite es sich gerade befindet.

    - PHP startet bei jedem Aufruf per shell_exec() ein Bash-Skript, welches überprüft, ob das Python-Skript bereits läuft, wenn nicht, dann startet es dieses.

    - Das Python-Skript liest diese Datei aus und schaltet per https://gpiozero.readthedocs.i…ble/recipes.html#ledboard die entsprechende LED.

    - Ein weiters Bash-Skript im Hintergrund prüft periodisch ob der Browser noch läuft und wenn nicht, beendet es das Python-Skript per pkill.



    //Edit __blackjack__ Hat sich überschnitten... Oder so.

  • Hallo,


    bin zur Zeit nur am Handy, aber ich werf mal Flask in den Raum.



    Grüße

    Dennis

    🎧 Mein Auto springt, mein Toaster kocht, es zwickt mich im Genick. Meine Frau ist eingelocht, die Spülmaschine tickt. Meine Telefonapperat brüllt mich seit Tagen an, er ist schon lange abgestellt im Bett liegt Peter Pan. Die Uhr geht falsch, die Haustür singt, mein Spiegel schlägt zurück - Ich werde noch verrückt, was solls ich bin entzückt. Die Badewanne zieht nicht ab ihr glaubt nicht was ich seh' - Sie ist voll Himbeerengelee 🎧

  • flask waere sicher ein guter Ansatz.


    Alternativ ein Python-Server der Kommandos ueber einen Socket annimmt und sie ausfuehrt. Jede PHP-Seite schickt per Ajax einen Befehl fuer die Entsprechende LED an den Server.

  • Hallo zusammen,


    Erstmal vielen Dank für eure hilfreichen Antworten!


    Leider bin ich familiär bedingt ein Tage ausgefallen, aber das Problem und die Lust dies zu lösen ist nicht weg. :)


    Ich bin jetzt eine Woche nicht Zuhause und habe keinen Zugriff auf den Raspbi weil ich ihn nicht im Netzwerk habe und weil ich auch nur mein Smartphone mitnehme (vielleicht auch mein uralt-Laptop für Notfälle) und dort macht SSH oder VM keinen Spaß.


    Um das ganze nochmal besser zu erklären, habe ich das ganze mal öffentlich zugänglich gemacht.

    Dabei habe ich erstmal alles in html gemacht, damit Quelltext = Programmcode ist. :saint:


    Die Seite 0.html könnte ja den letzten LED-Ausgang auf LOW setzen und alle LED-Scripte beenden. So wäre sichergestellt, das die letze LED nicht ewig leuchtet. Eine LED wild ja dann erst wier mit der 1.html eingeschaltet.



    Was ich am ehesten Verstehe ist folgendes:


    1. Ich könnte in jede Datei folgendes einfügen:

    PHP
    <?php
        $pfad   = basename($_SERVER['PHP_SELF']);
        $inhalt = basename($pfad,".php"); // oder händisch eintragen
        file_put_contents("wobinich.txt", $inhalt);
    ?>

    2. Dann verließen sie ihn...


    Das ganze soll eine Art Erklärterminal werden und ist öffentlich zugänglich. Ich mache das ehrenamtlich weil die finanziellen Mittel begrenzt sind.


    Daher war meine Idee, ob ich nicht auf einen teuren und wartungsanfälligen Touchscreen verzichten und die die Navigation bzw. die Sprachausgabeper stattdessen per externe GPIO Taster steuern sollte.


    Aber spätestens da wäre dann auf jeden Fall Flask angesagt, oder?


    Vielen Dank auf jeden Fall bis hierher und viele Grüße

    fap