Taster entprellen

  • Hallo, ich nutze das Skript

    aus dieser Quelle um meinen Rpi4 herunterzufahren. Ich möchte diesen Taster entprellen. Dazu habe ich viele Hinweise auf z.B. GPIO.add_event_detect(shutdownPin, GPIO.BOTH, callback=interrupt_event, bouncetime=150) gefunden.


    Damit wird jedoch sofort ausgelöst und -dann- debounced.

    Ich möchte aber eine Wartezeit erfüllen, bis dann erst der Taster auslöst.

    Also erst wenn der Taster 5 Sek gedrückt wurde, soll heruntergefahren werden.

    Wie macht man das?


    Einfach weil mein Backofen beim Einschalten den Rpi ausschaltet, ohne dass ich es möchte... und ich nicht mit Kondensatoren und stärken PullUp Widerständen herumexperimentieren möchte. Der Taster hängt an einer verdrillten 50cm Leitung (= Antenne).

    • Official Post

    Du verwendest das veraltete Python2 aktuell ist Python3. Aktueller und benutzerfreundlicher als RPi.GPIO ist gpiozero.


    Für einen Shutdown-Button gibt es sogar schon ein fertiges Beispiel-Skript: https://gpiozero.readthedocs.i…ipes.html#shutdown-button, bei dem Du nur noch die GPIO-Nummer und die Zeit anpassen müsstet, die gedrückt werden soll.

  • Ok vielen Dank.

    Wäre diese Vorgehen für Dummies wie mich ausreichend?


    Erstellen des Autostart Scripts:

    Code
    sudo nano listen-for-shutdown.sh

    Inhalt:

    Rechte des Scripts:

    Code
    sudo mv listen-for-shutdown.sh /etc/init.d/
    sudo chmod +x /etc/init.d/listen-for-shutdown.sh



    Das eigentliche Shutdownscript:


    Code
    sudo nano listen-for-shutdown.py

    Inhalt der .py- Datei:

    Python
    from gpiozero import Button
    from subprocess import check_call
    from signal import pause
    
    def shutdown():    check_call(['sudo', 'poweroff'])
    
    shutdown_btn = Button(5, hold_time=5)       // PIN5 (GPIO3) + 5 Sekunden
    shutdown_btn.when_held = shutdown
    
    pause()

    Und dann die Rechte ändern:

    Code
    sudo mv listen-for-shutdown.py /usr/local/bin/
    sudo chmod +x /usr/local/bin/listen-for-shutdown.py



    Fertig?

    Edited 2 times, last by menotu ().

    • Official Post

    Vergiss das hier:

    Erstellen des Autostart Scripts:

    Code
    sudo nano listen-for-shutdown.sh

    Inhalt:

    Rechte des Scripts:

    Code
    sudo mv listen-for-shutdown.sh /etc/init.d/
    sudo chmod +x /etc/init.d/listen-for-shutdown.sh

    mit dem Startskript wieder! Das ist veraltet und eigentlich auch unnötig. Dafür reicht ein kleiner Eintrag in die Crontab.


    sudo crontab -e und ganz unten in eine neue Zeile

    @reboot /usr/local/bin/listen-for-shutdown.py eintragen.


    Wäre das was Du willst. Die GPIO-Nummer (3) ist gefragt, nicht die des Pin (5). ;)


    Verschieben des Skripts und ausführbar machen kannst Du das so wie in Deinem Beitrag #3.