python skripte automatisch starten lassen nach Uhrzeit

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Moin moin :)

    zu Beginn einmal: Ich bin wirklich schlecht im Thema programmieren und kenne mich noch so gut wie gar nicht mit python aus...

    Ich habe vor einiger Zeit ein LED matrix display bestellt, alles an meinen Pi 4 b angeschlossen und mir eine Uhr Anzeige programmiert (ehrlich gesagt ausm Internet kopiert). Ich möchte jetzt aber gerne, dass die Datei clock.py automatisch bei einer bestimmten Uhrzeit angeht und dann wieder ausgeht, z.B. zwischen 10 & 22 Uhr.

    Freue mich über jede Antwort :)^^

  • python skripte automatisch starten lassen nach Uhrzeit? Schau mal ob du hier fündig wirst!

  • Suche doch mit der Suchmaschine deines vertrauens mal nach cronjob.

    Und wenn Du keiner Suchmaschine vertraust, oder das Internet kaputt ist, verwende die in Linux eigebaute, und stets aktuell gehaltene Systembeschreibung (aka man.pages) mit z.B. < man 5 crontab >, < man 1 crontab >, < man cron >.

    Servus !

    RTFM = Read The Factory Manual, oder so

    • Offizieller Beitrag

    Ich tippe eher auf den nicht vorhandenen Shebang und / oder der nicht vorhandener ausführbarkeit des Skriptes. Das könnte man allerdings kompensieren, indem man den Interpreter python, bzw. python3, durch ein Leerzeichen getrennt, vor den Skriptpfad setzt.

    • Offizieller Beitrag

    Ich weiß aber nicht wie ich sie dann zu einer bestimmten Uhrzeit wieder beenden lassen kann.

    Indem Du z.B. mit

    Code
    0 10 * * * pkill -f skriptname.py

    um 10 Uhr den Prozess beendest.

    //Edit

    Möglicherweise sind root-Rechte dafür nötig. Nur um das noch erwähnt zu haben.

  • Danke es klappt. Mir ist aber gerade aufgefallen, nicht so wie ich es brauche xD Das Display soll nämlich komplett leer sein. Hier wird die Uhr quasi nur angehalten und steht still...

    Meine Idee ist eine neue Datei zu erstellen, wo das Display einmal komplett gecleart wird und die dann zu starten. Bin mir nur nicht sicher, was in die Datei rein muss

  • Hallo,

    wenn das Python-Programm beendet ist, sollen alle LED's aus sein?

    Kannst du uns dein Programm mal zeigen? Füge es aber bitte mit den richtigen Einrückungen in Code-Tags ein. Das ist der </>-Button.


    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

    • Offizieller Beitrag

    Füge mal ganz unten an das Ende der Datei noch folgende Zeilen ein:

    Python
    finally:
        Uhr.close()
        Uhr.join()

    //Edit: @XMoritz004 Die print-Zeilen habe ich noch raus genommen, die können weggelassen werde.

  • Hallo,

    wenn du die Funktion 'close' ausführst, wieso sollte sich das Display dann leeren? Diese Code-Zeilen fehlen dir und dann klappt das auch. Durch 'Strg+c' beendet sich zwar dein Thread und du setzt mit 'close' zwei Namen auf False, aber mehr nicht. Irgendwo muss in den 'finally'-Block noch eine Funktion ausgeführt werden, die das Display leert.

    Grüße

    Dennis

    Edit: Du verwendest diese Bibliothek ? Dabei hast du 'max7219' importiert. Wenn du dir den Quellcode anschaust, kannst du eine Funktion 'hide' erkennen, die hat folgenden Inhalt:

    Code
        def hide(self):
            """
            Switches the display mode OFF, putting the device in low-power
            sleep mode.
            """
            self.data([self._const.SHUTDOWN, 0] * self.cascaded)

    Willst du, dass das Display ausgeschaltet wird? Dann würde ich mal versuchen diese Funktion aufzurufen. Dazu änderst du dein Code-Ende so ab:

    Code
        except KeyboardInterrupt:
            print("Die Uhr wird ausgeschalten")
        finally:    
            Uhr.close()
            Uhr.join()
            max7219.hide()

    Dann kannst du das ganze mal bitte testen, wenn du deinen Code manuell, ohne Cronjob, startest und ihn wieder mit Strg+c abbrichst.

    Wie es in deinem anderen Thema schon von hyle steht:


    Dann wäre 0 10 * * * pkill -SIGINT -f skriptname.py besser geeignet

    Ohne '-SIGINT' wird dein 'finally' nicht abgearbeitet.

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

    Einmal editiert, zuletzt von Dennis89 (4. April 2021 um 21:22)

  • ps915 2. Februar 2024 um 20:17

    Hat das Label RPi 4 hinzugefügt.

Jetzt mitmachen!

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