Hoch- und runterfahren mittels Taster (incl. Status-LED)

L I V E Stammtisch ab 20:30 Uhr im Chat
  • ich persönlich fänds auch gut wenn zumindest ein verweis auf die (zb) von meigrafd verlinkten Posts geben würde, und das es eben noch andere möglichkeiten gibt.
    tut keinem weh und schafft bessere übersicht.

    Aber man kann ja nicht alles haben :P

    meigrafd:
    meine raspi-blacklist.conf sieht wiefolgt aus:

    Code
    # blacklist spi and i2c by default (many users don't need them)
    
    
    #blacklist spi-bcm2708
    blacklist i2c-bcm2708
    blacklist snd-soc-pcm512x
    blacklist snd-soc-wm8804


    müsste also von der seite aus passen?

    Ich wüsste nicht, dass ich i2c mal aktiviert hätte..

    Weitere ideen? ^^

  • Hoch- und runterfahren mittels Taster (incl. Status-LED)? Schau mal ob du hier fündig wirst!


  • Kann es sein, dass es irgendwie Probleme gibt, weil ich ein Pi B rev2 habe? (Du vermutlich ein B+ oder 2 B)
    Auch wenn ich nur "GPIO.setup(5, GPIO.IN)" ausführe bekomme ich die selbe Meldung "RuntimeWarning: A physical pull up resistor is fitted on this channel!"


    Ich habe einen Pi B rev2 mit RASBMC und einen Raspberry Pi A+ mit Raspbian.
    Der B mit RasBMC funktioniert mit dem Script aus Post 1 ohne Probleme.
    Wenn ich den selben Code am A+ ausführe, kommt nach dem Starten auch diese Fehlermeldung. Sie wird in die Zeile wo man normalerweise den Benutzernamen rein schreibt geschrieben. Von der Funktion her Funktioniert der taster aber.

    Achso. I2c hab ich deaktiviert, aber eine Statusled ist nicht angeschlossen...

  • Hallo,

    ich habe versucht den Code zu ändern, damit der Pi erst nach längeren drücken des Tasters runter fährt.

    Nach dem starten kommt aber das:

    Code
    pi@raspbmc:~$ sudo python shutdown.py
    shutdown.py:6: RuntimeWarning: This channel is already in use, continuing anyway.  Use GPIO.setwarnings(False) to disable warnings.
      GPIO.setup(5, GPIO.IN)
    shutdown.py:6: RuntimeWarning: A physical pull up resistor is fitted on this channel!
      GPIO.setup(5, GPIO.IN)

    und nach 4-5 Sek. drücken fährt der Pi runter.
    Also der Code funktioniert, bringt aber eine Meldung.
    Wie bekomme ich diese Meldung weg und was sagt sie mir?

  • so, mein Pi 2 B ist heute angekommen.
    Habe eben das neueste Raspbian installiert, i2c nochmal überprüft -> ist deaktiviert

    habe bisher NUR folgende befehle ausgeführt:

    Code
    sudo apt-get update
    sudo apt-get install python-dev
    sudo apt-get install python-rpi.gpio


    also nur python und python GPIO installiert.

    Danach das Script ausgeführt:

    "Shutdown Script"

    und wieder kommt diese Warnung:

    Code
    pi@RealPi ~ $ sudo python /home/pi/shutdown.py
    /home/pi/shutdown.py:26: RuntimeWarning: A physical pull up resistor is fitted on this channel!
      GPIO.setup(shutdownPin, GPIO.IN, pull_up_down = PULL)

    Hat jemand eine Idee....?

  • LÖSUNG:
    Die Meldung mit dem pysical pull up resistor ist normal und geht auch nicht weg.
    Kann aber mit "GPIO.setwarnings(False)" ausgeblendet werden.

    das funktionierende Script:

    CPU last quasi nicht messbar (hatte zwischenzeitlich mal ein anderes Script das 20% load beim Pi 2 verursacht hat.. :lol:)

    Der unterschied ist, dass nicht

    Code
    if GPIO.input(shutdownPin) == GPIO.HIGH:


    sodern

    Code
    if GPIO.input(shutdownPin) == GPIO.LOW:


    abgefragt wird..... (Nicht HIGH, sondern LOW)

    Das wars auch schon.. Keine ungeplanten shutdowns mehr!

    • Offizieller Beitrag

    na den part kriegen wir doch noch schöner hin ;)

    [code=php]
    if GPIO.input(shutdownPin) == GPIO.LOW:
    for x in range(0,5):
    GPIO.output(ledPin, True)
    time.sleep(.1)
    GPIO.output(ledPin, False)
    time.sleep(1)
    call('poweroff', shell=False)[/php]

    • Offizieller Beitrag

    Noch schöner ist eigentlich
    [code=php]
    def blink(pin):
    GPIO.output(pin,GPIO.HIGH)
    time.sleep(1)
    GPIO.output(pin,GPIO.LOW)
    time.sleep(1)
    return
    for x in range(0,5):
    blink(ledPin)[/php]

    Zum anfang ist "Hauptsache funktioniert" ein guter Ansatz ;)

  • Da setz ich auch noch eins drauf :fies:

    [code=php]#!/usr/bin/python
    # -*- coding: utf-8 -*-
    #
    # v0.3 by meigrafd
    #
    import RPi.GPIO as GPIO
    import time, signal
    from subprocess import call
    #------------------------------------------------------------------------

    # use the raspi board pin number
    GPIO.setmode(GPIO.BOARD)
    # use the gpio number
    #GPIO.setmode(GPIO.BCM)

    shutdownPin = 5 # with GPIO.BOARD, pin#5 is gpio3
    ledPin = 7 # with GPIO.BOARD, pin#7 is gpio4

    # how often should the LED blink?
    blinkRepeat = 5
    # blink speed (sec)?
    blinkSpeed = 0.5

    #------------------------------------------------------------------------

    GPIO.setup(ledPin, GPIO.OUT)
    GPIO.output(ledPin, True)
    GPIO.setup(shutdownPin, GPIO.IN)

    def blinkLED(pin, speed):
    GPIO.output(pin, False)
    time.sleep(speed)
    GPIO.output(pin, True)

    def Interrupt_event(pin):
    if GPIO.input(shutdownPin):
    for x in range(0, (blinkRepeat + 1)):
    blinkLED(int(ledPin), float(blinkSpeed))
    #run command
    call('poweroff', shell=False)

    try:
    GPIO.add_event_detect(shutdownPin, GPIO.RISING, callback=Interrupt_event, bouncetime=150)
    #keep script running
    signal.pause()
    except (KeyboardInterrupt, SystemExit):
    GPIO.cleanup()[/php]

  • ...

    PS.: Sollte ich mit meiner Beschreibung zu detailliert sein und Dich durch die Erwähnung von Selbstverständlichkeiten "beleidigen", bitte ich das zu entschuldigen. Aber vielleicht findet jemand anderes diese Beschreibung interessant und hat nicht das nötige Vorwissen. :daumendreh2:

    Genau was ich gesucht habe! Werde ich mal testen... :danke_ATDE:

    Plan ist die Maustasten für folgendes zu nutzen: Reset / Shutdown / Script starten (bzw. beenden). Die LED der Maus würde ich auch gern nutzen und grundsätzlich ausschalten. -> Kennt sich jemand damit aus, ob ich das über den USB-Anschluss machen kann oder müsste ich den Controller der Maus ansprechen (dann hat sich das wohl erledigt...)?

    Ggf. möchte ich die (oder auch eine andere Maus mit Standardfunktionen nutzen) - die o.g. Befehle sollen also nur nach einer gewissen Zeit (Taste z.B. für 5 Sekunden drücken) ausgeführt werden und nicht bei Klick. Vielleicht liest das hier einer, der so etwas schon realisiert hat oder vielleicht als Anregung sieht...

    Mit fehlt das (elektronische) Wissen dazu, hoffe aber trotzdem mein Ziel mit eurer Hilfe zu erreichen!

    Einmal editiert, zuletzt von invalid (12. März 2015 um 10:31)

  • Du kannst den Lötkolben kalt lassen! Such nach der Software "triggerhappy", die macht nämlich genau das, was Du und ich gesucht haben: auf bestimmte Sequenzen der Maustasten benutzerdefinierte Aktionen ausführen.

    Da muss nichts gelötet werden, das ist "cool". ;)


  • Du kannst den Lötkolben kalt lassen! Such nach der Software "triggerhappy", die macht nämlich genau das, was Du und ich gesucht haben: auf bestimmte Sequenzen der Maustasten benutzerdefinierte Aktionen ausführen.

    Da muss nichts gelötet werden, das ist "cool". ;)

    Kannst Du mal ein paar Schnipsel aus Deiner config posten?! Hab ich doch richtig verstanden, dass Du auch "gedrückt halten" nutzt?!?

  • Hallo,

    ich bin noch ziemlich neu was den RPI angeht, und habe schon ein bisschen was ausprobiert!

    Ein HD44780 Display 20x4 habe ich schon erfolgreich angeschlossen und es funktioniert auch wunderbar!!

    Auf dem RPI nutze ich momentan die aktuelle Openelec/Kodi software. Jetzt hätte ich gerne noch einen An/Aus Taster!

    Einen Taster habe ich schon und es versucht nach der Anleitung hier im 1. Post nachzubauen!

    Leider sind jedoch die Ordnerstrukturen in Openelec anders wie bei Raspian oder ähnlichen!

    Kurz und bündig bekomme ich es nicht hin den Taster dazu zu bewegen das dass System heruntergefahren wird und auch wieder hoch!!!

    Desweiteren fand ich noch diese Anleitung Fehlende Resettaste

    Ich brauche dringend :helpnew:

    Vorallem wo muss ich das Script dann reinschreiben? Eine Autostart.sh habe ich auch schon erstellt!

    Vielen Dank schonmal für Antworten.

  • Ich bekomms nicht hin :(

    mein Phyton Script sieht folgendermaßen aus!

    das Script liegt im Ordner /storage/.config

    in meiner autostart.sh habe ich folgendes eingetragen

    Bash
    #!/bin/bash
    python /storage/.config/reboot.py

    Der Taster hängt an GPIO 15 sowie an 3,3V und GND!

    Was mache ich falsch!?!?!?!?!:denker:

    Mit deinem Script komme ich auch nicht wirklich zurecht! Ich möchte doch nur das der RPI auf Tastendruck hochfährt und wieder ordentlich runterfährt=(

  • Wenn dein Script wirklich SO aussieht wie mans im CODE-Block sieht, sollte klar sein dass das nicht funktionieren wird. Was soll der python Interpreter mit den ersten 5 Zeilen anfangen :s !!?!?!?!?!?!?

    GPIO-15 ist etwas anderes als GPIO-22 pin#15 :stumm:

    Das wurde hier auch schon super oft erwähnt:

    gpio.setmode(gpio.BOARD)
    Bezieht sich auf die Pin-Nummer der Platine! Wenn man also BOARD verwendet wäre gpio.setup(15, gpio.IN) nicht GPIO-15 gemeint sondern Pin-Nummer 15, was aber GPIO-22 entspricht!

    gpio.setmode(gpio.BCM)
    Bezieht sich auf die GPIO-Nummer wie es vom SoC kommt. Wenn man also BCM verwendet wäre gpio.setup(15, gpio.IN) tatsächlich GPIO-15 aber Pin-Nummer 10

  • Ahhh,

    also ich habe jetzt den PIN 15 = GPIO 22 genommen!

    mein Script schaut jetzt so aus

    Python
    #!/usr/bin/python
    # Datei /storage/.config/reboot.py
    import os, sys, time, RPi.GPIO as gpio
    gpio.setmode(gpio.BOARD)   # Pin-Nummern des P1/J8-Headers
    gpio.setup(15, gpio.IN)    # Pin 15 ist mit Reset-Button verbunden
    while 1:
      if gpio.input(15)==gpio.LOW:
        os.system("halt")
        sys.exit()
      time.sleep(0.3)

    ich habe es mit chmod a+x ausführbar gemacht!

    Aber es passiert immer noch nichts!!!!

    die Autostart.sh habe ich so gelassen

    Einmal editiert, zuletzt von matthias1609 (15. März 2015 um 12:01)

  • Wo siehst du was escaped'es :s

    autostart.sh hin oder her... Was soll das überhaupt sein? Das wurde in der Anleitung hier nicht beschrieben und ist kein normaler Bestandteil von Linux.

    Also, läuft das Python Script? Ja/Nein/vielleicht?
    Läuft das Script nicht, kann auch nichts schalten oder ausgeführt werden.

Jetzt mitmachen!

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