Shell-Script über Datei öffnen

  • Hallo liebe Community,

    ich habe aktuell ein neues Projekt. Ich möchte bei einem bestimmten Ereignis eine Lampe in einem Haus einschalten.

    Diese wird normal über einen Taster an bzw. ausgeschalten (demzufolge über ein Relais).

    Nun habe ich mir eine Relaiskarte für den Pi 3 besorgt (RPi Relay Board von waveshare).

    Diese spreche ich über ein shell-Script an, mit folgendem Befehl:

    "sudo /home/pi/RPi_Relay_Board/shell/Relay.sh CH1 ON" und "sudo /home/pi/RPi_Relay_Board/shell/Relay.sh CH1 OFF"

    Nun wollte ich diese beiden Befehle in eine Datei packen, sodass ich diese über eine Website mit einem bestimmten Link öffnen kann.

    Dazu habe ich bereits einen Webserver auf dem Pi installiert. Mit diesen kann man sich auch nur im selben WLAN verbinden. Also von außerhalb kann keiner darauf zugreifen.

    Der Code in der Datei war folgender, damit klappt es aber leider nicht.

    PHP
    <?php
    exec ("sudo /home/pi/RPi_Relay_Board/shell/Relay.sh CH1 ON);
    header("Location:licht_an.html")
    ?>

    Weiß einer eine Lösung, wie es klappen könnte?

    Des Weiteren müsste diese Datei einmal das jeweilige Relais einschalten und nach ca. 1/2 Sekunde, das Relais wieder ausschalten. Also so, dass der Taster vorgegaukelt wird.

    LG

  • Die PHP Datei - aus dem Webserver aufgerufen - wird üblicherweise als User www-data exrkutiert.

    Für www-data ist die Substitution als User root ziemlich sinnbefreit (sudo ist beim aufrufenden User www-data wirkungslos). Wenn das PHP Script - ohne sudo - aus der Console des Isers pi funktioniert, so deshalb, weil der User pi Mitglied der Gruppe gpio ist und auf die GPIOs auch schreibend zugreifen darf.

    Servus !

    RTFM = Read The Factory Manual, oder so

  • Zitat

    Der Code in der Datei war folgender, damit klappt es aber leider nicht.

    PHP
      PHP
    <?php
    exec ("sudo /home/pi/RPi_Relay_Board/shell/Relay.sh CH1 ON);
    header("Location:licht_an.html")
    ?>


    Weiß einer eine Lösung, wie es klappen könnte?

    Da fehlt ein "

    Zu dem Sudo Problem, such mal nach hier im Forum nach sudowebscript vom User meigrafd

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Hallo,

    vielen Dank für eure Antworten.

    Ich hatte ein kleines Script im Internet gefunden, was ich mir auf meine 3 GPIO's anpassen konnte, die ich brauchte. Ich brauchte 20,21 und 26.

    Nun habe ich jedoch ein weiteres Problem, was mir jetzt erst auffiel.

    Das ganze System kann jetzt "einfach" nur den Befehl für "normally close" und "normally open" geben.

    Dazu habe ich mir noch eine Website gebaut, mit jeweils einen Button für "Licht an" und "Licht aus" (was ja normal quatsch ist, weil er ja sowieso nur den einen Impuls gibt...egal ob das Licht an oder aus ist)


    Wenn das Licht jetzt jedoch schon an ist, müsste der Pi erkennen, dass es bereits an ist und er dürfte den Impuls nicht mehr geben...weil wenn bereits jemand in dem Haus ist und dann auf einmal das Licht ausgeht...wäre relativ unproduktiv :D

    Ich hoffe man versteht was ich meine :)

    Leider weiß ich nicht, wie ich diese Abfrage programmieren kann. Das übersteigt mein Wissensstand und Kenntnisse. :(

  • Eine Boolean Abfrage (0 oder 1, aus oder an) sollte reichen. IF licht=0 THEN licht=1. Der Aktuelle Zustand der Lampe (an oder aus) in eine Variabel packen und Abfragen.

    Hallo,

    wie krieg ich das über das angeschlossene Relais des PI's heraus?

    Kann er jetzt mit meinen jetzigen Mitteln schon herausfinden ob das eigentliche Relais an ist oder nicht? Bzw. die Lampe.

    • Offizieller Beitrag

    Kann er jetzt mit meinen jetzigen Mitteln schon herausfinden ob das eigentliche Relais an ist oder nicht? Bzw. die Lampe.

    Werden die Lampen nur über den RPi geschaltet (per Relais über Website oder Taster) oder werden diese auch extern per Lichttaster o.ä. geschaltet, die nichts mit dem RPi zu tun haben?

  • Werden die Lampen nur über den RPi geschaltet (per Relais über Website oder Taster) oder werden diese auch extern per Lichttaster o.ä. geschaltet, die nichts mit dem RPi zu tun haben?

    Die Lampen werden auch mit einem externen Lichttaster geschalten, die fest im Gebäude verbaut sind (eben wie normale Lichtschalter^^)

Jetzt mitmachen!

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