[rc.local][python] Script funktioniert nicht (mehr)

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

    Bevor hier irgendwer n bösen Wink mit "frag google" oder "Forensuche benutzen" gibt:
    ICH HABE GEGOOGLET UND NICHT NUR HIER DIE FORENSUCHE BENUTZT!!!
    -Aber kein Lösungsweg hat funktioniert, bis ich letzten Endes das Gefühl hatte, das ganze System sei nun zugemüllt und ich kurzerhand die SD formatiert und das OS neu installiert habe...(Problem besteht aber weiterhin :""""()

    Um was gehts?
    -Ich wollte eine Boot-LED haben und hab daraufhin ein Script abgewandelt, was eigentlich für eine RGB Boot-LED war (ich wollte aber nur DuoLED)

    Zuerst einmal habe ich folgende Pakete installiert:

    Code
    sudo apt-get install python-pip
    sudo pip install rpi.gpio

    Dann habe ich das Script erstellt

    Code
    sudo nano /home/pi/boot_led.py

    Und darin dieses eingefügt:

    Danach noch ctrl+o zum speicher sowie ctrl+x zum Schliessen und das Script ausführbar gemacht

    Code
    sudo chmod +x /home/pi/boot_led.py

    Und das Script danach brav in die rc.local eingefügt

    Code
    sudo nano /etc/rc.local


    Inhalt:

    Dann wieder ctrl+o zum speicher sowie ctrl+x zum Schliessen und das Script getestet---PERFECT

    Nun ist es aber so:
    Das Script will einfach nicht mehr...nur die rote LED leuchtet und mehr nicht...und die würde auch ohne script so-oder-so leuchten
    In einigen Foren hab ich gelesen, man sollte mal die Option -e im rc.local-Scripts(?) wegnehmen oder den auszufürenden Befehl mal mit sudo am anfang schreiben oder den pfad anders schreiben...
    HAT ALLES NICHTS GEBRACHT

    Danach dachte ich mir dann "System ist eh zugemüllt und funktionieren tut auch nichts, dann kannst du jetzt auch alles neu machen"
    Gesagt, getan, aber siehe da: Script will trotzdem nicht...
    Ausser die zwei nötigen Pakete hab ich nichts anderes verändert oder irgendwo eingestellt

    Also fing ich wieder an zu testen:

    Code
    sudo python /home/pi/boot_led.py

    = Script funktioniert (rote LED geht aus und grüne fängt an zu pulsieren)

    Code
    sudo /etc/rc.local

    = Script funktioniert (rote LED geht aus und grüne fängt an zu pulsieren)

    Code
    pi@raspbmc:~$ ps -ef | grep python
    pi        1479  1467  0 22:00 pts/1    00:00:00 grep python
    pi@raspbmc:~$

    Nun die Frage:
    Wieso wird die rc.local beim booten nicht ausgeführt?
    Hat da irgendwer eine Idee oder Lösung?
    Gibt es eine einfache Alternative das python script anders ausführen zu lassen?

    Bin hier echt seit lletztem Donnerstag :D am verzweifeln :/

    Einmal editiert, zuletzt von SimonGleinert (24. Dezember 2014 um 22:04)

  • [rc.local][python] Script funktioniert nicht (mehr)? Schau mal ob du hier fündig wirst!

  • Da gab es diese oder letzte Woche schon mal einen Thread zu - hier - aber auch in allen anderen Threads dieser Art wird das selbe geraten:


    Vollständige Pfade nutzen!

    Also nicht nur den absoluten Pfad zum Script sondern auch für die Befehle die aufgerufen werden. Pfad zum Befehl herausfinden:

    Code
    which python

    Also nächstes:
    Du willst doch nur eine einfache LED nutzen oder nicht?

    Es wäre besser die benötigten 5 Zeilen selber zu schreiben anstatt irgendein fremdes Script zu zweckentfremden, zumal du dann eben nicht wie Horst vorm Wald stehst und nicht verstehst wie's nicht geht...

    Ausserdem: GPIO-14 und GPIO-15 werden standardmäßig für die Serielle-boot/debug-Konsole genutzt. Desweiteren haben diese Pins eine Sonderfunktion: UART
    Bevor du diese Pins also für etwas anderes, wie das Schalten und Walten von LED's nutzen kannst, musst du diese "Serielle Console" erst mal deaktivieren. Wie das geht steht > hier <


    In einigen Foren hab ich gelesen, man sollte mal die Option -e im rc.local-Scripts(?) wegnehmen oder den auszufürenden Befehl mal mit sudo am anfang schreiben [...]

    Das ist Quatsch. /etc/rc.local wird bereits als root ausgeführt. Was soll da also sudo noch zusätzlich dran verändern?
    Wer sowas rät sollte mal die man-page von sudo lesen :no_sad:


    Also fing ich wieder an zu testen:

    Code
    sudo python /home/pi/boot_led.py

    = Script funktioniert (rote LED geht aus und grüne fängt an zu pulsieren)

    Code
    sudo /etc/rc.local

    = Script funktioniert (rote LED geht aus und grüne fängt an zu pulsieren)

    Nun die Frage:
    Wieso wird die rc.local beim booten nicht ausgeführt?

    Wird es mit Sicherheit, nur sehe Oben. Die wahl der GPIO pins ist ungünstig.

    Gibt es eine einfache Alternative das python script anders ausführen zu lassen?

    FAQ --> Nützliche Links / Linksammlung --> Automatisches Starten von Scripte / Programme ( Autostart )

  • Hallo :))
    erst mal danke für die freundlich und vorallem flotte Antwort :):):)

    Also das Script habe ich von hier:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Bzw aus den Description:


    Viel verändert hab ich daran nichts, ausser die blaue LED raus und den GPIO Ausgang der grünen LED auf den GPIO Ausgang auf den wo die blaue wäre, gelegt (wegen dem Stecker)
    Warum ausgerechnet die GPIOs gewählt wurden, die du bemängelst, weiss ich nichtund überhaupt könnte ich niemlas ein Script in der Form selber schreiben (kann zwar gut basteln, aber scripten / linux ist absolutes Neuland für mich :(

    Code
    which python


    Habe ich ausgeführt und das Ergebnis dann mit in der rc.local eingefügt...ändert aber leider trotzdem nichts :""(
    (hätte mich auch ein bisschen gewundert, da ja alles funktioniert, wie es soll, wenn ich

    Code
    sudo /etc/rc.local

    im Terminal eingebe...oder macht es einen unterschied, ob es beim booten ausgeführt wird, oder vom User???
    Ausserdem hat es ja mal funktioniert, nur dann halt einfach nicht mehr :/

    Code
    Ausserdem: GPIO-14 und GPIO-15 werden standardmäßig für die Serielle-boot/debug-Konsole genutzt. Desweiteren haben diese Pins eine Sonderfunktion: UART
    Bevor du diese Pins also für etwas anderes, wie das Schalten und Walten von LED's nutzen kannst, musst du diese "Serielle Console" erst mal deaktivieren. Wie das geht steht > hier <


    Ich weiss jetzt nicht...soll ich mal der Anleitung in deinem Link folgen und/oder einfach nur die GPIOS wechseln? -Oder werden die vll doch gebraucht, damit die LED den dimm/glimm effekt hat?

    Nur um ganz sicher zu gehen, das die rc.local auch wirklich ausgeführt wird:
    Kann ich da nicht einfach einen Befehl reinschreiben, der irgendwas von /home/pi löscht oder da einen Order erstellt?
    Ich hatte da nur mal:

    Code
    mkdir /home/pi/0000Test &

    eingetragen, aber da wurde kein Ornder erstellt...bin mir allerdings auch nicht sicher, ob der Befehl so auch richtig ist?

  • Hast du denn nun nur eine einfache LED bzw 2 LEDs oder hast du eine RGB-LED?

    Vermutlich wird das einfachste sein andere GPIO-Pins zu verwenden, es spielt fast keine Rolle welche du da nimmst es sei denn du willst später auch welche mit Sonderfunktion verwenden wie UART, SPI oder I2C

  • Ich hab eine Duo-LED :)
    Mittlerweile konnte ich dank deinem Link zu den alternativen das Problem auch lösen...
    Mit der rc.local klappt es zwar nach wie vor irgendwie nicht (mehr), aber ich hab den Befehl
    [code] /usr/bin/python /home/pi/boot_led.py & [/code}
    einfach als init.d Script gemacht - nun funktioniert es wieder :))

    Nur mit den GPIOs bin ich mir noch unsicher...kann da irgendwas kaputt gehen, wenn ich das so lasse?
    Ich benutze den PI eigentlich nur für Raspbmc....nur hab ich den Pi + Festplatte in das Geäuse eines alten Cisco Routers gebaut und deshalb wollte ich eine Art Status LED haben :D
    (Ist aber noch nicht ganz final :p )

    Vielen Dank für deine Hilfe...später wenn ich am PC bin, werde ich das Thema als erledigt makieren :))

  • Falls es noch jemanden interessiert: Ich habe für mich einen Workaround gefunden.
    Ich lasse mein Script schlicht durch eine conf-Datei in /etc/init aufrufen. Als Vorlage habe ich hostname.conf genommen.
    Es sieht jetzt so aus:

    ...und es tut genau das. Zuverlässig.
    Ach ja: Wen das Shutdown-Script interessiert:


    Über LEDPin kann man abfragen, ob der raspBMC schon down ist. Pulldown am Eingang (4,7k) nicht vergessen. Der Shutdown-Puls (> 3s) ist Aktiv Low und sollte über eine Diode (Kathode zum Arduino) isoliert werden. Ansonsten wird der Pi gegrillt.

    Gruß
    ottO

    Einmal editiert, zuletzt von ottO54 (25. Mai 2015 um 21:19)

Jetzt mitmachen!

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