mehrere Python script autostart

  • Hallo Leute,


    Ich versuche mehrere Python scripts über den Autostart (rc.local) mit zu starten.

    Diese Scripts sind ein shutdown-button und ein reset-button.

    Wenn ich diese scripts einzeln starte und teste machen sie was sie sollen, reboot oder shutdown, sobald die jeweilige taste gedrückt wird(gpio).

    Auch der Autostart funktioniert einzeln mit folgenden inhalt in der rc.local

    (sleep 10;python /home/pi/RetroPie/retropiemenu/Microplay/mpscript_reboot.py) &


    sobald ich den zweiten button im autostart hinzufüge rebootet mir das system in schleife, also er führt den reboot button aus obwohl ich ihn nicht drücke.

    hat jemand eine idee wo hier der fehler begraben sein könnte?



    liebe grüße Fredy

  • Hallo und Willkommen im Forum.


    Hast du das selbst geschrieben? (finde das verwendete GPIO Modul sehr untyptisch)

    Versuch mal beide Skripte zu vereinen


    Mach den ausführenden Befehl unscharf und lass dir Printausgaben in eine Datei schreiben und sieh was passiert

  • Hallo,


    also ich sehe jetzt keine offensichtlichen Fehler (aber viele veraltete Sache...) ... Also würde ich mal vermuten, dass warum auch immer der GPIO aus "reset" gesetzt ist - sonst würde der Reboot ja nicht ausgeführt werden...


    Gruß, noisefloor

  • Auch der Autostart funktioniert einzeln mit folgenden inhalt in der rc.local

    (sleep 10;python /home/pi/RetroPie/retropiemenu/Microplay/mpscript_reboot.py) &


    sobald ich den zweiten button im autostart hinzufüge rebootet mir das system in schleife, also er führt den reboot button aus obwohl ich ihn nicht drücke.

    Schreib mal in die rc.local vot exit 0


    sleep 10

    /usr/bin/python /home/pi/RetroPie/retropiemenu/Microplay/mpscript_reboot.py &

    /usr/bin/python /home/pi/RetroPie/retropiemenu/Microplay/mpscript_shutdown.py &


    Wenn das nicht hilft, solltest Du in den Logfiles den Verursacher (shell Script, oder Python Script) suchen. Das doppelte Laden von subprozess ist zur Fehlerbeurteilung auch nicht gerade hilfreich.


    Besser wäre natürlich, wenn Du aus beiden Schnipsels ein einziges Script baust.



    Servus !

    RTFM = Read The Factory Manual, oder so

  • danke für die vielen antworten


    es hat tatsächlich geholfen beide buttons in ein script gemeinsam zu geben, jetzt funktioniert es.... wieso die sich nicht einzeln ausführen lassen ist komisch aber jetzt geht es


    die gpio ports sind untypisch weil das script auf einer H3 Plattform(Orange/Banana Pi) läuft und nicht auf meinen RPI3


    des weiteren führe ich das script jetzt als crontab aus nicht in der rc.local

    wobei ich in rc.local getestet habe und dort funktioniert es jetzt auch!

    finde die Lösung mit crontab sauberer


    danke euch :thumbup:

    RPI3, Orange PI, Odroid XU4

  • Hallo,


    und wenn wir schon bei systemd sind: statt `reboot`und `shutdown` die entsprechenden `systemctl`Kommandos. Je nach Distro kannst du dir dann auch die Root-Rechte sparen.


    Und das Skript von Python 2 auf Python 3 umstellen, weil Python 2 in < 1 Jahre EOL ist.


    Gruß, noisefloor

  • dann werde ich mich einmal mit systemd befassen


    wusste nicht das die befehle auf python2 basis sind, ich kenne mich da ehrlich gesagt nicht so gut aus habe mir das aus dem internet zusammen gesucht.


    hast du vielleicht für mich einen link wo ich die befehle nachsehen kann damit ich weiß was ich umstellen muss.


    danke


    das script wie es jetzt ist im anhang

  • Hallo,


    Quote

    wusste nicht das die befehle auf python2 basis sind

    Anhand der She-Bang Zeie sieht man, dass das Python 2 ist.


    Ich denke, dass das Skript unverändert unter Python 3 läuft, WENN es das GPIO-Modul für Python 3 gibt. Von ich mal ausgehe. Du musst halt das GPIO Modul nochmal für Python 3 installieren. Das ist parallel zum Python 2 Modul problemlos möglich.


    Noch was zum Skript:

    • Die Variable `value_out` wird definiert, aber nirgends benutzt.
    • Die Funktion `run_cmd` gibt einen Wert zurück, der wird aber nirgends verwendet.
    • Der Ausdruck hinter den `if` Statements muss nicht geklammert werden.
    • Kommentare sollen _zusätzlich_ Informationen enthalten und nicht das beschreiben, was aus dem Code so wie so offensichtlich ist.
    • Kommentarzeilen werden mit einer # eingeleitet, nicht in 3-fache " gesetzt.


    Gruß, noisefloor

  • sry

    hier der code einfach leserlich :)


    run_cmd wird verwendet für den shutdown und reboot, siehe funktion run cmd

    das script hatte ursprünglich noch eine led mit reinprogrammiert das value_out muss ich noch herausnehmen


    die infos in den kommentaren waren schon wie gesagt code ist kopiert nicht selbst geschrieben nur angepasst

    kommentare habe ich angepasst auf# danke


    RPI3, Orange PI, Odroid XU4