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.
    • K
      kasperfunsurfer last edited by kasperfunsurfer

      Hallo zusammen,

      da mir bis jetzt immer gut geholfen wurde hätte ich gleich noch die nächste Frage:

      Ich möchte mit Hilfe eines Xiaomi Bewegungsmelder meine Instar Kamera in eine bestimme Position fahren. Habe mit dem Script angefangen aber kommen aufgrund meiner fehlenden Kenntnissen nicht weiter. Anbei das angefangene Script.

      // Wenn Bewegungsobjekt geändert wurde erkannt
      on({id: 'mihome.0.devices.sensor_motion_aq2_1************.state', change: "ne"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        // Wenn Bewegung erkannt
        if ((function (){var val = getState("mihome.0.devices.sensor_motion_aq2_1*state").val; if (val === 'true') return true; if (val === 'false') return false; return !!val;})() == true) {
          
          // Bewegungsmelder "zurücksetzen"
            setStateDelayed("mihome.0.devices.sensor_motion_aq2_1*************.state", false, 5000, true);
          
       } 
      });
      

      Wo müsste jetzt der Befehl "http://IP-Address:Port/param.cgi?cmd=preset&-act=set&-status=1&-number=0" hin damit die Kamera in diese Position fährt ? Sowie den Befehl "/param.cgi?cmd=pushhostalarm" um die Aufnahme zu Starten.

      Grüße Timo

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

        @kasperfunsurfer
        Das sieht nach von Blockly generiertem Code aus. Für das Senden einer URL gibt es den Block request (unter Aktionen).

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

          Servus Paul,

          ne eigentlich nicht. Habe es so immer Internet gefunden. Von Blockly habe ich ja noch weniger Ahnung.

          Das script sollte eigentlich so Funktionieren:

          Bewegung erkannt Bewegungsmelder auf True nach 30 sec über das Scipt den Bewegungsmelder wieder auf false setzen und den http Befehl aufrufen.

          Grüße

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

            @kasperfunsurfer sagte:

            Habe es so immer Internet gefunden.

            Der Poster hat Blockly verwendet.

            @kasperfunsurfer sagte in Kamera Steuerung (PTZ) mit Bewegungsmelder htp:

            Bewegung erkannt Bewegungsmelder auf True nach 30 sec über das Scipt den Bewegungsmelder wieder auf false setzen

            Der BWM setzt den Datenpunkt nach einer eingestellten Verzögerungszeit von allein auf false, wenn keine Bewegung mehr erkannt wird. Außerdem ist der Datenpunkt in der Regel "read only".

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

              So habe jetzt nochmal bisschen probiert.

              ar request = require('request');
              var url = 'http://*******/param.cgi?cmd=preset&-act=goto&-number=1';
              var Trigger = ["mihome.0.devices.sensor_motion_aq2_158****.state","mihome.0.devices.sensor_motion_aq2_158****.state"];
              on({id: Trigger, value: true}, function () {
              request(url);
              });
              

              wie setzt man die Bewegungsmelder nach 30sec wieder zurück auf false ? Würde sonst über 2 min dauern !
              Wo kommt der 2 Befehl hin http://******/CGI-COMMAND/param.cgi?cmd=pushhostalarm ?

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

                @paul53
                Versuche es mal so.

                const idMotion = ["mihome.0.devices.sensor_motion_aq2_158****.state","mihome.0.devices.sensor_motion_aq2_158****.state"];
                const url = 'http://IP-Address:Port/param.cgi?cmd=';
                var timer = null;
                
                on(idMotion, function(dp) {
                   if(dp.state.val && !timer) { // Bewegung erkannt
                      request(url + 'preset&-act=set&-status=1&-number=0');
                      timer = setTimeout(function() {
                         request(url + 'pushhostalarm');
                         timer = null;
                      }, 30000); // nach 30 s
                   }
                });
                
                1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @kasperfunsurfer last edited by paul53

                  @kasperfunsurfer sagte:

                  wie setzt man die Bewegungsmelder nach 30sec wieder zurück auf false ? Würde sonst über 2 min dauern !

                  Die 2 min stören doch nicht, da nur die Flanke false --> true ausgewertet wird.

                  var request = require('request');
                  

                  ist in neueren Versionen des Javascript-Adapters nicht erforderlich.

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

                    @paul53 der Bewegungsmelder wird nicht zurückgesetzt und mit dem pushhostalarm haut es auch nicht hin !

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

                      @kasperfunsurfer sagte:

                      der Bewegungsmelder wird nicht zurückgesetzt

                      Wenn er sich zurücksetzen läßt, dann füge ein setState() ein.

                            timer = setTimeout(function() {
                               request(url + 'pushhostalarm');
                               setState(idMotion, false);
                               timer = null;
                            }, 30000); // nach 30 s
                      
                      K 2 Replies Last reply Reply Quote 0
                      • K
                        kasperfunsurfer @paul53 last edited by kasperfunsurfer

                        @paul53 der Bewegungsmelder wird immer noch nicht zurückgesetzt. Merkwürdiger weise geht das bei dem Script was ich als erstes eingefügt habe. Die Cgi Kommandos sind leider auch unterschiedlich so das man ein url nicht nehmen kann.

                        ………./CGI-COMMAND/param.cgi?cmd=pushhostalarm
                        ………./param.cgi?cmd=preset&-act=goto&-number=

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

                          @kasperfunsurfer sagte:

                          Merkwürdiger weise geht das bei dem Script was ich als erstes eingefügt habe.

                          In dem Skript wird der Datenpunkt mit ack = true zurückgesetzt, nicht der Bewegungsmelder, denn an den wird nicht gesendet.

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

                            @paul53 ich meinte das hier.
                            Ich habe leider zu wenig Ahnung davon....

                            // Wenn Bewegungsobjekt geändert wurde erkannt
                            
                            on({id: 'mihome.0.devices.sensor_motion_aq2_1************.state', change: "ne"}, function (obj) {
                            
                              var value = obj.state.val;
                            
                              var oldValue = obj.oldState.val;
                            
                              // Wenn Bewegung erkannt
                            
                              if ((function (){var val = getState("mihome.0.devices.sensor_motion_aq2_1*state").val; if (val === 'true') return true; if (val === 'false') return false; return !!val;})() == true) {
                            
                                
                            
                                // Bewegungsmelder "zurücksetzen"
                            
                                  setStateDelayed("mihome.0.devices.sensor_motion_aq2_1*************.state", false, 5000, true);
                            
                                
                            
                             } 
                            
                            });
                            
                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @kasperfunsurfer last edited by

                              @kasperfunsurfer sagte:

                              ich meinte das hier.

                              Und damit wird der BWM zurück gesetzt ?

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

                                Ja genau damit Funktioniert es komischer weise.

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

                                  @paul53 sagte in Kamera Steuerung (PTZ) mit Bewegungsmelder htp:

                                  timer = setTimeout(function() { request(url + 'pushhostalarm'); setState(idMotion, false); timer = null; }, 30000); // nach 30 s

                                  Wenn ich das einfüge kommt folgende Meldung:
                                  20:06:05.975 error javascript.0 script.js.Skript_4 compile failed:
                                  at script.js.Skript_4:25

                                  vielleicht liegt es ja daran

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

                                    @kasperfunsurfer sagte

                                    compile failed: at script.js.Skript_4:25

                                    ?? Das Skript hat doch keine 25 Zeilen.

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

                                      @paul53 nee hat es auch nicht.....

                                      const idMotion = ["mihome.0.devices.sensor_motion_aq2_1***.state","mihome.0.devices.sensor_motion_aq2_1****.state"];
                                      const url = 'http://*****@192.168.2.110:81/param.cgi?cmd=';
                                      var timer = null;
                                      
                                       
                                      
                                      on(idMotion, function(dp) {
                                      
                                         if(dp.state.val && !timer) { // Bewegung erkannt
                                      
                                            request(url + 'preset&-act=goto&-number=1');
                                      
                                            timer = setTimeout(function() {
                                      
                                               request(url + 'pushhostalarm');
                                      
                                               setState(idMotion, false);
                                      
                                               timer = null;
                                      
                                            }, 30000); // nach 30 s
                                      

                                      20:20:09.460 info javascript.0 Stop script script.js.Skript_3
                                      20:20:10.695 info javascript.0 Start javascript script.js.Skript_3
                                      20:20:10.696 error javascript.0 script.js.Skript_3 compile failed:
                                      at script.js.Skript_3:27

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

                                        @kasperfunsurfer sagte:

                                        compile failed: at script.js.Skript_3:27

                                        Der Fehler muss in Zeile 27 sein ! Bei einem Compiler-Fehler wird das Skript nicht gestartet, führt also auch nichts aus.
                                        Lösche bitte die überflüssigen Leerzeilen, die beim Kopieren aus dem Forum entstehen.

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

                                          @kasperfunsurfer

                                          const idMotion = ["mihome.0.devices.sensor_motion_aq2_158****.state","mihome.0.devices.sensor_motion_aq2_158****.state"];
                                          const url = 'http://192.168.2.110:81'; 
                                          var timer = null;
                                           
                                          on(idMotion, function(dp) {
                                             if(dp.state.val && !timer) { // Bewegung 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(idMotion, false);
                                                   timer = null;
                                                }, 30000); // nach 30 s
                                             }
                                          });
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • K
                                            kasperfunsurfer last edited by kasperfunsurfer

                                            const idMotion = ["mihome.0.devices.sensor_motion_aq2_1***.state","mihome.0.devices.sensor_motion_aq2_1****.state"];
                                            const url = 'http://***@192.168.2.110:81'; 
                                            var timer = null;
                                            
                                             
                                            
                                            on(idMotion, function(dp) {
                                            
                                               if(dp.state.val && !timer) { // Bewegung erkannt
                                            
                                                  request(url + '/param.cgi?cmd=preset&-act=goto&-number=1');
                                            
                                                  timer = setTimeout(function() {
                                            
                                                     request(url + '/CGI-COMMAND/param.cgi?cmd=pushhostalarm');
                                            
                                                     setState(idMotion, false);
                                            
                                                     timer = null;
                                            
                                                  }, 10000); // nach 30 s
                                            
                                               }
                                            
                                            });
                                            

                                            20:47:37.482 info javascript.0 Start javascript script.js.Skript_56_neuer_versuch
                                            20:47:37.483 info javascript.0 script.js.Skript_56_neuer_versuch: registered 2 subscriptions and 0 schedules
                                            20:47:54.322 warn javascript.0 at Object.<anonymous> (script.js.Skript_56_neuer_versuch:17:10)

                                            Sieht schon besser aus. Aber der Bewegungsmelder wird immer noch nicht zurückgesetzt......

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            398
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

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