Autostart von Python-Script mit GPIO

  • [font="Calibri"]Hallo Rasp-Spezialisten,[/font]
    [font="Calibri"] [/font]
    [font="Calibri"]ich hab viel zu dem Thema hier im Forum recherchiert...[/font][font="Calibri"] [/font]
    [font="Calibri"]Auch wenn ich mit dem neuen Thema der Gefahr laufe, es wiederholt einzustellen, versuche ich es trotzdem, da ich noch nichts Hilfreiches zu meinem Fall gefunden habe.[/font]
    [font="Calibri"]Ich habe ein etwas kniffliges Problem zum Autostart eines Python-Scripts mit GPIOs.[/font]
    [font="Calibri"] [/font]
    [font="Calibri"]Zum Thema:[/font]
    [font="Calibri"]Ich habe mir eine PhotoBooth gebaut und soweit programmiert, dass das Python-Script das tut, was es soll. Soweit so gut.[/font]
    [font="Calibri"]Für den endgültigen Stand möchte ich es per Autostart starten.[/font]
    [font="Calibri"]In dem Script steuere ich über GPIO Lampen an und lese Taster ein, die das Programm steuern.[/font]
    [font="Calibri"] [/font]
    [font="Calibri"]Problem:[/font]
    [font="Calibri"]Das Script lässt sich über „sudo Python /Pfad/Script.py“ wunderbar starten und läuft einwandfrei.[/font]
    [font="Calibri"]Da ich das Script nicht jedes Mal über Maus und Tastatur händisch starten möchte, möchte ich es nach dem Reboot per Autostart starten.[/font]
    [font="Calibri"] [/font]
    [font="Calibri"]Aktuell habe ich diesen Autostart über ein .desktop File umgesetzt.[/font]
    [font="Calibri"]Ich sehe, sobald der Rasp hochgefahren ist, dass das Script gestartet wird (Fenster geht auf).[/font]
    [font="Calibri"]Danach bricht das Ganze ab und ist vorbei…[/font]
    [font="Calibri"] [/font]
    [font="Calibri"]Nach meinen bisherigen Recheren scheint es, dass beim Autostart anscheinend nicht mit Root-Rechten gestartet wird und dies zum Abbruch führt.[/font]
    [font="Calibri"]Die Lösung über rc.local und crontab (werden anscheinend mit Root-Rechten gestarten) funktioniert irgendwie nicht.[/font]
    [font="Calibri"] [/font]
    [font="Calibri"]Kann mir jemand helfen?[/font]
    [font="Calibri"]Ich freu mich auf ein paar Hilfreiche Beiträge.[/font]

  • Falls crontab nimm immer den "root" crontab mit


    Code
    sudo crontab -e

    der Aufruf von Python als automatischen Start wäre dann in der crontab ein reboot Eintrag, d. h.

    @reboot pfadzudeinerpython/python pfadzudeinemskript/Script.py

    sollte eigentlich gehen. Zumindenst klappt das bei mir so wunderbar.

    Einmal editiert, zuletzt von 4zap (20. Juni 2016 um 15:28)

  • ... ich hab mal genau das über "sudo crontab -e" eingegeben....
    Da tut sich beim reboot leider gar nichts....! Mein Script ist auch executable.
    Was könnte ich noch falsch gemacht haben?

  • Als was loggst Du Dich denn ein?
    Ich mache sowas alles als root. Startbefehl in die .bashrc und gut is.
    Die Kamera startet und bringt mir ein Preview auf einen kleinen 4,5 " Schirm.
    Dann starte und stoppe ich die Videos mit einem "roten" Knopf.
    Zugleich leuchtet eine LED als Kontrolle auf.

    Wenn unbedingt user PI habe ich das geregelt indem ich eine sudo su eingebaut habe.

    VM

  • Welche Autostart Möglichkeit für dich am besten geeignet ist hängt vom Script ab, je nachdem was das Script macht oder benötigt. Wenn es zB eine Desktopumgebung benötigt weil es dort ein Fenster öffnen soll, kannst du nicht crontab oder /etc/rc.local verwenden da die früher starten als LXDE.
    Wenn du es in den Autostart von LXDE gepakt hast, aber immer ein Terminal-Fenster auf geht, dann hast du den Autostart falsch eingetragen...

    Am besten du guckst mal hier: FAQ => Nützliche Links / Linksammlung => Autostart

  • ... ich hab bereits mehrer Autostart-Möglichkeiten getestet (.desktop, rc.local, crontab)...
    Mein Script lässt sich mit keiner Variante starten. Ich habe aber auch festgestellt, obwohl mein Script executable ist, dass ich es per Doppelklick (Execute oder Execute in Terminal) auch nicht startet.
    Ein Testscript, welches nur eine GUI mit Coutdown öffnet, lässt such mit der .desktop Variante Problemlos nach dem Reboot starten.
    Über crontab habe ich versucht das Testscript mal zu einer festgelegten Zeit starten zu lassen. Auch dies klappt nicht. Dabei sehe ich aber einen Eintrag im syslog... der auf den crontab hinweist. Trotzdem startet das Testscript nicht.

    Eine erste Idee war... über ein vorgeschaltetes Script mein eigentliches Script über "subprocess" zu starten. Was auch soweit funktionierte, dass es nach dem Fensteraufbau abgebrochen ist.
    Mit LXDE habe ich bisher noch nichts zu tun gehabt... ich werde mal recherchieren...

  • Guten morgen,

    ich hab es jetzt gelöst. Danke für die Hinweise.
    Über WiringPi habe ich die GPIO Ansteuerung aus dem Python-Script gelöst. benötigt keine root-Rechte zum Ausführen.
    Damit WiringPi die GPIO sauber verbindet, habe ich ein Shell-Scirpt geschrieben, welches in rc.local hängt und beim Starten ausgeführt wird.
    Diese konfiguriert die entsprechenden Ports für WiringPi...
    Klappt einwandfrei...

Jetzt mitmachen!

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