NEWS
Sichern von Bilder einer IP-Cam auf FTP Server bei Bewegung
-
Hallo zusammen,
ich sitze gerade daran, folgendes umzusetzen:
Ich möchte, dass eine IP-Cam (Innenraumüberwachung) im Fall einer erkannten Bewegung (Trigger durch Xiaomi Aqara BWM oder Motion) bei Abwesenheit und/oder eingeschalteter Alarmanlage eine Bilderserie erstellt und diese über FTP auf einen Server / NAS lädt.
Auf meinem Zotac läuft Proxmox mit iobroker und Motion/MotionEye in einem LXC.
Ich habe hierzu eine IP-Cam in MotionEye eingebunden, von welcher ich die Bilder mit wget hole und zunächst zwischenspeichere.
wget --output-document /opt/iobroker/ipcam/wohnzimmer.jpg 'http://192.168.1.131:8765/picture/1/current/?'
Das Skript ist hier ja für das Senden per Telegram weit verbreitet.
Nach dem Speichern habe ich es nun mit
curl -T /opt/iobroker/ipcam/wohnzimmer.jpg -u benutzer:passwort 'ftp://192.168.1.24:21/Videos/Surveillance/Wohnzimmer/'
erfolgreich gespeichert.
Nun suche ich nach einer Möglichkeit, die Datei bestenfalls beim Speichern auf dem NAS mit Datum/Zeit Präfix zu versehen.
Denn mit dem derzeitigen Script wird immer nur die Datei wohnzimmer.jpg überschrieben.
Ich habe nun einige Stunden versucht mich einzulesen und bin zu der Erkenntnis gekommen, dass es zwei Möglichkeiten gibt, warum ich es nicht geschafft habe:- Ich bin blind
- die Möglichkeit existiert nicht
Was das ganze Skripten, Linux etc. angeht muss ich mich immer wieder als blutiger Anfänger outen, der nach und nach versucht, sich die Sachen anzulesen. Das klappt bisher recht passabel, aber es gibt halt immer wieder Punkte, da ist man ohne Hilfe aufgeschmissen.
Wahlweise würde ich natürlich auch andere Vorschläge begrüßen, mein Vorhaben in die Tat umzusetzen.
Motion bringt die Funktion des Abspeicherns ja grundsätzlich mit, das habe ich auch probiert. Allerdings waren nach kürzester Zeit über 5.000 Bilder auf dem Server, da ich mich in dem Bereich ständig bewege, wenn ich zu Hause bin...
Daher möchte ich hier den Umweg über den iobroker und die dort laufende Anwesenheitserkennung gehen. Insbesondere weil ich dies dann auch bei anderen Kameras (Außenkameras) umsetzen könnte, bei denen ich den Umweg über Motion nicht gehen muss, weil ich die Bilder hier direkt abholen kann.Vielen Dank für die Unterstützung,
TemPeck - Ich bin blind
-
zeigmal das ganze Script ...
-
Das ist eine Funktion in einem Blockly-Script.
Für ein richtiges Javascript reichen meine Kenntnisse und Fähigkeiten leider (noch) nicht aus...
-
Du könntest die Datei vor dem Upload lokal umbenennen oder (siehe
man curl
) mit den Optionen--url /opt/iobroker/ipcam/wohnzimmer.jpg -u user:pass -T 'ftp://192.168.1.24:21/Videos/Surveillance/Wohnzimmer/$(date)_wohnzimmer.jpg'
eine Zieldatei angeben. -
@Xyolyp said in Sichern von Bilder einer IP-Cam auf FTP Server bei Bewegung:
Du könntest die Datei vor dem Upload lokal umbenennen oder (siehe man curl) mit den Optionen --url /opt/iobroker/ipcam/wohnzimmer.jpg -u user:pass -T 'ftp://192.168.1.24:21/Videos/Surveillance/Wohnzimmer/$(date)_wohnzimmer.jpg' eine Zieldatei angeben.
Vom Prinzip habe ich genau sowas gesucht, wie du vorgeschlagen hast.
Ich habe mich auch schon durch die man curl gequält und eben auch mit deinem Vorschlag einiges ausprobiert, leider bislang ohne Erfolg.Der Präfix mit dem Datum wird offensichtlich nicht verarbeitet. Die datei heißt dann tatsächlich "$(date)wohnzimmer.jpg" und wird entsprechend wieder überschrieben.
Sobald ich --url eingesetzt habe, ist gar keine Datei mehr erschienen. Auch hier weiß ich nicht, warum
Auch Versuche mit --remote-name und --remote-header-name blieben leider erfolglos...
-
@Xyolyp sagte in Sichern von Bilder einer IP-Cam auf FTP Server bei Bewegung:
'ftp://192.168.1.24:21/Videos/Surveillance/Wohnzimmer/$(date)_wohnzimmer.jpg'
Da habe ich nicht aufgepasst. Es müssten doppelte Anführungszeichen ( " ) (Großschreiben und 2) und nicht einzelne (
' ) (Großschreiben und #) sein. Dann sollte es funktionieren. Wenn du das Datum anders formatieren möchtest (Beispiel jahrmonattag_stundeminutesekunde) kannst du entweder "man date" in der Linux Konsole eingeben oder du googlest nach "bash date format".
Wenn du in Linux Bash in einem Text in doppelten Anführungszeichen $() machst kannst du darin einen Befehl schreiben, dessen Ergebnis an der Stelle wo es steht eingesetzt wird. -
Da muss man erstmal drauf kommen
Also mit dem Zusatz --url hat es weiterhin nicht funktioniert.
Die Änderung mit den doppelten Anführungszeichen hat zumindest soweit geführt, dass immer unterschiedliche Dateinamen kamen und ich somit die Datei nicht immer wieder überschrieben habe.Da das, was als Dateiname rauskam, nichts mit einem Datum zu tun hatte, habe ich es anders versucht und nun klappt es genau, wie ich es wollte.
Vielen Dank für die Hilfestellung!!!
Zuletzt noch der nun funktionierende Befehl:
curl -T '/opt/iobroker/ipcam/wohnzimmer.jpg' -u user:password "ftp://192.168.1.24:21/Surveillance/Wohnzimmer/wohnzimmer-`date +%Y-%m-%d-%H-%M-%S`.jpg"
Grüße!
TemPeck