Bildbetrachter feh funzt nicht wenn Py-Skript über rc.local gestartet wird

  • Moin Experten,

    ich habe mit Eurer Hilfe ein Mediabox gebastelt über die ich auf

    Knopfdruck 20 Audios und Videos über omx starten kann.

    Sinnvoll in Museen und bei Vorträgen.

    Jetzt habe ich noch die Präsentation von Bildern ergänzt.

    Wenn ich den Python - Skript über das Terminal Im Raspi starte.

    (Also nicht über ssh) Dann funktioniert alles prima.

    Wenn ich den Skript über rc.local aufrufe, funktionieren nur

    die Audios und Videos, bei der Bildershow bleibt der Bildschirm schwarz.

    Was kann man machen?? Danke im voraus !!

    Dete

    • Official Post

    Was kann man machen?? Danke im voraus !!

    Dete

    Das Skript per desktop-Datei starten.


    Ich hatte hier im Forum schon mal ein paar Beispiele verteilt und müsste auch erstmal suchen. Vielleicht bist Du damit ja schneller ich. ;)


    //Edit: Pythonscript in Terminal automatisch starten Muss natürlich angepasst werden und ggf. das Verzeichnis "autostart" noch erstellt werden.


    //Edit2: Evtl. funktioniert es auch mit einer Anpassung von lxsession: Chromium bzw Website beim Autostart hinzufügen

  • Moin Experten,


    zunächst herzlichen Dank für die Tips.

    Ich habe //Edit: Pythonscript in Terminal automatisch starten 

    komplett übernommen und test.py wird nach reboot im Terminal automatisch abgearbeitet

    und angezeigt.

    Mein Skript omx.py steht im selben Verzeichnis /home/pi/ wie test.py.

    Wenn ich omx.py im Terminal starte läuft's.

    in /home/pi/.config/autostart/test.desktop habe ich in der Zeile

    Exec=lxterminal -e /usr/bin/python /home/pi/test.py

    test.py durch omx.py ersetzt. Die Rechte wurden überall überprüft.

    Nach dem Neustart tut sich nichts.

    Die omx.py ist ziemlich umfangreich. Kann das eine Rolle spielen?

    Danke im voraus !!

  • Klar !! über die Hürde bin ich schon vor langer Zeit gesprungen:)

    Wie schon angedeutet, das kleine Programmchen Test.py wird im Terminal gestartet, mein

    "richtiges" omx.py aber nicht, obwohl es OK ist. Rechte und Pfade sind gleich.

    Es tut sich nichts. Selbst das Teminalfenster geht nach reboot bei omx.py nicht auf. ;(

    • Official Post

    Soweit hab ich das verstanden, aber zeige uns bitte trotzdem die omx.py und die desktop-Datei bitte auch. Evtl. fehlen absolute Pfade oder es ist in Python3 geschrieben, aber Du startest das ja mit Python2 usw.

    Übrigens kannst Du die desktop-Datei auch auf den Desktop verschieben und per Doppelklick auf Funktion testen. Damit fällt in der Testphase das ständige Ab- und Anmelden weg.

  • Moin Experten,


    zunächst wieder herzlichen Dank für die sehr konstruktiven Tips.

    Zunächst habe ich zwei .desktop- Dateien erzeugt und im Verzeichnis

    Desktop abgelegt. Bei mir heißt das Schreibtisch, was wohl keine Rolle spielt.

    Wenn ich mit der Maus auf die test.desktop- Datei klicke, läuft dieser "Testzähler"

    test.py im Desktopkfenster sauber los.

    Nachdem ich die shebang- Zeile ergänzt habe, tat das auch die omx.py. :)

    wenn ich auf omx_start.desktop geklickt habe.

    Der Anfang der omx.py sieht nun so aus:


    #!/usr/bin/python

    # -*- coding: utf-8 -*-

    #2018-10-05 Not-Aus-Funktion ergaenzt

    #2018-12-01 Pausetaste eingefügt

    #2019-05-19 automatsches lesen der Dateinamen vom Stick

    #2019-05-21 Aktivierung Bildpräsentation


    import RPi.GPIO as GPIO

    import os

    i............

    Ich hoffe, meine #Notizen stören an der Stelle nicht.


    So, jetzt schnell die omx_start.desktop nach ~/.config/autostart schieben und die Sache ist geritzt.

    dachte ich .......

    Er tat's aber nicht.;(

    Wenn ich in omx_start.desktop


    [Desktop Entry]

    Type=Application

    Name=omx_Auto

    Comment=Terminal Autostart omx

    Exec=lxterminal -e /usr/bin/python /home/pi/omx.py

    #Exec=lxterminal -e /usr/bin/python /home/pi/test.py

    Terminal=true


    .... die Exec-Zeile die mit omx.py endet, auskommentiere und

    test.py "scharf schalte", wird die test.py beim reboot wieder sauber im Terminal

    gestartet. Irgendwo scheint noch ein Problem zu sitzen.

    Fragen:

    a) spielt der Name der .desktop- Datei in ..../autostart keine Rolle?

    b) gibt es ein tool. was mir sagt, wo der Raspi Probleme hat und deshalb abbricht.

    c) muß ich eventuell einen verzögerten Start einbauen?


    Mir ist so, daß wir nicht mehr sehr weit von der Lösung entfernt sind!

    Für zweckdienliche Hinweise im Vorraus Danke !!!!

    • Official Post

    a) spielt der Name der .desktop- Datei in ..../autostart keine Rolle?

    Nein, der ist egal.

    b) gibt es ein tool. was mir sagt, wo der Raspi Probleme hat und deshalb abbricht.

    Evtl. steht etws in den Logs. In welcher Datei genau kann ich nicht sagen. Vielleicht hat RTFM eine Idee.

    c) muß ich eventuell einen verzögerten Start einbauen?

    Nein, in diesem Punkt sollte bereits alles Nötige geladen sein.


    Mir ist so, daß wir nicht mehr sehr weit von der Lösung entfernt sind!

    Das geht mir auch so und ich tippe immernoch auf fehlende absolute Pfade in der Datei omx.py.

  • Wenn ich schon so direkt angesprochen werde: Möglicherweise ist das Autostartverzeichnis nicht ~/.config/autostart/, sondern tiefer innerhalb des Display Managers.


    Und manchmal gib es auch eine systemweite Autostartmöglichkeit unter /etc/DisplayManagerName/....


    Sabald eine für den User les- und ausführbare Datei die Endung .desktop trägt und im richtigen Autostartverzeichnis liegt, sollte sie auch ausgeführt werden.


    Es gibt mehrere Displaymanager für Linux, die meisten starten mit xdm, oder gdm.



    Servus !

    RTFM = Read The Factory Manual, oder so

    Edited once, last by RTFM ().

    • Official Post

    ~/.config/autostart/

    Ich bin mir ziemlich sicher, dass das Verzeichnis richtig ist, natürlich soweit ~/ tatsächlich vom später ausführbaren User verwendet wird.


    Sobald eine für den User ... sollte sie auch ausgeführt werden.

    Genau das wundert mich hier eben auch. :conf: Hast Du vielleicht eine Idee, in welcher Logdatei eine Fehlermeldung zu finden wäre? Ich bin da gerade ehrlich gesagt etwas ratlos.

  • /var/log/syslog oder Xorg.0.log

    Wenn das Autostartverzeichnis nicht richtig ist, wird gar kein Fehler ausgegeben.


    Gibt es da (distributionsabhängig) nicht auch sowas wie

    ~/.config/xdg/../../autostart/

    ~/.config/lxde/../../autostart/

    ~/.config/lightdm/../../autostart/

    ~/.config/gdm/../../autostart/


    Und manchmal gibt es auch eine Autostart Datei zum Eintragen von Shell Scripten.


    Servus !

    RTFM = Read The Factory Manual, oder so

    • Official Post

    Gibt es da (distributionsabhängig) nicht auch sowas wie

    ~/.config/xdm/../../autostart/

    ~/.config/lxde/../../autostart/

    ~/.config/lightdm/../../autostart/

    ~/.config/gdm/../../autostart/

    Wird ja alles nicht genutzt. ;)


    Und manchmal gibt es auch eine Autostart Datei zum Eintragen von Shell Scripten.

    Welche meisnt Du? (War nur ein Spaß! :lol:)


    Btw. Xorg.0.log könnte in die richtige Richtung gehen. :conf:

  • Prima !! vorerst Danke

    ich werde zunächst in die test.py, die ja funktioniert, einen Pfad so einbauen,

    wie er ín der omx.py verwendet wird und gucken ob dann "abkotzen angesagt ist".

    Ansonsten versuche ich es mit einer anderen Variante von Autostart.

    Ich werde jedenfalls berichten !!!

    Bis denne !!

  • so , ich habe aus meiner omx.py eine Zeile in die test.py eingefügt

    und schon funktioniert der Autostart nicht mehr.

    #!/usr/bin/python3

    import time

    i=0 aud01 = os.path.isfile('/media/pi/STICK/RAS/01.mp3')

    while True:

    print("test",i)

    i+=1

    time.sleep(2)


    Wie ist das mit den relativen und absoluten Pfaden??

    Danke im vorraus.

  • Gute Idee ! Mit den Pfaden scheint es nichts zu tun zu haben. Wenn aber GPIO-Befehle in der omx.py eingebaut sind,

    startet die omx.py nicht bei reboot.

    Allerdings läuft es, wenn ich die (selbe) Desktop-Datei auf dem Desktop anklicke.


    Habe jetzt sudo eingebaut .....

    Exec=sudo lxterminal -e /usr/bin/python /home/pi/omx.py

    bringt aber auch nichts.


    Gute Nacht ....... vielleicht fällt mir im Traum noch etwas ein :)

    • Official Post

    Hab mal ein bissel rumgespielt...

    Code: *.desktop-Datei
    [Desktop Entry]
    Type=Application
    Name=FEH_OMX_Test
    Comment=Terminal Autostart Test
    Exec=lxterminal -e /home/pi/feh_omx.py
    Terminal=true


    Python: feh_omx.py
    #!/usr/bin/python3
    import shlex
    import subprocess
    
    fehstart = "feh -r /home/pi/Pictures -ZFD 2"
    omxstart = "omxplayer /home/pi/Desktop/Knorkator.mp4"
    
    #cmd = shlex.split(omxstart)
    cmd = shlex.split(fehstart)
    subprocess.run(cmd)

    Je nachdem welches cmd auskommentiert wurde startet FEH eine Diashow oder OMX das Video Böse nach dem Systemstart. ;)


    //Nachtrag: Fast vergessen, feh_omx.py wurde natürlich ausführbar gemacht.