NEWS

Kamera Motion (onvif) triggert script zu schnell


  • Starter

    Hallo, ich hoffe mir kann hier geholfen werden.
    Ich benutze den Onvif Adapter für meine 2 Kameras und möchte bei Motion
    snapshots abspeichern was auch super funktioniert.
    Doch sendet die Kamera bei einem Motion event gut 6 Ereignisse je 3 Sekunden an den Onvif Adapter,
    da mein Script nun darauf wartet das der Datenpunkt geändert wird läuft es natürlich auch 6x in 3 Sekunden was zu unnötig vielen Bilder führt, gibt es eine Möglichkeit im Script selbst zu überprüfen ob das Script bereits läuft ? Das zb er nur max alle 2 Sekunden trigger darf/kann ?

    Mein Aktueller versuch nur scheinen die trigger so schnell zu sein das setState zu langsam ist un es nicht wirklich funktioniert :

    const fs = require('fs');
    
    on({id: "onvif.0.192_168_178_69_80.message.ruleengine.cellmotiondetector.motion.value", change: "any"}, function (obj) {
        var counter = getState("onvif.0.192_168_178_69_80.counter").val;
        setState("onvif.0.192_168_178_69_80.counter",1,true);
        if(counter == 1)
        {
            console.log("Pic not Ready yet ...");
            return false;
        }
    
        var currenttime = new Date().getTime();
        var lastsnap = getState("onvif.0.192_168_178_69_80.lastsnap").val;
        var math = currenttime-lastsnap;
        setState("onvif.0.192_168_178_69_80.lastsnap",new Date().getTime(),true);
        
        if(math < 2000) 
        {
            console.log("To Fast wait ...");
            return false;
        }
    
        sendTo('onvif.0', 'saveFileSnapshot', {"id":"192_168_178_69_80", "file":"/opt/cameras/snapshot-" + currenttime + ".jpg"}, function (result) {
        if (true) {
    
                console.log("Pic has been made");
                setState("onvif.0.192_168_178_69_80.counter",0,true);
            }
        
        });
    });
    
    


  • @ToxiN sagte:

    da mein Script nun darauf wartet das der Datenpunkt geändert wird läuft

    Nein, es wird nicht nur bei Wertänderung getriggert.


  • Starter

    @paul53
    change: "any" deswegen da der Wert immer true ist und bei Motion nur aktualisiert und nicht geändert wird.



  • @ToxiN sagte:

    er nur max alle 2 Sekunden trigger darf/kann ?

    const fs = require('fs');
    var timer = null;
    
    on({id: "onvif.0.192_168_178_69_80.message.ruleengine.cellmotiondetector.motion.value", change: "any"}, function (obj) {
       if(!timer) {
          timer = setTimeout(function() {
             timer = null;
          }, 2000); // 2 s
          // Hier der Rest
       }
    });
    

Log in to reply
 

Suggested Topics

  • 20
  • 3
  • 3
  • 16
  • 1
  • 44
  • 1
  • 8

2.3k
Online

32.4k
Users

39.0k
Topics

528.5k
Posts