@saibot1981 sagte in Ordner auf aktuellste Date prüfen:
Wurde gerne wenn eine Bewegung festgestellt wird immer so 4-5 aktuelle Bilder versenden ohne Dabei einen Festen Namen vergeben zu müssen.
Wenn du das Bild eh versendest, ist es doch schon beim Empfänger gespeichert. Warum dann nochmal ?
Und wenn du die Motion detection von Motioneye verwendest kannst du doch eine dieser Möglichkeiten nutzen um zu Erfahren ob es etwas neues gibt.
Ich nutze z.B. diese alte Script welches mit bei Bewegungserkennung per PIR 5 Bilder per Telegram schickt.
// -------------------------------------------------------------------------
// Dieses Script überwaht den Zustand eines Bewegungsmelders und speichert bei
// Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
// dieses via Telegram.0-Adapter. Nach 10 Sek wird ein weiteres Bild erstellt und
// gesendet.
// Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
// immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
// Uhula 2017.11
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
// Konfiguration
// -------------------------------------------------------------------------
// Objekt-ID des Bewegungsmelders
const oidLichtBewmelderTuer = "hm-rpc.0.PEQ0390144.1.MOTION";
// URL zur Kamera umn ein Image (jpg) zu erhalten
const cam_url = "http://xx:yy18@192.168.178.211/Streaming/channels/1/picture";
// Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
const dest_path = '/opt/iobroker/iobroker-data/files/_temp/garage_klein/';
// Anzahl der Bilder, die vorgehalten werden sollen
const imageCountMax = 8;
// Prefix für die Bildnamen
const imageNamePre = "garage_klein_";
// -------------------------------------------------------------------------
// Scriptteil
// -------------------------------------------------------------------------
var request = require('request');
var fs = require('fs');
// Bild an telegram schicken
function sendImage (path) {
try {
var stats = fs.statSync(path);
var msg = formatDate(stats.birthtime,"DD.MM.YYYY hh:mm:ss") + " " + path.substring(path.lastIndexOf('/')+1);
sendTo('telegram.0', {
text: path,
caption: msg,
disable_notification: true,
user: 'Mxxxo',
});
sendTo('telegram.0', {
text: path,
caption: msg,
disable_notification: true,
user: 'Sxxe',
});
}
catch(err) { if (err.code != "ENOENT") log(err); }
}
// löscht eine Datei synchron (wartet auf das Ergebnis)
function fsUnlinkSync(path) {
try {
var stats = fs.statSync(path);
try { fs.unlinkSync(path); }
catch(err) { if (err.code != "ENOENT") log(err); }
}
catch(err) { if (err.code != "ENOENT") log(err); }
}
// benennt eine Datei synchron um (wartet auf das Ergebnis)
function fsRenameSync(oldPath, newPath) {
try {
var stats = fs.statSync(oldPath);
try { fs.renameSync(oldPath, newPath); }
catch(err) { if (err.code != "ENOENT") log(err); }
}
catch(err) { if (err.code != "ENOENT") log(err); }
}
// Bild speichern und senden
function saveImage() {
// Bild imageCountMax-1 löschen
fsUnlinkSync( dest_path + imageNamePre + (imageCountMax-1) + ".jpg" );
// Bilder 0..imageCountMax-2 umbenennen
for (var i=imageCountMax-4; i >= 0; i-- ) {
fsRenameSync(dest_path + imageNamePre + i + ".jpg", dest_path + imageNamePre + (i+1) + ".jpg");
}
// Bild 0 löschen
var fname = imageNamePre + "0.jpg";
fsUnlinkSync( fname );
// Bild holen und speichern
request.get({url: cam_url, encoding: 'binary'}, function (err, response, body) {
fs.writeFile(dest_path + fname, body, 'binary', function(err) {
if (err) {
log('Fehler beim Bild speichern: ' + err, 'warn');
} else {
// dem Filesystem 2 Sek Zeit zum Speichern lassen
setTimeout(function() { sendImage(dest_path + fname); }, 2000);
}
});
});
}
// sofort ein Bild senden und nach 3 Sek erneut
//function onEvent() {
// saveImage();
// setTimeout(function() { saveImage(); }, 10 * 300);
//}
// sofort ein Bild senden und nach 3 Sek erneut
function onEvent() {
saveImage();
setTimeout(function() { saveImage(); }, 3 * 1000);
setTimeout(function() { saveImage(); }, 6 * 1000);
setTimeout(function() { saveImage(); }, 9 * 1000);
}
// Ereignisroutine
//on({id: oidLichtBewmelderTuer, val: true}, function (obj) {
// onEvent( obj );
on({id: 'hm-rpc.0.PEQ0390144.1.MOTION', change: "ne"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("hm-rpc.0.PEQ0390144.1.MOTION").val === true)
onEvent( obj );
});
// manuelle Ausführung (Test)
onEvent();