Probleme beim Display automatisch starten

  • Hallo, bisher habe ich eher still gelesenen und probiert, aber leider komme ich jetzt nicht weiter.

    Ich bin noch ganz frisch im Thema und entsprechend unwissend.


    Worum es geht:

    Pi3 + 16x2 Display und DHT22


    Beides wird per start.py in phyton angesprochen und startet beim manuellem Aufruf der start.py. Somit kann ich die Temperatur und Luftfeuchte angezeigt bekommen.


    Jetzt habe ich versucht das ganze als Autostart hinzubekommen. Ich bin hierbei nach der Anleitung vorgegangen.


    https://tutorials-raspberrypi.…utostart-programm-skript/



    Allerdings fangen jetzt meine Fragen oder Probleme an.


    1. Pfadangaben die Start.py liegt im ordner "/home/pi/ Display-DHT"

    ist der Pfad so komplett angegeben oder muss davor noch ein "usr/ local" oder dergleichen eingeben?


    2. ich komme in der Anleitung bis zum Befehl:

    --> und testen das Skript indem wir es starten --> sudo /etc/init.d/NameDesSkripts start


    hier wird mir dann ein Fehler ausgegeben:


    pi@raspberrypi:~ $ sudo /etc/init.d/Display start

    Display wird gestartet

    /etc/init.d/Display: 16: /etc/init.d/Display: /home/pi/Display-DHT/Start.py: Permission denied


    die Freigabe über "sudo chmod 755 usw." hab ich vorher wie in der Anleitung aber gemacht.



    Könnt Ihr mir weiterhelfen und bitte so das es ein Anfänger versteht.


    Danke





  • Hallo Manfred,


    Erstmal: Willkommen im Forum!

    Ich sehe hier einige Probleme. init.d ist doch ewig veraltet. Oder welche Distribution verwendest du?


    Allgemein fehlen Informationen. Bitte lies' dir mal diesen guten Thread von Hofei durch: Wie Frage ich nach Hilfe?

    Die von dir verlinkte Seite kann ich nicht empfehlen, unter anderem weil sich die dortigen Anleitungen oft als Fehlerhaft oder schlecht erweisen. Autostart verschiedenster Python-Scripte wird hier und anderswo oft behandelt, such mal mit der Forensuche nach einer neueren Anleitung, in der Systemd oder die rc.local zum Einsatz kommt.

    1. Pfadangaben die Start.py liegt im ordner "/home/pi/ Display-DHT"

    ist der Pfad so komplett angegeben oder muss davor noch ein "usr/ local" oder dergleichen eingeben?

    Wenn dein Script dort liegt, musst du natürlich auch genau diesen Pfad angeben, allerdings musst du beachten, dass Leerzeichen im Pfad nicht ignoriert werden, aber unter Umständen Anführungszeichen erfordern!

    Absolute Pfade müssen mit einem / beginnen, den kannst du nicht einfach weglassen. Und ich gehe mal davon aus, dass die Leerzeichen nicht wirklich in den Pfaden sind, darauf unbedingt achten.

  • Hallo linusg

    Raspian ist in der aktuellsten Version installiert, direkt und ohne noobs oder dergleichen.

    Ich kann per Remote und ssh über putty zugreifen.

    Mit rc.local und in nano den Pfad angegeben, habe ich es auch schon probiert aber nicht hinbekommen. Läuft nicht und gibt auch keine direkte Fehlermeldung aus. Ob man es anders reproduzieren kann weiss ich leider nicht.

    Ich kann gerne einmal den Code kopieren, hab es mit verschiedenen Pfadangaben probiert aber ohne Erfolg.


    Wegen den Leerzeichen habe ich den Ordner extra mit Bindestrich benannt.

    Ich verstehe aber leider die Aussage nicht, ob ich jetzt noch etwas vor das /home/pi/ usw. setzen muss oder nicht.

    Hast Du einen passenden Thread für mich? Als Moderator hast du vermutlich die viel bessere Übersicht von guten funktionierenden Tutorials.


    Danke

  • Hast Du einen passenden Thread für mich? Als Moderator hast du vermutlich die viel bessere Übersicht von guten funktionierenden Tutorials.

    Allein die SuFu findet > 800 für "autostart python": https://forum-raspberrypi.de/s…ighlight=autostart+python

    Einen konkreten kann ich nicht empfehlen. Aber im Prinzip ist es ganz einfach:


    Du bearbeitest die Datei /etc/rc.local mit root-Rechten, z.B. mit sudo:

    Code
    sudo nano /etc/rc.local


    und fügst vor exit 0 folgendes ein:

    Code
    python3 /home/pi/Display-DHT/start.py &

    Oder python, oder python2, darüber hast du keine Auskunft gegeben. Wenn dein Shebang korrekt ist und das Skript mit dem Executable-Bit ausführbar gemacht wurde, kannst du die explizite Übergabe an einen Interpreter auch weglassen und nur den Pfad zur Ausführung nehmen.


    Fertig. Testen kannst du es, indem du im Terminal bash /etc/rc.local ausführst.

  • Danke erstmal linusG


    1. ob es jetzt python 1, 2 oder 3 ist, keine Ahnung. Öffnen und starten tu ich es mit Python2, daher vermute ich mal es ist 2. Es ist bisher reines Tutorial abarbeiten.

    Handybuch zum Pi und mehr Verständnis ist im Zulauf.


    Das kleine "&" Zeichen hat mir gefehlt. Jetzt geht es zumindest mit dem bash Befehl zu starten. Was bewirkt das "&" genau hier?


    2. Autostart als solches geht aber immer noch nicht. Nach dem Neustart muss ich den Befehl wieder ausführen.


  • 1. ob es jetzt python 1, 2 oder 3 ist, keine Ahnung. Öffnen und starten tu ich es mit Python2, daher vermute ich mal es ist 2. Es ist bisher reines Tutorial abarbeiten.

    1 bestimmt nicht, das ist seit über einem Jahrzehnt veraltet. Python 2 und 3 sind zur Zeit im Umlauf, wobei Python 3 stark zu bevorzugen ist. Tutorials, die noch für Python 2 sind solltest du ignorieren. Python 2 wird in einem Jahr und 9 Monaten keine Updates mehr erhalten und damit das selbe Schicksal wie PHP 5 erleiden, nämlich aus den Paketquellen fliegen. Allgemein ist Python 3 mächtiger, hat neuere Features und an manchen stellen weniger nervige Eigenschaften als Python 2.


    python und python2 starten standardmäßig einfach Python 2.

    Das kleine "&" Zeichen hat mir gefehlt. Jetzt geht es zumindest mit dem bash Befehl zu starten. Was bewirkt das "&" genau hier?

    Das schickt den Prozess in den Hintergrund, sonst würde die rc.local so lange warten, bis das Script beendet ist (ich denke, es kommt eine Dauerschleide zum Einsatz?)

    2. Autostart als solches geht aber immer noch nicht. Nach dem Neustart muss ich den Befehl wieder ausführen.

    Dann zeig uns mal bitte das Script. Das kann viele Ursachen haben: relative vs absolute Pfade, Umgebungsvariablen, die erst später verfügbar sind, etc. etc.

    Bitte auch die Ausgabe von which python.

  • gerne, hier ist die rc.local File.

    auf den which Befehl kommt:


    pi@raspberrypi:~ $ which python

    /usr/bin/python


    und hier das Skript was gestartet wird.

    Display ist über i2c/ SMbus angeschlossen. Also das Dingen wo nur vier Kabel hinten rauskommen.

  • also so jetzt richtig?


    Ja groß und Kleinschreibung habe ich auch schon gemerkt. Datei heisst "Start.py"


    Ändert aber leider noch nichts das es nicht automatisch startet.

    Pi mit Shutdown -h now und mit reboot -h neugestartet.

    Ich kann mich normal einloggen aber keine Displayanzeige ohne das ich den Befehl Bash...oder in python2 die Start.py ausführen muss.


    Konnte dir der python Befehl mit der Pfadangabe helfen?

    • Official Post

    . Ich war der Meinung, /usr/bin sei im PATH

    Ist es meistens, kann aber auch mal passieren das es nicht so ist.


    Leite die Ausgaben mal in ne Textdatei um

    /usr/bin/python2 /home/pi/01-Display-DHT22/Start.py >> /home/pi/error.log & und schau ob in dem File was nützliches Drin steht oder ob es überhaupt angelegt wird. Wenn sie angelegt wird, weisst du, dass dein Autostart funktioniert und er an was anderem stirbt. (was dann hoffentlich dem file drin steht)

  • Code
    pi@raspberrypi:~ $ ls -lah /etc/rc.local
    -rwxr-xr-x 1 root root 425 Mär 17 22:08 /etc/rc.local


    Ich verstehe davon jetzt null, aber ich mache einfach mal das was du/ihr sagt.

    Wenn Du magst kannst du mir ja sagen was das einzeln bedeutet.

    Edited once, last by Linus: Bitte Code-Blöcke verwenden! ().

    • Official Post

    print('Fehler beim Einlesen der Daten. Starte einen weiteren Versuch!')

    Freunde! Sieht das etwa nach Python2 aus? :geek:



    @Manfred.O Ändere bitte die Zeile in der rc.local in /usr/bin/python3 /home/pi/01-Display-DHT22/Start.py &


    //Edit: Ist das richtig, dass Du den Pfad (Beitrag #1) geändert hast, bzw. den Ordner /home/pi/Display-DHT in /home/pi/01-Display-DHT22 umbenannt hast?

  • Moin hyle mit python3 geht es nicht. Wenn ich python 3.5.3 starte und die Start.py lade wird mir ein Fehler bei der Ausführung gezeigt.


    Code
    Traceback (most recent call last):
    File "/home/pi/01-Display-DHT22/Start.py", line 3, in <module>
    import Adafruit_DHT
    ImportError: No module named 'Adafruit_DHT'

    Hingegen bei python2 startet das Skript problemlos.


    Ja den Pfad habe ich geändert gehabt.

    Edited 2 times, last by Linus ().

  • Hingegen bei python2 startet das Skript problemlos.

    Weil du das Paket nur für Python 2 installiert hast. Bei Python erfolgt die Installation dieser für jede Version individuell.


    Bitte gewöhne dir an, Code/Fehlermeldungen/Output auch als solchen zu formatieren. Oben im Editor der </> Button, dann ggf. mit einem Klick auf "Quellcode" die Sprache wählen. Ich habe deinen Beitrag bearbeitet.

  • Linus Wäre Befehl dann entsprechend:?

    Code
    git clone https://github.com/adafruit/Adafruit_Python3_DHT.git && cd Adafruit_Python_DHT
    sudo python3 setup.py install


    Also einfach die 3 dahinterstellen? oder noch anders?


    Danke

    • Official Post

    Das ändert doch nichts an dem Problem. Diese seltsame Diskussion um Python2 vs. Python3 führt hier zu keinen Ergebnis. Das Problem liegt nicht an Pythonversion, sonst würde es nicht manuell starten :shy:. Also erst das eine Problem lösen, nämlich den autostart, dann auf ne neuere Version umstellen (wenn es denn unbedingt sein muss)