Programm Autostart

  • Guten Abend,


    ich habe schon einiges probiert, doch leider hat bisher nichts geklappt. Vielleicht kann mir ja jemand weiterhelfen.


    Mein Python Programm soll bei Systemstart gestartet werden, es enthält eine while Schleife mit einem print Befehl. Um genauer zu sein, möchte ich die Daten eines Temperatursensors auslesen und einfach nur auf den Bildschirm ausgeben, solange die Temperatur einen gewissen Wert nicht überschreitet. Wenn ich das Programm manuell starte, funktioniert alles einwandfrei.


    Mit sudo nano /etc/rc.local habe ich es probiert, laut Protokoll wurde es auch gestartet, aber man sieht leider nichts :(


    Ist es überhaupt realisierbar?


    Vielen Dank


    Michael

  • Auf welches Ausgabedevice soll das Programm etwas geben, wenn es dieses nicht kennt?


    Entweder, du stellt den PI auf "automatisch als User PI auf der Kommandozeile anmelden"[1] und packst dann das Programm, das gestartet werden soll, als letzten in die Datei ".bashrc" im Home des Users PI, oder du musst das Ausgabe-Device genau benennen.


    ----
    [1] einzustellen bei den Boot-Optionen, wen das Programm raspi-config aktuell ist.

    Selber denken,
    wie kann man nur?

  • Hallo,


    Mivi: du hast da einen Denkfehler drin - der Prozess beim Autostart macht ja nicht das, was du manuell machst.


    Abgesehen davon will man das, was du willst, auch normalerweise nicht - wer will denn seinen Rechner starten und der Rechner schmeißt einen mit irgendwelchen Ausgabe zu?


    Sauber wird das IMHO erst, wenn du in eine Logdatei loggst - dafür hat Python das Logging Modul. Die Daten kannst du dir dann im Termin z.B. mit `tail -f LOGDATEI` anzeigen lassen.


    Gruß, noisefloor

  • Es fehlt hier noch eine Erklärung:


    /etc/rc.local wird als Benutzer "root" ausgeführt, allerdings ohne Konsole (tty). Deshalb siehst du auf der Konsole des "pi" Benutzers keine Ausgaben. Ausserdem klingt das für mich so als würdest du die Desktopumgebung (LXDE) nutzen, die viel später gestartet wird als es bei /etc/rc.local der Fall ist, also auch deshalb ggf keine Ausgabe sichtbar.


    Fraglich ist also "wohin" du die Ausgabe haben willst. Du könntest das Script nämlich auch in einer virtuellen Konsole ausführen wohin du dich bei bedarf "einklinken" könntest. Das ginge mit zB screen oder tmux.

  • Vielen Dank für die Antworten!


    Tatsächlich nutze ich die Desktopumgebung. Ich erkläre euch mal was genau ich will:


    Ich habe in meiner Projektarbeit für die Uni ein automatisiertes Gewächshaus gebaut. Nun möchte ich es dem Prof vorstellen bzw wird er in Zukunft bei diversen Veranstaltungen das Projekt vorstellen. Am Raspberry Pi ist ein 3,2 Zoll Touchdisplay angebracht. Wenn ich das Vorführungsprogramm aufrufe, wird es nicht ausgeführt, da es nicht mit root Rechten ausgeführt wird (GPIO Freigabe verweigert). Die einzige Möglichkeit, die ich im Moment gefunden habe, zuerst Python starten, das Vorführprogramm aufrufen und dann starten. Das ganze ist aber auf diesem kleinen Bildschirm doch sehr umständlich. Deswegen die Idee mit dem Autostart. Lässt sich das irgendwie einfacher gestalten? Über Ideen wäre ich wirklich sehr dankbar :)


    EDIT: Das Vorführungsprogramm soll solange eine bestimmte Temperatur nicht überschritten wird, einfach nur die Temperatur anzeigen. Ich möchte keine zusätzliche Oberfläche programmieren, das sprengt leider den Rahmen des Projekts, wird aber vielleicht in Zukunft von anderen Studenten übernommen.

    Edited once, last by Mivi ().