G4-Snapshots automatisch in Ordner speichern

Es gibt 13 Antworten in diesem Thema, welches 4.531 mal aufgerufen wurde. Der letzte Beitrag () ist von ꧁𓊈𒆜 ƁєηLυє 𒆜𓊉꧂.

  • Servus.


    Ich hab mal wieder ein Problem.


    Diesmal möchte ich in z. B. alle 5 Minuten einen Snapshot von einer oder mehreren Kameras automatisch in einen Ordner speichern um dann später davon eine Zeitrafferaufnahme zu erstellen.

    Vom Prinzip her ist das relativ einfach.

    Zuerst log ich mich direkt per http://<ip-camera>/ in meine Kamera ein und mach einen Haken bei "Enable Anonymous Snapshot".

    Wenn ich anschließend im Browser http://<ip-camera>/snap.jpeg eintippe, bekomme ich einen Snapshot der Kamera angezeigt. Soweit alles gut.


    Dann hab ich diese Anleitung probiert: https://lazyadmin.nl/home-network/unifi-protect-timelapse/

    und diese hier: https://github.com/sfeakes/Uni…master/unifi-timelapse.sh


    Ich hab mit WinSCP das unifi-timelaps.sh gespeichert und folgendes eingetragen:

    Bash: unifi-timelaps.sh
    #!/bin/bash
    # Set the local directory to store the snapshots
    SNAP_BASE="/media"
    
    
    # Add the list of cameras with the details of your camera(s)
    CAMS["1Baustelle"]="http://<ip-camera-1>/snap.jpeg"
    CAMS["2Baustelle"]="http://<ip-camera-2>/snap.jpeg"

    Mit Putty per ssh das skript aufgerufen, aber es wird nichts gespeichert.

    /.../.../unifi-timelaps.sh savesnap "1Baustelle" >> /tmp/unifi_timelaps.log 2>&1 &


    Im Log steht dann nur:

    Code
    /bin/sh: savesnap: not found
    /.../.../unifi-timelaps.sh: line 12: CAMS[1Baustelle]=http://<ip-camera-1>/snap.jpeg: not found


    Das heißt doch eigentlich, dass er den Befehl savesnap gar nicht kennt.


    Was muss ich tun, damit das funktioniert?


    Vielen Dank

    Einmal editiert, zuletzt von fzsz ()

  • CAMS["1Baustelle"]="http://<ip-camera-1>/snap.jpeg

    Am Ende der Zeile fehlt ein "


    :winking_face:

  • Hmm, kannst du mal das komplette Skript posten?


    Er versucht "savesnap" aufzurufen, dabei ist das einfach nur das erste Argument, dass dem Skript übergeben wird. Und das case-Konstrukt in Zeile 114 sollte da matchen.

  • Ich habe das Script nicht komplett übernommen, weil es mir damit schon bei Zeile 8 das "declare -A CAMS" eine Fehlermeldung ausgeworfen hat, weil unbekannt.


    Ich habe nur die notwendigsten Einträge übernommen, damit ich das Ding zum laufen bekomme.


    Mein skript liegt hier, weil ich es als cronjob definieren will, der bei einem Firmwareupdate nicht überschrieben wird.


    /mnt/data/on_boot.d/13-unifi-timelaps.sh

    Es steht folgendes drin:

    Bash: /mnt/data/on_boot.d/13-unifi-timelaps.sh
    #!/bin/bash
    
    
    # Set the local directory to store the snapshots
    SNAP_BASE="/media"
    
    
    # Add the list of cameras with the details of your camera(s)
    CAMS["1Baustelle"]="http://192.168.100.163/snap.jpeg"
    CAMS["2Baustelle"]="http://192.168.100.162/snap.jpeg"


    wenn ich in Putty folgenden Befehl ausführe:

    /mnt/data/on_boot.d/13-unifi-timelaps.sh savesnap "1Baustelle" "2Baustelle" >> /tmp/unifi_timelaps.log 2>&1 &


    kommt keine Meldung. Der Cursor springt einfach in die nächste Zeile.


    In der /tmp/unifi_timelaps.log steht aber dann:

    Code: /tmp/unifi_timelaps.log
    /mnt/data/on_boot.d/13-unifi-timelaps.sh: line 12: CAMS[1Baustelle]=http://192.168.100.163/snap.jpeg: not found
    
    /mnt/data/on_boot.d/13-unifi-timelaps.sh: line 13: CAMS[2Baustelle]=http://192.168.100.162/snap.jpeg: not found
  • Ich habe das Script nicht komplett übernommen, weil es mir damit schon bei Zeile 8 das "declare -A CAMS" eine Fehlermeldung ausgeworfen hat, weil unbekannt.

    Dann hast du den Fehler gefunden :winking_face:


    Das "declare -A" ist schon wichtig, weil damit die Variable "CAMS" zu einem Array definiert wird. Wenn das fehlt, kann die direkt folgende Definition der ersten Array-Zelle (CAMS["2Baustelle"]) schon nicht funktionieren.


    Und der Rest des Skripts damit natürlich auch nicht.


    Dann ist jetzt die Frage, warum "declare" nicht bekannt ist. Da es sich dabei um ein Builtin von Bash handelt, vermute ich, dass bei dir eine andere Shell verwendet wird.

  • Jetzt mit declare -A CAMS:

    Bash
    #!/bin/bash
    SNAP_BASE="/media"
    
    declare -A CAMS
    
    # Add the list of cameras with the details of your camera(s)
    CAMS["1Baustelle"]="http://192.168.100.163/snap.jpeg"
    CAMS["2Baustelle"]="http://192.168.100.162/snap.jpeg"

    Befehl ausführen:

    /mnt/data/on_boot.d/13-unifi-timelaps.sh savesnap "1Baustelle" "2Baustelle" >> /tmp/unifi_timelaps.log 2>&1


    1. ausführen => keine Meldung. Der Cursor springt einfach in die nächste Zeile.

    2. ausführen => Meldung: [1]- Done(127) /mnt/data/on_boot.d/13-unifi-timelaps.sh savesnap "1Baustelle" "2Baustelle" 1>>/tmp/unifi_timelaps.log 2>&1


    In der /tmp/unifi_timelaps.log steht nun:

    Code: /tmp/unifi_timelaps.log
    -sh: /mnt/data/on_boot.d/13-unifi-timelaps.sh: not found
    -sh: /mnt/data/on_boot.d/13-unifi-timelaps.sh: not found




    Ich hab auch das Original von https://github.com/sfeakes/Uni…master/unifi-timelapse.sh

    angepasst und probiert.

    Ist in der Anlage als .txt weil .sh lässt sich nicht hochladen.


    /mnt/data/on_boot.d/14-unifi-timelaps-extra.sh savesnap "1Baustelle" "2Baustelle" >> /tmp/unifi_timelaps.log 2>&1


    In der /tmp/unifi_timelaps.log steht nun:

    Code: /tmp/unifi_timelaps.log
    /mnt/data/on_boot.d/14-unifi-timelaps-extra.sh: line 8: declare: not found
    /mnt/data/on_boot.d/14-unifi-timelaps-extra.sh: line 10: CAMS[1Baustelle]=http://192.168.100.163/snap.jpeg: not found
    /mnt/data/on_boot.d/14-unifi-timelaps-extra.sh: line 11: CAMS[2Baustelle]=http://192.168.100.162/snap.jpeg: not found
    ash: -t: unknown operand
    /mnt/data/on_boot.d/14-unifi-timelaps-extra.sh: line 116: syntax error: bad for loop variable
    /mnt/data/on_boot.d/14-unifi-timelaps-extra.sh: line 8: declare: not found
    /mnt/data/on_boot.d/14-unifi-timelaps-extra.sh: line 10: CAMS[1Baustelle]=http://192.168.100.163/snap.jpeg: not found
    /mnt/data/on_boot.d/14-unifi-timelaps-extra.sh: line 11: CAMS[2Baustelle]=http://192.168.100.162/snap.jpeg: not found
    ash: -t: unknown operand
    /mnt/data/on_boot.d/14-unifi-timelaps-extra.sh: line 116: syntax error: bad for loop variable
  • Wie gesagt: bei dir wird das Skript vermutlich von "sh" ausgeführt. "declare" ist aber ein Kommando, das nur in der "bash" zur Verfügung steht. Du musst dein Skript mit der bash ausführen.


    Das shebang in der ersten Zeile ("#!/bin/bash") erzwingt eigentlich die Ausführung mit der bash. Wenn trotzdem eine andere Shell verwendet wird, bedeutet das, dass vermutlich die bash auf dem Gerät nicht installiert ist.

  • Ich hab das jetzt anders gelöst, weil es mit "savesnap" nicht geht.

    Lösung für UDM-pro mit Unifi-Kameras:


    1. 14-unifi-timelaps-snap.sh => holt die snaps von den Kameras und speichert sie in den angegeben Ordner:

    /mnt/data/on_boot.d/14-unifi-timelaps-snap.sh

    Bash: /mnt/data/on_boot.d/14-unifi-timelaps-snap.sh
    #!/bin/bash
    wget http://192.168.100.162/snap.jpeg -O /mnt/data_ext/unifi-os/unifi-protect/video/snapshot/Bau-Nord/Bau-Nord_`date +%F_%H-%M`.jpeg  >> /tmp/unifi_timelaps.log 2>&1
    wget http://192.168.100.163/snap.jpeg -O /mnt/data_ext/unifi-os/unifi-protect/video/snapshot/Bau-Sued/Bau-Sued_`date +%F_%H-%M`.jpeg  >> /tmp/unifi_timelaps.log 2>&1

    Die Logdateieinträge kann man auch weglassen. Ist nur zur Kontrolle.


    2. 14-timelaps-snap.sh => macht den cronjob, damit es auch beim Neustart oder Firmwareupdate weitergeht:

    /mnt/data/on_boot.d/14-timelaps-snap.sh

    Bash: /mnt/data/on_boot.d/14-timelaps-snap.sh
    #!/bin/sh
    echo "*/5 6-21 * * *  /mnt/data/on_boot.d/14-unifi-timelaps-snap.sh  >> /tmp/unifi_timelaps.log 2>&1"  > /etc/cron.d/timelaps_snap
    /etc/init.d/crond reload /etc/cron.d/timelaps_snap

    => speichert die snaps alle 5 Minuten von 6:00 - 21:00Uhr


    3. /mnt/data/on_boot.d/14-timelaps-snap.sh => 1x in der Shell ausführen ergibt:

    /etc/cron.d/timelaps_snap

    ###############################################################################################

    */5 6-21 * * * /mnt/data/on_boot.d/14-unifi-timelaps-snap.sh >> /tmp/unifi_timelaps.log 2>&1

    ###############################################################################################


    Und schon sammeln sich die snaps wie gewünscht in den jeweiligen Ordnern.

  • Moin fzsz, klasse und das bitte auch ins Wiki, wenn du möchtest eintragen, denn ich denke, es werden sich mehr dafür interessieren und da wird es auch gut aufgehoben sein :winking_face::smiling_face:. Danke.


    Gruß hommes

    Umfrage G3 Instant Preisgestaltung

    Umfrage Ubiquiti Setup, Danke

    Umfrage Versandkosten EU-Store


    Mein Heimnetz

  • Servus,

    ich Depp hab heute bei meiner UDM-Pro auf "Aktualisieren" gedrückt und auf Version 2.4.27 upgedated.

    Jetzt ist die mühsam eingerichtete Funktion für die Kamera-Snapshots hinüber.

    Und die automatische Glasfasertrennung um 5 Uhr Morgens gibts auch nicht mehr. Jetzt trennt mich mein Provider wahrscheinlich wieder irgendwann wenn gerade einer speichert.

    Alles komplett verschwunden.

    Da ist jetzt ein anderes Linux auf der UDM-Pro. Alles was da vorher extra gemacht wurde ist weg mitsamt den Ordnern.

    Downgrade geht anscheinend nicht.
    Also bleibt nur anpassen. Aber ich hab keine Ahnung wie ich bei dem System jetzt wieder die Cronjobs rein bekomme.


    Wenn mir jemand einen Tipp geben kann was ich bei dem neuen Linux machen muss, damit mein Zeug wieder läuft, dann wäre das wirklich super.

  • Wenn mir jemand einen Tipp geben kann was ich bei dem neuen Linux machen muss, damit mein Zeug wieder läuft, dann wäre das wirklich super.

    Wenn ich das richtig sehe, steht mit dem Upgrade auf Version 3.X der nächste heftige OS-Wechsel vor der Tür. Du solltest also damit rechnen, dass dein repariertes Zeug vielleicht bald wieder nicht mehr tut ...

  • Viel Spass mit dem Script:


    Auf der UDM:


    apt update;apt -y install rsync


    Das Script sichert aktuell alle Videodateien via Rsync auf mein Raspi:


    ⢀⣴⠾⠻⢶⣦⠀ Debian - The universal operating system user
    ⣾⠁⢠⠒⠀⣿⡁ https://www.debian.org
    ⢿⡄⠘⠷⠚⠋⠀
    ⠈⠳⣄⠀

    :right_arrow: Dumme Gedanken hat jeder, nur der Weise verschweigt sie. (Wilhelm Busch) :left_arrow: