NEWS
Ordner auf aktuellste Date prüfen
-
Moin,
kann mir vielleicht jemand erklären ob es möglich ist per Blockly einen Ordner (var/lib/motioneye....) zu überwachen bzw sich immer die aktuelles datei daraus ziehen könnte?
Wurde gerne wenn eine Bewegung festgestellt wird immer so 4-5 aktuelle Bilder versenden ohne Dabei einen Festen Namen vergeben zu müssen.
Hintergrund:
Wenn ein Foto mit Namen wie zB. Terasse abgelegt wird, wird es ja immer wieder mit dem gleichen namen überschrieben. Da ich aber die Bilder 1 Monat speichern möchte falls man mal was Belegen muss, wäre es nicht von Vorteil das es nur ein aktuelles Bild im speichern gibt.Danke im Vorraus
-
@saibot1981
Keine Ahnung, ob das in dem Zusammenhang möglich ist. Zumindest unter Linux füge ich das Erstellungsdatum eines Images vor dem Namen ein:$(date +%Y_%m%d)ioBroker.img
Sollte das nicht auch in Js gehen?
Edit: Bei Bedarf müsste noch zum Datum die Uhrzeit eingefügt werden.
VG Peter
-
@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();