Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Kamera Steuerung (PTZ) mit Bewegungsmelder htp

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Kamera Steuerung (PTZ) mit Bewegungsmelder htp

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @kasperfunsurfer last edited by

      @kasperfunsurfer sagte:

      Die beiden Befehle kommen zu schnell hintereinander.

      Welche beiden Befehle ?

      request(url + '/CGI-COMMAND/param.cgi?cmd=pushhostalarm');
      

      wird gegenüber dem anderen request() mit der angegebenen Verzögerung (10 s) ausgeführt. Wenn das zu kurz ist, dann erhöhe die Verzögerungszeit.

      1 Reply Last reply Reply Quote 0
      • K
        kasperfunsurfer last edited by

        request(url + '/CGI-COMMAND/param.cgi?cmd=pushhostalarm');
              
         timer = setTimeout(function() {
        
        
        timer = setTimeout(function() {
        
         request(url + '/CGI-COMMAND/param.cgi?cmd=pushhostalarm');
        

        Wo ist her der unterschied. Wenn ich es anders herum schreibe ist keine Verzögerung gegenüber de, anderen request ?

        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @kasperfunsurfer last edited by

          @kasperfunsurfer
          Die 3 Befehle innerhalb der Timeout-Callback-Funktion werden mit der angegebenen Verzögerung ausgeführt.

                timer = setTimeout(function() {
                   request(url + '/CGI-COMMAND/param.cgi?cmd=pushhostalarm');
                   setState(dp.id, false);
                   timer = null;
                }, 30000); // nach 30 s
          
          1 Reply Last reply Reply Quote 0
          • K
            kasperfunsurfer last edited by

            Alles klaro danke dir.
            Wie würde das Script aussehen wenn ich es erst durch
            var Abwesend = "hm-rega.950"; Aktivieren würde ?

            Sprich ich schalte auf Abwesend auf True und dann beginnt das Script.

            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @kasperfunsurfer last edited by paul53

              @kasperfunsurfer

              const idMotion = ["mihome.0.devices.sensor_motion_aq2_158****.state","mihome.0.devices.sensor_motion_aq2_158****.state"];
              const idAbwesend = 'hm-rega.950';
              const url = 'http://***@192.168.2.110:81'; 
              var timer = null;
               
              on(idMotion, function(dp) {
                 if(dp.state.val && !timer && getState(idAbwesend).val) { // Bewegung bei Abwesenheit erkannt
                    request(url + '/param.cgi?cmd=preset&-act=set&-status=1&-number=0');
                    timer = setTimeout(function() {
                       request(url + '/CGI-COMMAND/param.cgi?cmd=pushhostalarm');
                       setState(dp.id, false);
                       timer = null;
                    }, 30000); // nach 30 s
                 }
              });
              
              1 Reply Last reply Reply Quote 0
              • K
                kasperfunsurfer last edited by

                Guten Morgen,
                super danke. jetzt noch meine letzte Frage. Wie müsste das Script aussehen wenn ich jetzt noch mit einem zusätzlichen Bewegungsmelder mihome.0.devices.sensor_motion_aq2_188****.state eine andere Position ( bzw. 2 Position ) anfahren will /param.cgi?cmd=preset&-act=set&-status=1&-number=1 ??

                Grüße Timo

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @kasperfunsurfer last edited by paul53

                  @kasperfunsurfer
                  Dann kann das Array idMotion ergänzt werden und in der Funktion muss die ID geprüft werden.

                  ...
                  
                  on(idMotion, function(dp) {
                     if(dp.state.val && !timer && getState(idAbwesend).val) { // Bewegung bei Abwesenheit erkannt
                        var pos = 0;
                        if(dp.id = 'mihome.0.devices.sensor_motion_aq2_188****.state') pos = 1;
                        request(url + '/param.cgi?cmd=preset&-act=set&-status=1&-number=' + pos);
                        timer = setTimeout(function() {
                           request(url + '/CGI-COMMAND/param.cgi?cmd=pushhostalarm');
                           setState(dp.id, false);
                           timer = null;
                        }, 30000); // nach 30 s
                     }
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • K
                    kasperfunsurfer last edited by kasperfunsurfer

                    Servus Paul,

                    irgendwie haut es schon wieder nicht hin.

                    const idMotion = ["mihome.0.devices.sensor_motion_aq2_158d000236b7e6.state","mihome.0.devices.sensor_motion_aq2_158d0002e922d3.state"];
                    const url = 'http://******@192.168.2.110:81'; 
                    var timer = null;
                    
                     
                    
                    on(idMotion, function(dp) {
                    
                    log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile
                       
                       if(dp.state.val && !timer) { // Bewegung erkannt
                    
                       var pos = 0;
                    
                          if(dp.id = 'mihome.0.devices.sensor_motion_aq2_158d0002e30682.state') pos = 1;
                    
                          request(url + '/param.cgi?cmd=preset&-act=goto&-number=' + pos);
                    
                          
                          timer = setTimeout(function() {
                    
                             request(url + '/CGI-COMMAND/param.cgi?cmd=pushhostalarm');
                    
                             setState(dp.id, false);  
                    
                             timer = null;
                    
                          }, 15000); // nach 15 s
                    
                       }
                    
                    });
                    
                    

                    Die Bewegungsmelder werden wieder nicht nach 15sec zurückgesetzt.

                    7:13:21.401 info javascript.0 Stop script script.js.Skript_57_enu
                    17:13:41.172 info javascript.0 Start javascript script.js.Skript_57_enu
                    17:13:41.173 info javascript.0 script.js.Skript_57_enu: registered 2 subscriptions and 0 schedules
                    17:14:04.298 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d0002e922d3.state: true
                    17:16:04.107 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d0002e922d3.state: false

                    Desweiteren fährt die Kamera immer nur in eine Position. Hmm…. Hier nochmal der Befehl für die beiden Positionen:

                    http://*****@192.168.2.110:81/param.cgi?cmd=preset&-act=goto&-number=0 Position 1

                    http://*****@192.168.2.110:81/param.cgi?cmd=preset&-act=goto&-number=1 Position 2

                    Grüße

                    Glasfaser 1 Reply Last reply Reply Quote 0
                    • Glasfaser
                      Glasfaser @kasperfunsurfer last edited by Glasfaser

                      @kasperfunsurfer

                      idMotion , Eintrag fehlt !!
                      nimm mal das !

                      const idMotion = ["mihome.0.devices.sensor_motion_aq2_158d000236b7e6.state","mihome.0.devices.sensor_motion_aq2_158d0002e922d3.state","mihome.0.devices.sensor_motion_aq2_158d0002e30682.state"];
                      
                      

                      Nutze das Skript gerade bei meiner Hikvision ( natürlich abgeändert ), funktioniert super.
                      Kamera fährt beim Klingeln in Pos 1. und nach 30 sek. in die Home Position zurück .

                      Super Skript Paul !

                      1 Reply Last reply Reply Quote 0
                      • K
                        kasperfunsurfer last edited by kasperfunsurfer

                        Servus,

                        nee das ist es leider auch nicht. Die Kamera fährt keine Position mehr an sowie die Bewegungsmelder werden nicht zurück gesetzt. 😢

                        Die Änderung hat doch was gebracht. Kamera fährt aber immer nur in eine Position nicht in die andere.
                        Bewegungsmelder mihome.0.devices.sensor_motion_aq2_158d0002e30682.state Funktioniert mit 15sec. die anderen leider nicht.

                        17:51:21.182 info javascript.0 Stop script script.js.Skript_57_enu
                        17:51:22.034 info javascript.0 Start javascript script.js.Skript_57_enu
                        17:51:22.035 info javascript.0 script.js.Skript_57_enu: registered 3 subscriptions and 0 schedules
                        17:51:30.992 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d0002e30682.state: true
                        17:51:45.998 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d0002e30682.state: false
                        17:51:59.304 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d0002e922d3.state: true
                        17:51:59.305 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d0002e30682.state: true
                        17:53:59.129 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d0002e922d3.state: false

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @kasperfunsurfer last edited by

                          @kasperfunsurfer sagte:

                          17:51:59.304 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d0002e922d3.state: true
                          17:51:59.305 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d0002e30682.state: true

                          Zwischen beiden BWM ist nur 1 ms Abstand ! Wie kann das sein ?

                          K 1 Reply Last reply Reply Quote 0
                          • K
                            kasperfunsurfer @paul53 last edited by kasperfunsurfer

                            @paul53 hier nochmal das Script.

                            const idMotion = ["mihome.0.devices.sensor_motion_aq2_158d000236b7e6.state","mihome.0.devices.sensor_motion_aq2_158d0002e922d3.state","mihome.0.devices.sensor_motion_aq2_158d0002e30682.state"];
                            const url = 'http://******@192.168.2.110:81'; 
                            var timer = null;
                            
                             
                            
                            on(idMotion, function(dp) {
                            
                            log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile
                               
                               if(dp.state.val && !timer) { // Bewegung erkannt
                            
                               var pos = 0;
                            
                                  if(dp.id = 'mihome.0.devices.sensor_motion_aq2_158d0002e30682.state') pos = 1;
                            
                                  request(url + '/param.cgi?cmd=preset&-act=goto&-number=' + pos);
                            
                                  
                                  timer = setTimeout(function() {
                            
                                     request(url + '/CGI-COMMAND/param.cgi?cmd=pushhostalarm');
                            
                                     setState(dp.id, false);  
                            
                                     timer = null;
                            
                                  }, 15000); // nach 15 s
                            
                               }
                            
                            });
                            

                            Wenn ich den denn mihome.0.devices.sensor_motion_aq2_158d0002e922d3.state auf True setzte oder den den mihome.0.devices.sensor_motion_aq2_158d000236b7e6.state: true kommt der andere Automatisch mit ?? Aber nur in dem Script in echt unter Objekte passiert das nicht da bleibt der mihome.0.devices.sensor_motion_aq2_158d0002e30682.state auf flase

                            18:08:55.661 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d0002e922d3.state: true
                            18:08:55.662 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d0002e30682.state: true
                            18:10:55.475 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d0002e922d3.state: false
                            18:11:01.966 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d000236b7e6.state: true
                            18:11:01.969 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d0002e30682.state: true
                            18:13:01.779 info javascript.0 script.js.Skript_57_enu: mihome.0.devices.sensor_motion_aq2_158d000236b7e6.state: false

                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @kasperfunsurfer last edited by

                              @kasperfunsurfer
                              Dann versuche es mal mit getrennten Triggern

                              const idMotion1 = "mihome.0.devices.sensor_motion_aq2_158d000236b7e6.state";
                              const idMotion2 = "mihome.0.devices.sensor_motion_aq2_158d0002e922d3.state";
                              const idMotion3 = "mihome.0.devices.sensor_motion_aq2_158d0002e30682.state";
                              const url = 'http://******@192.168.2.110:81'; 
                              
                              var timer = null;
                              
                              function kamera(id, pos) {
                                 request(url + '/param.cgi?cmd=preset&-act=goto&-number=' + pos);
                                 timer = setTimeout(function() {
                                    request(url + '/CGI-COMMAND/param.cgi?cmd=pushhostalarm');
                                    setState(id, false);  
                                    timer = null;
                                    log('Verzögert: ' + id);
                                 }, 15000); // nach 15 s
                              }
                              
                              on(idMotion1, function(dp) {
                                 log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile
                                 if(dp.state.val && !timer) kamera(dp.id, 0);
                              });
                              
                              on(idMotion2, function(dp) {
                                 log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile
                                 if(dp.state.val && !timer) kamera(dp.id, 0);
                              });
                              
                              on(idMotion3, function(dp) {
                                 log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile
                                 if(dp.state.val && !timer) kamera(dp.id, 1);
                              });
                              
                              1 Reply Last reply Reply Quote 0
                              • K
                                kasperfunsurfer last edited by

                                @paul53 mal wieder sauber. So klappt es 👍 👍

                                Wie war das jetzt mit der Funktion Abwesend ? Ist das so richtig ?

                                const idAbwesend = 'hm-rega.950';
                                
                                on(idMotion1, function(dp) {
                                
                                   log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile
                                
                                   if(dp.state.val && !timer && getState(idAbwesend).val) kamera(dp.id, 0);
                                
                                });
                                
                                 
                                
                                on(idMotion2, function(dp) {
                                
                                   log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile
                                
                                   if(dp.state.val && !timer  && getState(idAbwesend).val) kamera(dp.id, 0);
                                
                                });
                                
                                 
                                
                                on(idMotion3, function(dp) {
                                
                                   log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile
                                
                                   if(dp.state.val && !timer && getState(idAbwesend).val) kamera(dp.id, 1);
                                
                                });
                                
                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @kasperfunsurfer last edited by paul53

                                  @kasperfunsurfer sagte:

                                  Ist das so richtig ?

                                  Ja.
                                  Besser nur einmal in der Funktion abfragen.

                                  const url = 'http://******@192.168.2.110:81'; 
                                  const idMotion  = "mihome.0.devices.sensor_motion_aq2_158d000";
                                  const idMotion1 = idMotion + "236b7e6.state";
                                  const idMotion2 = idMotion + "2e922d3.state";
                                  const idMotion3 = idMotion + "2e30682.state";
                                  const idAbwesend = 'hm-rega.950';
                                  
                                  var timer = null;
                                  
                                  function kamera(id, pos) {
                                     if(getState(idAbwesend).val && !timer) {	
                                        request(url + '/param.cgi?cmd=preset&-act=goto&-number=' + pos);
                                        timer = setTimeout(function() {
                                           request(url + '/CGI-COMMAND/param.cgi?cmd=pushhostalarm');
                                           setState(id, false);  
                                           timer = null;
                                           log('Verzögert: ' + id);
                                        }, 15000); // nach 15 s
                                     }
                                  }
                                  
                                  on(idMotion1, function(dp) {
                                     log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile
                                     if(dp.state.val) kamera(dp.id, 0);
                                  });
                                  
                                  on(idMotion2, function(dp) {
                                     log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile
                                     if(dp.state.val) kamera(dp.id, 0);
                                  });
                                  
                                  on(idMotion3, function(dp) {
                                     log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile
                                     if(dp.state.val) kamera(dp.id, 1);
                                  });
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • K
                                    kasperfunsurfer last edited by kasperfunsurfer

                                    Hmm das gibt es schon wieder kleine Probleme

                                    19:44:14.373 info javascript.0 Stop script script.js.Skript_158_neuer
                                    19:44:14.415 info javascript.0 Start javascript script.js.Skript_158_neuer
                                    19:44:14.416 info javascript.0 script.js.Skript_158_neuer: registered 3 subscriptions and 0 schedules
                                    19:45:00.948 info javascript.0 script.js.Skript_158_neuer: mihome.0.devices.sensor_motion_aq2_158d0002e30682.state: true
                                    19:45:00.951 warn javascript.0 at kamera (script.js.Skript_158_neuer:11:7)
                                    19:45:00.952 warn javascript.0 at Object.<anonymous> (script.js.Skript_158_neuer:34:21)
                                    19:47:00.758 info javascript.0 script.js.Skript_158_neuer: mihome.0.devices.sensor_motion_aq2_158d0002e30682.state: false

                                    paul53 1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 @kasperfunsurfer last edited by

                                      @kasperfunsurfer
                                      Damit ich ich die Zeilennummern in den Warnungen zuordnen kann, muss ich das Skript so sehen, wie es bei Dir läuft.

                                      1 Reply Last reply Reply Quote 0
                                      • K
                                        kasperfunsurfer last edited by kasperfunsurfer

                                        const url = 'http://+++++@192.168.2.110:81'; 
                                        const idMotion  = "mihome.0.devices.sensor_motion_aq2_158d000";
                                        const idMotion1 = idMotion + "236b7e6.state";
                                        const idMotion2 = idMotion + "2e922d3.state";
                                        const idMotion3 = idMotion + "2e30682.state";
                                        const idAbwesend = 'hm-rega.950';
                                        
                                         var timer = null;
                                        
                                           function kamera(id, pos) {
                                           if(getState(idAbwesend).val && !timer) {	
                                              request(url + '/param.cgi?cmd=preset&-act=goto&-number=' + pos);
                                              timer = setTimeout(function() {
                                              request(url + '/CGI-COMMAND/param.cgi?cmd=pushhostalarm');
                                              setState(id, false);  
                                              timer = null;
                                                log('Verzögert: ' + id);
                                              }, 10000); // nach 10 s
                                         }
                                        }
                                        
                                         on(idMotion1, function(dp) {
                                           log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile
                                           if(dp.state.val) kamera(dp.id, 0);
                                        });
                                        
                                         on(idMotion2, function(dp) {
                                           log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile
                                           if(dp.state.val) kamera(dp.id, 0);
                                        });
                                        
                                         on(idMotion3, function(dp) {
                                           log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile
                                           if(dp.state.val) kamera(dp.id, 1);
                                        });
                                        

                                        Der Bewegungsmelder setzt sich auch wieder nicht zurück.....

                                        paul53 1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @kasperfunsurfer last edited by

                                          @kasperfunsurfe:

                                          const idAbwesend = 'hm-rega.950';

                                          Fehlt da nicht die Instanz-Nummer ?

                                          const idAbwesend = 'hm-rega.0.950';
                                          
                                          K 1 Reply Last reply Reply Quote 0
                                          • K
                                            kasperfunsurfer @paul53 last edited by

                                            @paul53 ja logisch Sorry mein Fehler. Jetzt passt es. Noch mal vielen vielen DANK...….

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            658
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            45
                                            1918
                                            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