Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Ordner auf aktuellste Date prüfen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Ordner auf aktuellste Date prüfen

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      SaiBot1981 last edited by

      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

      wcag22 wendy2702 2 Replies Last reply Reply Quote 0
      • wcag22
        wcag22 @SaiBot1981 last edited by wcag22

        @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

        1 Reply Last reply Reply Quote 0
        • wendy2702
          wendy2702 @SaiBot1981 last edited by

          @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();
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          872
          Online

          32.0k
          Users

          80.5k
          Topics

          1.3m
          Posts

          3
          3
          171
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo