Timelapse über node red starten

  • Hallo,

    ich bin gerade dabei, mein Kameramodul mit Node red steuern zu wollen.

    Mit einem Button-Node und einem exec-Node kann ich sehr einfach ein Foto auslösen oder auch ein Video starten. Für den exec-node wird dann einfach der Befehl hinterlegt, den man auch in der Kommandozeile eingeben würde (also z.B.: rpicam-jpeg --output test.jpg oder beim Video etwa: rpicam-vid -t 10s -o test.h264)
    Im Dashboard den jeweiligen button drücken und die Aktion wird ausgeführt.

    Für timelapse gibt es den Befehl Rpicam-still —timeout 30000 —Timelapse 2000 -o Timelapse/image%04d.jpg
    der macht 30 Sekunden (30000ms) Fotos mit 2 Sekunden Pause.

    Das dachte ich dem exec-node zu übergeben, es kommen aber nur Fehlermeldungen. Ich würde gerne vermeiden, den nodes lange Python-Programme zu hinterlegen, ich suche eine simple und leicht anpassbare Lösung, um flexibel für timelapse-Aufnahmen zu sein.

    Grüße aus Bonn
    Gerhard

  • Gerhard Geller Fehlermeldungen verraten ja meistens was das für ein Fehler ist, der gemacht wurde. Magst Du die Meldung(en) auch verraten? 🙂

    Und vielleicht auch den konkreten Befehl dazu, denn bei Rpicam-still —timeout 30000 —Timelapse 2000 -o Timelapse/image%04d.jpg braucht man nur bis zum Rpicam-still schauen um zu sehen, dass das falsch ist. Oder ist das tatsächlich schon der Fehler? In Linux spielt Gross-/Kleinschreibung bei Dateien, und damit auch bei Programmnamen, eine Rolle.

    2 · 3 · 3 · 37 : The prime factorization of The Beast

  • Danke für das feedback, es kommt jetzt tatsächlich keine Fehlermeldung mehr, aber es wird nur ein einziges Bild erzeugt mit dem vorgegebenen Namen image0000.jpg. Statt der ca. erwartbaren 13 Bilder also nur eines... In der Kommandoumgebung funktioniert das einwandfrei.

  • Und wenn Du die Zeile in ein ausführbares Bash-Skript schreibst und dieses verwendest? Das wäre dann ja nur ein Zweizeiler (inkl. Shebang).

    Falls das funktionieren sollte, kannst Du an das Skript ja auch Argumente bezüglich Aufnahmedauer etc. übergeben um flexibel zu sein.

  • Äh, wie geht das genau? Eigentlich würde ich node red nutzen wollen, um mir die Tippserei zu sparen.
    Wo müsste ich das Skript einbauen und wie programmiert man das? Ich bin da ziemlicher Laie.

    Ich würde gerne den Pi, die HQ-Kamera, ein Display und Strom mit nach draußen nehmen und es z.B. im Duenkeln so einfach wie möglich haben. Also im Dashboard bei Node Red nur noch Knöpfe drücken wollen...

  • Du erstellst ein Skript, nennen wir es mal timelaps_start.sh, mit folgendem Inhalt:

    Code: timelaps_start.sh
    #!/usr/bin/bash
    
    rpicam-still --timeout 30000 --timelapse 2000 -o timelapse/image%04d.jpg

    und machst das ausführbar mit chmod +x /Pfad/zu/timelaps_start.sh .

    Und nun bindest Du /Pfad/zu/timelaps_start.sh statt rpicam-still --timeo... in Dein Node Red ein. Wenn das funktionieren sollte und Du 13 Bilder bekommst, dann kannst Du das Skript und dessen Aufruf noch erweitern / anpassen.

  • Vielen Dank für die tolle Erläuterung. Ich habe es genauso gemacht und es funzt einwandfrei.
    Für Änderungen der Zeitdauer und des Intervalls muss ich im Skript Anpassungen vornehmen, aber das kann man ja gut vorher planen. Auslösen aus dem Dashboard ist also jetzt möglich.

    Grobes Vorgehen, wenn die HQ-Kamera da ist: Preview aufrufen, fokussieren sowie die Blende einstellen (das geht ja bei den c Mount Objektiven nur manuell) und dann Timelapse laufen lassen. Ich befasse mich noch damit, wie ich die Belichtungszeit fixieren kann (z.B. nach der 180°-Regel) und auch die ISO manuell einstelle. Mal sehen. Auch die Größe der Bilder werde ich dann wahrscheinlich direkt auf 1920x1080 einstellen. Ich les emich mal in die Übergabe der Parameter bei libcamera ein...

    Bis hierher jedenfalls ein großes Dankeschön!!

    viele Grüße
    Gerhard

  • Für Änderungen der Zeitdauer und des Intervalls muss ich im Skript Anpassungen vornehmen, aber das kann man ja gut vorher planen.

    Das könnte man ggf. dem Skript als Parameter beim Aufruf mitgeben. Das wäre sinnvoll, wenn verschiedene Aufnahmedauer oder / und Intervalle gebraucht werden. Da müsste man nicht 2 oder mehr Skripte erstellen, deren Inhalt sich nur in den Zahlen unterscheidet.

    Ein Beispielskript:

    Bash
    #!/usr/bin/bash
    
    rpicam-still --timeout $1 --timelapse $2 -o timelapse/image%04d.jpg

    $1 ist der erste Parameter nach dem Skriptnamen beim Aufrufen, also 30000 und $2 der zweite also 2000 jeweils durch ein Leerzeichen getrennt..

    Das Skript würde man jetzt mit /Pfad/zu/timelaps_start.sh 30000 2000 aufrufen / im Node Red einbinden oder halt mit anderen Werten beim Aufruf, um die Aufnahmedauer oder -Abstände anzupassen.

Participate now!

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