Taster zum Einschalten, Reboot und Ausschalten

  • Moin Moin,


    Ich habe hier dieses Script bei "ct" gefunden :shy:


    (link):https://www.heise.de/ct/hotlin…d-Raspi-Zero-3892620.html


    mit dem man den Pi mit nur einem Taster zum Einschalten, Reboot oder auch zum Ausschalten bringt.


    Ich möchte aber dazu zusätzlich 2 LED´s betreiben, die mir das auch optisch bestätigen, da diese sowieso zur Temparaturanzeige vorhanden sind.

    Dazu soll eine grüne LED, angeschlossen an GPIO 7 (Board PIN 26) und eine rote LED an GPIO 8 (Board Pin 24) 3 mal blinken.

    Reboot -> 3 x Grün und Shutdown -> 3 x Rot.


    Meine Kenntnisse in Python sind für solche "Kombinationen" einfach zu gering.

    Evtl. kann man mir bei meinem Vorhaben ja helfen.:helpnew:

    Das "ct"-Script funktioniert prima auch auf dem "3B+" aber die "Boardeigene" LED blinkt NICHT!!!


    :danke_ATDE:

  • Welche und warum sollte die blinken? :conf:


    BTW: Was hast Du bisher versucht, Dein Vorhaben umzusetzen?

    Die von "ct" angeblich vorhandene LED (bin mir aber nicht sicher, ob es die überhaupt auf dem "3B+" noch gibt).


    Ich habe bisher die LED´s auf Lochraster verdrahtet und hiermit zum leuchte/blinken gebracht:


    Ja, ich weiß, geht warscheinlich anders und besser =O

  • Wie in aller Welt kommst du auf die Idee, dass time.sleep(2) eine halbe Sekunde wartet? Das sind zwei Sekunden. 0.2 ist eine Fünftelsekunde. :denker:


    Statt RPi.GPIO solltest du dir unbedingt gpiozero anschauen - macht vieles so viel einfacher und hat ein sehr schönes API.


    https://gpiozero.readthedocs.io/en/stable/recipes.html


    Eine LED blinken zu lassen ist somit in wenigen Zeilen Code geschehen:

    Python
    from gpiozero import LED
    from signal import pause
    led = LED(17)
    led.blink()
    pause()
  • Weder der Kommentar noch die Zahl ist falsch, die 2 Sekunden Pause sind gewollt !

    Aber das war ja nicht meine Frage, ich wollte ja nur wissen, wie und wo ich die zwei Funktionen „Tastendruck für eine bestimmte Zeit -> LED 3 mal blinken“ zusammen führen muss 🤔

  • Habe ich in #797 auch schon geschrieben, scheint Pieper nicht zu interessieren.


    Aber Danke für die Info, schaue ich mir am WE mal an.

    Leider hat sich dieses Forum irgendwie "verändert".

    Zum Zeitpunkt meines Beitrages 2014 (Hyperion Receiver Vorstellung und Danksagungen) wurde einem wenigstens geholfen und nicht angepöbelt, scheine hier wohl die falschen Leute gefragt zu haben. Tschuldigung !

    Edited once, last by Pieper ().

  • [Umgangsformen]

    Pieper , Hallo

    Habe ich in #797 (jetzt #4) auch schon geschrieben, scheint Pieper nicht zu interessieren.

    das Zitat von Linus stammt aus Beitrag #803 (jetzt #10). Du hast darauf nicht reagiert.

    2014 ... wurde einem wenigstens geholfen und nicht angepöbelt, scheine hier wohl die falschen Leute gefragt zu haben

    Unterlasse bitte solche allgemeinen Unterstellungen.

    Andeutungen sind schlechter Stil, spreche denjenigen an.

    Wenn du dich angegriffen fühlst, frage doch erstmal nach, um Mißverständnisse auszuschließen.


    Ein Minimum an Höflichkeit erleichtert den Umgang im Forum. Beiträge im Forum, schreibt keiner gegen Geld oder aus Langeweile, sondern um z.B. Dir zu helfen. Du hast keinen Anspruch darauf. Beantworte die dir gestellten Fragen. Bleibe immer höflich.


    Außer in deinem 1. Beitrag (#794 (jetzt #1)), vermittelst du nicht den Eindruck, Rat zu suchen.


    Genug gepredigt, kle

    [/Umgangsformen]

    Edited 2 times, last by kle: Beitragsnummern korrigiert ().

  • Dann will ich mal freundlich bleiben, um geholfen zu werden 8o


    So, habe mir die Gpiozero mal angeschaut und bin der Meinung, das man damit vieles vereinfachen könnte.


    Aber jetzt noch einmal meine Frage:

    In wie weit müßte ich dieses Script:


    Code
    from gpiozero import LED, Button
    from signal import pause
    led = LED(7)
    button = Button(4)
    button.when_pressed = led.on
    button.when_released = led.off
    pause()

    erweitern/verändern, um eine 2. LED an GPIO 8 mit dem gleichen Taster zur gleichen Zeit zum leuchten zu bringen.


    Ich habe nun schon viel Zeit im Netz geschaut, finde aber hierfür nicht den richtigen Ansatz, um mit einem Ereignis an einem GPIO zwei weitere Funktionen an verschidenen GPIO´s auszulösen.

    Klingt einfach, komme da aber einfach nicht drauf. :wallbash:

  • Klingt einfach

    ...ist es auch ;)


  • Wir nähern uns :conf:


    So bekomme ich die eigentlich richtige Fehlermeldung, das der GPIO 3 schon belegt ist.

    Wenn ich anstatt der zwei "shutdown" Zeilen dafür die vorletzte nehme, kann ich leider die vorgegebene hold_time von 1 nicht ändern (läuft aber leider ist der Tastendruck nicht zu kontollieren).


    Leider werde ich aus der GPIOZERO-DOC nicht schlau.:helpnew:

  • Hallo,


    Quote

    So bekomme ich die eigentlich richtige Fehlermeldung, das der GPIO 3 schon belegt ist.

    Richtig. Weil in Zeile 6 bindest du `button` an Pin 3 - darum kannst du das in Zeile 26 nicht nochmal machen, weil der Pin belegt ist.


    Quote

    Leider werde ich aus der GPIOZERO-DOC nicht schlau.

    Heißt konkret...? Was verstehst du wo nicht?


    Gruß, noisefloor

  • ?

    hold_time

    The length of time (in seconds) to wait after the device is activated, until executing the when_held handler. If hold_repeat is True, this is also the length of time between invocations of when_held.

    ?


    Jetzt nochmals mein Vorhaben:


    Am Raspberry ist 1 Taster mit einem Schließer an GPIO 3 angeschlossen.

    Mit diesem Taster kann somit der Pi bei vorhandener und nicht geschalteter Versorgungsspannung hochgefahren werden.


    Zudem soll dann im Betrieb dieser Taster zum reboot genutzt werden.

    Dabei soll bei einem Tastendruck bis zu 3 Sekunden eine grüne LED an GPIO 7........3-mal blinken und dann einen Neustart auslösen.


    Außerdem soll dann noch der Taster bei einem Tastendruck von über 3 Sekunden eine rote LED an GPIO 8 auch 3-mal blinken lassen und dann den Pi herunterfahren.


    Diese 2 LED´s sollen mir dann in naher Zukunft auch noch den Temparaturbereich der CPU Anzeigen, ist aber z.Z. noch nicht nötig (temparaturgesteuerter Lüfter vorhanden), aber aufgrund meiner Erfahrungen des Ambilight-Receiver´s (der schon 2 PI´s wegen Überhitzung gehimmelt hat :angel:), will ich diesen besser schützen.


    Sollte doch möglich sein?

  • Habe jetzt auf GitHub folgendes gefunden und schon einmal zumindest teilweise meinen Bedürfnissen angepasst :shy:



    Reboot wird zwar "noch" nicht berücksichtigt, aber sonst ganz brauchbar.