Timelapse bricht oft kurz nach 0 Uhr ab

  • Hallo,

    Ich nutze einen Raspberry PI Zero 2w mit der Raspicam V3 als Allsky Kamera.
    Der Befehl dazu lautet z.B.

    Code
    libcamera-still --autofocus-mode manual --lens-position 1.0 -o image%d-t.jpg --contrast 1.02 --shutter 6000000 -t 30000000 --timelapse 8000 --framestart 1000 --denoise off --gain 16 --nopreview > /dev/null 2>&1 &

    Leider bricht dieser oft (nicht immer) um die 0.00 Uhr ab und macht nicht weiter.
    Wenn ich den Timelapse dann wieder starte läuft er Stundenlang ohne Probleme.
    Auch vor 0 uhr wird der Timelapse nicht abgebrochen.
    Kann mir wer sagen warum das so ist.

    An der SD Karte liegt es nicht, auch eine neue Karte mit neu installiertem System macht das Problem.

    Edited once, last by smoert (June 22, 2025 at 3:39 PM).

  • Go to Best Answer
  • Willkommen im Forum

    Ist der Befehl in einem Skript oder Standalone?
    Evtl. erfährst Du mehr, wenn Du die Ausgabe nicht ins Nirwana schickst, sondern in einer Datei.
    Also: rpicam-still ... > /pfad/zur/Datei.log 2>&1 &

    P.s. Verwende rpicam* statt libcam*, weil wegen 'Warning' in den Quellen der Software auf Github.

  • Cronjob ist nicht das Problem sind nur folgende aktive

    Code
    17 * * * * root cd / && run-parts --report /etc/cron.hourly
    25 6 * * * root test -x /usr/sbin/anacron ( cd / && run-parts --report /etc/cron.daily )
    47 6 * * 7 root test -x /usr/sbin/anacron ( cd / && run-parts --report /etc/cron.weekly )
    52 6 1 * * root test -x /usr/sbin/anacron ( cd / && run-parts --report /etc/cron.monthly )
    @reboot root python3 /var/www/html/zeit.py

    letzte zeile schreibt nur beim booten die uhrzeit und das Datum in eine Textdatei weil meine erste Vermutung war das ein Reset ausgeführt wid.

    der Befehl wird über PHP auf der konsole ausgeführt mit echo exec("$befehla"); dies funktioniert ja auch , wenn ich es z.B. Mittags ausführe läuft es auch stundenlang ohne Probleme.
    Wird nachts um 0.00 Uhr igenwie die Zeit Synchronisiert ohne Cronjob ??? das wäre meine nächste Vermutung.

    Ich habe jetzt mal einen weiteren Zero2w und eine V3 Kamerra bestellt, mal schauen ob dort das selbe Problem auftrifft, wenn ja werde ich auf dem dann rpicam apps installieren und dann mal schauen.

    Edited 3 times, last by smoert (June 22, 2025 at 3:39 PM).

  • der Befehl wird über PHP auf der konsole ausgeführt mit echo exec("$befehla"); dies funktioniert ja auch

    Gibt es einen Grund, warum Du über PHP gehst?

    Ist auf dem Rechner eine GUI installiert und aktiv?
    Ich frage deshalb, weil ich schon erlebt habe, das beim Abmelden von der GUI alle laufenden Programme des User gekillt werden. Evtl. werden ja inaktive Logins um Mitternacht terminiert.

    Interessant wäre, ob auch andere länger laufende Skripte zur gleichen Zeit beendet werden. Ergo einfach ein Shellskript schreiben, das in einer Schleife nach X Minuten Pause (sleep) die Uhrzeit ausgibt und bei erreichen einer bestimmten Uhrzeit (z.B. 2:00) sich beendet.
    Wenn das auch gekillt wird, ist die Suche schon mal etwas eingeschränkter.

    Bei mir laufen Zeitrafferskripte problemlos durch, aber ich mache die auch etwas anders. Ein vereinfachtes Beispiel ist unter 3.1 Zeitraffer (im Spoiler) aufgeführt.

  • Bergwichtel
    Nein eine GUI ist nicht aktiv , ich boote direkt auf Konsole , das mit den anderen Scripten werde ich mal testen.
    ich werde einfach mal ein kleine Python Programm schreiben was mir alle 60 Sekunden die Zeit in eine Textdatei schreibt.
    In PHP habe ich mir meine eigene Oberfläche geschrieben mit der ich das ganze steuere und verwalte.
    Was das mekrwürdige dabei ist das es so Sporatisch auftritt, heute (also von gestern auf jetzt) ist mein Timelapse nicht stehen geblieben.
    In der Nacht davor wurde um 0.00.34 Uhr das letzte Foto gemacht.

    Und vielen dank für die hilfreichen Antworten, bringt mich schon weiter das ganze.

  • Was das mekrwürdige dabei ist das es so Sporatisch auftritt

    Sporadisch ist immer Mist oder das Muster ist komplexer, so daß man denkt, es ist sporadisch.

    In der Nacht davor wurde um 0.00.34 Uhr das letzte Foto gemacht.

    Wenn Du mit journalctl umgehen kannst, wäre der Tag und Uhrzeit, an dem das letzte Foto einer Serie gemacht wurde, der Startpunkt zur Suche im Journal. Vielleicht findet man Auffälligkeiten.

    Es kann natürlich sein, das rpicam-still (was bei Dir mittels Softlink libcamera-still nur noch bis zum nächsten update funktionieren wird) einen Bug hat und deshalb abbricht. Der Exitcode von rpicam-still wäre interessant. Und die Fehlermeldungen. Letzteres erhält man in etwa so:
    > /dev/null 2> /pfad/zu/errors.txt &
    Da steht sicherlich, warum abgebrochen wurde.

    ich werde einfach mal ein kleine Python Programm schreiben was mir alle 60 Sekunden die Zeit in eine Textdatei schreibt.

    Naja, wenn Du Dich in Python üben möchtest. Ich würde dafür wohl nicht einmal ein Minishellskript schreiben.
    Entweder im Terminalemulator screen oder tmux (um mit Strg+c das zu terminieren) den Einzeiler eingeben:
    while true; do date '+%Y.%m.%d %M:%S' >> /pfad/zur/Datei.txt; sleep 60; done
    oder mit nohup von der Konsole abtrennen, aber da würde ich noch eine Abbruchbedingung einbauen oder Du mußt das dann mit kill abschießen.
    Info:
    >> hängt ans Ende an - werden viele Zeilen mit Datumsangaben
    > überschreibt den Inhalt - nur der letzte Eintrag steht in der Datei

    In PHP habe ich mir meine eigene Oberfläche geschrieben mit der ich das ganze steuere und verwalte.

    Ich vermute eine HTML-Seite mit PHP, die bei Klick das in #4 erwähnte exec() - wobei mir fällt gerade auf:
    echo exec("$befehla");
    Ist Dir da das echo aus Versehen reingerutscht, oder steht das wirklich im Skript? Das sollte (ohne nachzuschlagen bzw. testen) nicht als exec() funktionieren, sondern einen Synthaxerror werfen.

    Sicherheitshalber frage ich nochmal genauer: Das PHP wird nicht über einen Webserver bereitgestellt und nur der exec()-Aufruf wurde als 'auf der konsole ausgeführt' bezeichnet?

    Du rufst auf der Konsole mittels php -f deinPHP_Skript.php auf?
    Weil falls es doch über einen Webserver geht, sind die Abbrüche klar. Mich wundert dann nur die Uhrzeit etwas.

  • Wenn der Pi länger als 24 Stunden läuft, werden bei mir:

    dpkg-db-backup.service - Daily dpkg database backup service...

    logrotate.service - Rotate log files...

    cups.service - CUPS Scheduler...

    systemd-tmpfiles-clean.service - Cleanup of Temporary Directories...

    wöchentlich: fstrimm

    über timer-units gestarted

    Du kannst mit "journalctl -r" das Systemlogfile vom letzten bis zu ersten Eintrag durchforsten.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Systemlog mit journalctl -r habe ich auch durchforstet da steht zu gegebener Uhrzeit nichts , aber danke für den Hinweis .
    exec benötigt kein echo geht aber auch mit,hatte mir vorher den Befehl dort ausgegeben lassen um zu sehen ob die Konstellation stimmt und das echo schlichweg vergessen weg zu machen.
    Doch wie oben beschrieben habe eine Apache2 laufen mit PHP , ansonsten könnt ich ja nicht drauf zugreifen. Mysql habe ich nicht installiert für eine Typische LAMP installation da mir das zu viel Rechenpower nimmt.

    Teste gleich mal mit ausgabe in Datei ob es da was gibt.

    Und vielen Dank an euch beiden für die guten Tipps.

  • asugabe sieht nach ein paar Bildern so aus:


    ich lass das mal in zukunft immer in eine Log schreiben , evtl. ergibts sich da ja was
    Heute habe ich die 0 uhr grenze verpasst , morgen mal wieder versuchen.

    Edited once, last by smoert (June 22, 2025 at 3:39 PM).

  • hyle
    Danke für den Hinweis , Apache2 hatte ich nicht auf dem Schirm, sobald es wieder auftrifft werde ich auch dessen Log Dateien mal durchforsten.
    Der User ist wohl www-data da beim einem neustart von Apache2 auch die Timelapse unterbrochen wird.Ich muss gestehen auch dies hatte ich nicht wircklich bedacht.
    Ich lasse das ganze mal ein paar Nächte laufen bis der Fehler wirder auftrifft und sichere dann alle log Dateien.
    Danach lasse ich das ganze mal via Konsole laufen.

  • Volltreffer , gerade eben wieder abgebrochen. Ausgabe der Logdatei

    Code
    Still capture image received
    [1:25:26.908392804] [1991] [1;32m INFO [1;37mCamera [1;34mcamera.cpp:1033 [0mconfiguring streams: (0) 2304x1296-YUV420
    [1:25:26.910630500] [1992] [1;32m INFO [1;37mRPI [1;34mvc4.cpp:565 [0mSensor: /base/soc/i2c0mux/i2c@1/imx708@1a - Selected sensor format: 2304x1296-SBGGR10_1X10 - Selected unicam format: 2304x1296-pBAA
    [1:25:27.300347613] [1991] [1;32m INFO [1;37mCamera [1;34mcamera.cpp:1033 [0mconfiguring streams: (0) 4608x2592-YUV420 (1) 4608x2592-SBGGR10_CSI2P
    [1:25:27.302376503] [1992] [1;32m INFO [1;37mRPI [1;34mvc4.cpp:565 [0mSensor: /base/soc/i2c0mux/i2c@1/imx708@1a - Selected sensor format: 4608x2592-SBGGR10_1X10 - Selected unicam format: 4608x2592-pBAA
    [1:25:28.107979669] [1992] [1;31mERROR [1;37mV4L2 [1;34mv4l2_videodevice.cpp:1241 [0;32m/dev/video0[13:cap]: [0mUnable to request 1 buffers: Cannot allocate memory
    ERROR: *** failed to allocate capture buffers ***

    Jetzt ist nur die Frage warum immer nur um kurz nach 0 Uhr.

    ok laut Apache Log

    Code
    [Sun Jun 22 00:00:48.567499 2025] [mpm_prefork:notice] [pid 1522:tid 1522] AH00171: Graceful restart requested, doing restart
    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
    [Sun Jun 22 00:00:53.671451 2025] [mpm_prefork:notice] [pid 1522:tid 1522] AH00163: Apache/2.4.62 (Raspbian) configured -- resuming normal operations
    [Sun Jun 22 00:00:53.682266 2025] [core:notice] [pid 1522:tid 1522] AH00094: Command line: '/usr/sbin/apache2'

    Hat wohl was mit der logrotate von Apache2 zu tun , seltsam ist es trotzdem das es so sporatisch ist.
    Ich schaue mal wie ich die Logrotate abändern kann ,oder den Befehl als anderen User zu übergeben.

    Edited once, last by smoert (June 22, 2025 at 3:38 PM).

  • Nun, wenn ich die Ausgabe sehe - Du hast den Webserver nicht konfiguriert. Du läßt ihn laufen, wie er installiert wurde. Vermutlich wurde auch die php.ini, die auch eine Rolle spielen kann, nicht angepaßt.

    Jetzt ist nur die Frage warum immer nur um kurz nach 0 Uhr.

    [Sun Jun 22 00:00:48.567499 2025] [mpm_prefork:notice] [pid 1522:tid 1522] AH00171: Graceful restart requested, doing restart

    Nun, dein Skript ist ein Kind des Webservers, stirbt er, stirbt auch das Kind.

    Länger laufende Skripte von einem Webserver aus zu starten ist keine gute Idee. Es geht zwar, aber das muß man dann anders handhaben.

  • Logrotation auf Weekly gestellt. Läuft :thumbup:
    Obwohl es mir noch immer unklar ist warum das nicht immer passierte sondern nur sporatisch, aber naja weiter vertiefen möchte ich das ganze nicht.

    Viele Dank für die zahlreichen Hinweise

  • Du könntest folgendes versuchen

    Eine weitere Idee wäre eine Systemd Service Unit zu erstellen, die per PHP-Skript gestartet wird statt des Befehls, die im Fehlerfall neu startet

    Oder ggf. hilft auch schon nohup vor den Befehl zur Aufnahme zu setzen.

    Das System zu verbiegen, indem Du die Logrotation änderst, ist jedenfalls keine gute Lösung.

  • Nohup funktioniert nicht, der Befehl bleibt trozdem am User hängen , wird nur unabhängig von der Konsole ausgeführt.

    Wenn ich Apache2 restart mache wird auch der Befehl unterbrochen.

    Das ganze als Systemd Service Unit zu starten ist mir zu unflexibel, da der Befehl sich oft ändert.

    Ich hatte auch schon versucht das ganze als anderen User auszuführen, was leider auch nicht geht, da bei dem wechsel mit "su BENUTZER" wohl ein Passwort verlangt wird.

    Ich bin mit dieser Lösung aber schon sehr zufrieden , mag evtl. nicht die beste Lösung sein , aber bei einem PI Zero 2W der nur im heimischen Netz agiert und ein paar hundert

    Fotos in der Nacht macht ist ein verbogenes System für mich ok, zumal es ansonsten sehr gut funktioniert.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!