LED Python stoppt nach Boot trotz Crontab

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Liebe Community


    Ich bin ein relativ neuer Raspi Bastler und bin gerade dabei, für meine kleine Tochter eine NFC Jukebox zu bauen. Funktioniert alles wunderbar soweit.

    Nun möchte ich aber einen Schritt weiter gehen und ein LED Lämpchen einbauen, welches leuchten soll sobalddie Jukebox läuft.


    Kurz: LED on Startup (kein Blinken nichts, nur dauerhaft brennen).


    Ich habe ein Python Script dazu geschrieben, welches soweit funktioniert sobald ich es manuell starte. Wenn ich es aber bei Crontab einfüge:


    Code
    @reboot sudo python /home/pi/led.py &

    Nach Reboot blinkt mein LED aber nur eine Sekunde, dann ist es wieder aus.

    Im Log-File steht keine Fehlermeldung.


    Ich habe auch weitere Autostart Varianten wie mit rc.local getestet, immer mit dem gleichen Ergebnis (LED aus nach 1 Sekunde)


    Hier noch mein led.py Script:


    Code
    import RPi.GPIO as GPIO
    import time
    
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)
    GPIO.setup(26,GPIO.OUT)
    print "LED on"
    GPIO.output(26,GPIO.HIGH)



    Könnt ihr mir vielleicht weiterhelfen? Woran könnte es liegen? Am led.py script? Oder an der Autostart-Variante?


    Ich bin fast am verzweifeln und möchte aber nicht aufgeben:)


    Jetzt schonmal 1000x Dank!


    LG Goa

    • Official Post

    Hallo goashu,


    willkommen im Forum! ;)


    Besser wäre das aktuellere gpiozero statt dem älteren RPi.GPIO zu verwenden.

    Python
    from gpiozero import LED
    from signal import pause
    
    led = LED(26)
    led.on()
    
    pause()

    Un wenns denn per Crontab gestartet werden soll, dann so:

    Code
    @reboot /usr/bin/python3 /home/pi/led.py

    Noch besser wäre dem Skript einen Shebang (In dem Fall #!/usr/bin/python3) mitzugeben und es ausführbar machen.


    //Edit

    Um Dein Problem noch zu erklären: Dein Skript läuft einfach durch, da keine Schleife oder Pause es unterbricht. Bevor Du nun die Pause von meinem Beispiel oben adaptierst, solltest Du wirklich gleich alles (gpiozero) kopieren. ;)

  • Hallo Hyle


    Vielen Dank für die sehr schnelle Rückmeldung.


    Ich habe alles gleich umgesetzt wie du beschrieben hast und vorher noch gpiozero installiert.


    Aber auch mit deiner Anleitung leuchtet das LED nur kurz, zwar länger als vorher (2-3 Sekunden) aber es geht wieder aus.



    Was könnte das wohl sein?



    EDIT:


    das LED leuchtet bis zum Ende bis komplett gebootet wurde. etwa wenn /etc/.rc.local und bei mir Mopidy music Server geladen sind.



    EDIT2:

    Was wenn ich das Python Script als Service ablegen und diesen dann beim Start lade? Wie bei der Phoniebox etc. die beim Start automatisch lädt?

    Edited once, last by goashu ().

    • Official Post

    Was könnte das wohl sein?

    Das ist eine gute Frage. :conf: Wird GPIO26 (Pin 37) noch anderweitig verwendet, z.B. von einer Soundkarte, Display o.ä. und/oder von einem anderen Skript (z.B. der Phoniebox) angesprochen?


    Was wenn ich das Python Script als Service ablegen und diesen dann beim Start lade?

    Versuchen kannst Du das ja mal.

  • Die LED ist an GPIO 26 (PIN 37) angeschlossen und am GND auf PIN 39 (mit Widerstand).


    Die LED funktioniert einwandfrei wenn ich das Python Script manuell ausführe. Die LED stoppt nie. Nur der automatische Start beim Booten ist das Problem.



    Soviel ich weiss, wird GPIO 26 nicht von Phoniebox verwendet.



    EDIT:

    ENDLICH!! Ich habe wie vorgeschlagen den GPIO gewechselt, bin nun auf GPIO 20 und plötzlich gehts auch mit dem rebooten.


    Boah bin recht froh darüber.


    Danke an alle Helfer!!!

  • Das wäre die Notlösung gewesen :)


    Ich habe die Jukebox in einen antiken Radio eingebaut, deswegen bin ich etwas limitiert bzgl. LED (wollte am Äusseren nichts verändern und ein LED slot war vorhanden bzw. hat gerade gepasst).

  • Nun habe ich ein weiteres Problem.


    Sobald ich die LED über Crontab aktiviere, funktioniert mein Sound über die HifiBerry DAC+ nicht mehr, obwohl HifiBerry diese GPIOs gar nicht verwendet.

  • Woher weißt Du, dass HifiBerry DAC+ die GPIOs (von welchen sprichst Du jetzt eigentlich) nicht verwendet?

    Also zuletzt war ja die Rede von GPIO 20.

    In folgendem Beitrag wird zumindest davon gesprochen, dass man den GPIO 20 nicht verwenden sollte:

    Pin 38: am RPi zumindest für I²S reserviert. Ich würde ihn für nichts anderes verwenden, wenn der HifiBerry verwendet wird...

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

    • Official Post

    Der Hersteller schreibt dazu:

    HiFiBerry DAC+, DAC+ ADC, Digi+ and Amp+

    GPIO2-3 (pins 3 and 5) are used by our products for configuration. If you are experienced with I2C, you might add other slave devices. If you a a novice, we don’t recommend this at all.

    GPIOs 18-21 (pins 12, 35, 38 and 40) are used for the sound interface. You can’t use them for any other purpose.

    On the HiFiBerry Digi+, GPIO16 is also reserved.

    On the HiFiBerry Digi+ Pro GPIOs 5 and 6 are also use and cannot be used for anything else.

  • Ihr könntet wiedemal recht haben :)


    Ich habe mir zwar die Pin markiert welche vom HifiBerry verwendet werden, aber nach dem Wechsel des Pins habe ich wohl etwas verwechselt.


    Ich werde demnächst GPIO16 testen, scheint frei zu sein.


    Vielen Dank wieder!

  • Ich habe jetzt GPIO16 und GPIO 25 getestet, leider ohne Erfolg. Die LED leuchtet zwar, der Sound ist wieder weg sobald Crontab aktiviert ist.


    Auch wenn die korrekte LED GPIO noch nicht zugewiesen wurde aber im Crontab nocht die alte aktiv ist, funktioniert der Sound nicht.



    Wenn ich Crontab deaktiviere geht ja der Sound. Wenn ich danach manuell das LED aktiviere über "sudo python3 led.py" funktioniert das LED und der Sound.


    1) Kann es sein, dass Hifiberry einfach beim Start irgendwie alle GPIOs benötigt, danach nur noch wenige?


    2) Kann man irgendwie das Python Script ausführen lassen, nachdem das System komplett hochgefahren ist und Hifiberry die GPIOs nicht mehr verwendet? Habt ihr Erfahrungen damit?

  • Ich habe jetzt GPIO16 und GPIO 25 getestet, leider ohne Erfolg. Die LED leuchtet zwar, der Sound ist wieder weg sobald Crontab aktiviert ist.


    Auch wenn die korrekte LED GPIO noch nicht zugewiesen wurde aber im Crontab nocht die alte aktiv ist, funktioniert der Sound nicht.

    Hast Du mal ohne jegliche cronjobs, Pythonskripte und Co einfach mal per Kommandozeile (z.B. über SSH) getestet, ob die LED-Ansteuerung dann mit denselben oder ohne Nebenwirkungen funktioniert?


    Einfach mit den folgenden Eingaben z.B. für GPIO 16:


    Code
    // Einrichten:
    echo "16" > /sys/class/gpio/export
    echo "out" > /sys/class/gpio/gpio16/direction
    
    // Anschalten:
    echo "1" > /sys/class/gpio/gpio16/value
    
    // Ausschalten:
    echo "0" > /sys/class/gpio/gpio16/value


    Für andere GPIOs entsprechend die Zahlen ändern.

  • Achso, noch eine Idee.

    Wie hast Du die LEDs angeschlossen?


    Geeigneter Vorwiderstand ist hoffentlich vorhanden?


    Ideal wäre zudem eine Ansteuerung per Transistor, um den Stromfluss über die GPIO Ports zu begrenzen. Ab einer Handvoll LEDs ist man da ruck zuck schon am Ende der Spec des Microcontrollers angekommen bzw. läuft Gefahr ihn zu beschädigen. Wenn da noch ein HifiBerry dazu kommt, ist es sicherlich noch enger.

  • Vielen Dank für die Inputs.


    Vorwiderstand ist da, LED gibts nur 1 und funktionieren tut es eigentlich.


    Aber das Problem habe ich nun gefunden: Crontab führt Scripts früher im Bootvorgang aus. Zu diesem Zeitpunkt hat wohl HifiBerry die GPIOs noch verwendet.

    Mit rc.local funktioniert nun der Sound sowohl auch das LED, da das LED später im Bootprozess aktiviert wird.


    Bin nun froh, dass auch das funktioniert.


    Ihr seid super, so macht es Spass noch mehr Dinge auszuprobieren, wenn man immer Hilfe bekommt! :)

  • Aber das Problem habe ich nun gefunden: Crontab führt Scripts früher im Bootvorgang aus. Zu diesem Zeitpunkt hat wohl HifiBerry die GPIOs noch verwendet.

    Mit rc.local funktioniert nun der Sound sowohl auch das LED, da das LED später im Bootprozess aktiviert wird.

    nein das problem ist, dass du jedes mal reservierte pins verwendest!

    ich werde demnächst GPIO16 testen, scheint frei zu sein.

    was steht denn in einem Beitrag weiter oben von hyle?!

  • ich habe 5 verschieden GPIOs verwendet die laut HifiBerry nicht von Hifiberry verwendet werden, alle nicht funktioniert mit Crontab, mit rc.local aber doch.