Shell script mit GPIO funktioniert nicht aus rc.local

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

    anbei ein kleines Problem, welches mich zur Zeit in den Wahnsinn treibt:

    Ich habe "wiringpi" installiert und folgendes script geschrieben

    GPIO_Down.sh:

    Führe ich das Script im normalen Betrieb als User "pi" mit

    Code
    sudo /opt/scripts/GPIO_Down.sh &

    aus, klappt alles wunderbar - Das Script macht was es soll:
    Zunächst nichts aber sobald die Taste gedrückt wurde , fährt der RasPi runter und kann ausgeschaltet werden. :bravo2:

    Und nun das Seltsame: Füge ich in "/etc/rc.local" die Zeile

    Code
    /opt/scripts/GPIO_Down.sh &


    ein, dann kommt im Rythmus des Sleep-Befehls (Siehe oben) die Meldung er könne den GPIO - Command nicht finden. :wallbash:

    Ich hoffe Ihr könnt mir helfen - Danke vorweg!

    Gruß
    Raspierer

  • Shell script mit GPIO funktioniert nicht aus rc.local? Schau mal ob du hier fündig wirst!

  • Zunächst solltest du davon absehen das über ein bash Script zu realisieren. Dein Weg verballert ziemlich viel CPU Aufmerksamkeit (Last). Gehe lieber den Weg über Python und Interrupts

    Desweiteren muss die Datei Ausführrechte haben da du es direkt ausführst und den SheBang nutzen willst: chmod +x /opt/scripts/GPIO_Down.sh

    setup() ist in diesem Fall eigentlich quatsch-mit-sauce, du führst das eh nur ein mal aus.

    Warum du dafür wiringpi verwendest versteht ich zudem nicht wirklich. Darauf kannst du in bash auch verzichten und direkt die /sys/class/gpio/ Dateien ansprechen.
    Das könntest du zum Beispiel so machen:

    Spoiler anzeigen

    /etc/rc.local ist ebenfalls nur eine ausführbare Script-Datei. Alles was dort eingetragen wird muss vor dem exit 0 stehen.


    Aber wie gesagt empfehle ich dir unbedingt Python mit Interrupts zu verwenden, das belastet die CPU dann auch nicht so enorm. Mehr dazu (und auch Beispielcode) findest du zB hier: https://www.pi-supply.com/pi-supply-swit…-code-examples/

  • Hallo meigrafd

    danke für deine schnelle Response! :thumbs1:


    Zunächst solltest du davon absehen das über ein bash Script zu realisieren. Dein Weg verballert ziemlich viel CPU Aufmerksamkeit (Last). Gehe lieber den Weg über Python und Interrupts

    OK, Einverstanden. Werde Deinen Link unten mal probieren.


    Desweiteren muss die Datei Ausführrechte haben da du es direkt ausführst und den SheBang nutzen willst: chmod +x /opt/scripts/GPIO_Down.sh

    OK, werde ich mal versuchen!


    setup() ist in diesem Fall eigentlich quatsch-mit-sauce, du führst das eh nur ein mal aus.

    Wo du Recht hast, haste Recht! Wird gelöscht


    Warum du dafür wiringpi verwendest versteht ich zudem nicht wirklich. Darauf kannst du in bash auch verzichten und direkt die /sys/class/gpio/ Dateien ansprechen.
    Das könntest du zum Beispiel so machen:

    Spoiler anzeigen

    Werde diese Alternative versuchen und wirinpi wieder deinstallieren. Ein Byte auf dem Speicher jagt das Andere.


    /etc/rc.local ist ebenfalls nur eine ausführbare Script-Datei. Alles was dort eingetragen wird muss vor dem exit 0 stehen.

    Dass hatte ich allerdings schon so. Soo blöd war ich dann doch nicht. :D



    Aber wie gesagt empfehle ich dir unbedingt Python mit Interrupts zu verwenden, das belastet die CPU dann auch nicht so enorm. Mehr dazu (und auch Beispielcode) findest du zB hier: https://www.pi-supply.com/pi-supply-swit…-code-examples/

    Diese Version werde ich mir gleich mal ansehen. Unter Umständen werde ich eher diese Version bevorzugen als meine BASH Variante.

    Danke
    Raspierer

  • Abschluss:

    Habe ein wenig gegoogelt und bin auf folgenden Beitrag gestoßen.
    http://sanje2v.wordpress.com/2014/02/16/add…r-raspberry-pi/

    Klappt hervorragend. :thumbs1:

    Nur zwei Kleinigkeiten:

    a) Es ist für high-active Taster geschrieben. Soll heissen, für einen Taster der im gedrückten Zustand nach +3,3V durchschaltet und mit 10kOhm nach Masse gezogen ist. (Pull-Down). Wer es umgekehrt mag, muss den Code wie ich anpassen.

    b) Im Code den wiringPi und GPIO Pin genaustens angeben. Sonst klappt es nicht.

    Gruß
    Raspierer

Jetzt mitmachen!

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