Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Befehl and Kamera absenden

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Befehl and Kamera absenden

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

      Kann mir jemand sagen wie basierend auf einem Status eines I/Os einen Befehl wie diesen

      http://<user>:<pwd>@192.168.1.23/cgi-bin/configManager.cgi?action=setConfig&MotionDetect[0].Enable=true</pwd></user>
      

      absenden kann?

      Ich benutzte die Vis-App - evtl hat das Bedeutung (man hat mir gesagt, dass dies ein Cross Site Scripting wäre und einige Browser dieses blockieren).

      Hintergrund ist, dass ich, basierend auf meinem Alarmanlagenstatus (Scharf/Unscharf), an meiner Überwachungskamera die Bewegungserkennung einschalten möchte.

      Vielen Dank

      /RaBu

      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Hallo, versuche es so:

        function setMotionDetection(status) {
            var url_pass = 'user:password', // Bitte anpassen (ohne Häkchen)
                url_ip = '192.168.1.23', // IP der Webcam
                url_cmd = '/cgi-bin/configManager.cgi?action=setConfig&MotionDetect[0].Enable=',
                url = 'http://' + url_pass + '@' + url_ip + url_cmd,
                request = require('request');
            request(url+status, function (err, state, body){
                if (body) log('Bewegungserkennung auf <'+ status + '> geschaltet');
                else log('Fehler bei Steuerung der Bewegungserkennung', 'warn');  
            });    
        }
        
        var idAlarmanlage = "javascript.0......" // ID des Datenpuktes Alarmanlage eintragen (sollte boolean typ sein)
        
        on(idAlarmanlage, function (data) {
            var status = (data.state.val || data.state.val === 'scharf' || data.state.val == 1 || data.state.val === '1') ? true : false;
            log('Alarmanlage sendet Befehl <' + status + '> zur Steuerung der Bewegungserkennung der Kamera');
            setMotionDetection(status);
        });
        

        Kann sein, dass man den String url_cmd wegen der eckigen Klammer http://meyerweb.com/eric/tools/dencoder/ muss.

        Dann Zeile fünf so:

        url_cmd = '%2Fcgi-bin%2FconfigManager.cgi%3Faction%3DsetConfig%26MotionDetect%5B0%5D.Enable%3D',
        
        

        Gruß

        Pix

        1 Reply Last reply Reply Quote 0
        • R
          RaBu last edited by

          Hallo Pix,

          super, vielen Dank.

          Noch bin ich nicht ganz am Ziel - es sieht so aus, als ob der Status nun richtig in Abhängigkeit vom Datenpunkt "hm-rega.0.1802.Active" gesendet wird, allerdings wird im Log nicht der Status nicht richtig gezeigt,.. was ist hier falsch?

          Die Variante mit

          //var idAlarmanlage = "javascript.0.hm-rega.0.1802.Active" // ID des Datenpuktes Alarmanlage eintragen (sollte boolean typ sein)
          
          

          funktioniert leider nicht.

          function setMotionDetection(status) {
              var url_pass = 'user:pwd', // Bitte anpassen 
                  url_ip = '192.168.1.23', // IP der Webcam
                  url_cmd = '/cgi-bin/configManager.cgi?action=setConfig&MotionDetect[0].Enable=',
                  url = 'http://' + url_pass + '@' + url_ip + url_cmd,
                  request = require('request');
              request(url+status, function (err, state, body){
                  if (body) log('Bewegungserkennung auf <'+ status + '> geschaltet');
                  else log('Fehler bei Steuerung der Bewegungserkennung', 'warn');  
              });    
          }
          
          var idAlarmanlage = "hm-rega.0.1802.Active" // ID des Datenpuktes Alarmanlage eintragen (sollte boolean typ sein)
          
          on(idAlarmanlage, function (data) {
              var status = (data.state.val || data.state.val === 'scharf' || data.state.val == 1 || data.state.val === '1') ? true : false;
              log('Alarmanlage sendet Befehl <' + status + '> zur Steuerung der Bewegungserkennung der Kamera');
              setMotionDetection(status);
          });
          
          

          Nochmals herzlichen Dank!

          Gruß

          RaBu

          1 Reply Last reply Reply Quote 0
          • R
            RaBu last edited by

            Hallo Pix,

            hier noch das Log dazu:

            
            16:43:43.101	[info]	javascript.0 Stop script script.js.SetMotionDetect
            16:43:44.846	[info]	javascript.0 Start javascript script.js.SetMotionDetect
            16:43:44.848	[info]	javascript.0 script.js.SetMotionDetect: subscribe: {"pattern":{"id":"hm-rega.0.1802.Active","change":"ne"},"name":"script.js.SetMotionDetect"}
            16:43:44.848	[info]	javascript.0 script.js.SetMotionDetect: registered 1 subscription and 0 schedules
            16:44:29.068	[info]	javascript.0 script.js.SetMotionDetect: Alarmanlage sendet Befehl zur Steuerung der Bewegungserkennung der Kamera
            16:44:29.351	[info]	javascript.0 script.js.SetMotionDetect: Bewegungserkennung auf geschaltet
            16:44:38.487	[info]	javascript.0 script.js.SetMotionDetect: Alarmanlage sendet Befehl zur Steuerung der Bewegungserkennung der Kamera
            16:44:39.073	[info]	javascript.0 script.js.SetMotionDetect: Bewegungserkennung auf geschaltet
            
            

            Wie DU siehst wird der Status nicht angezeigt.

            Gruß

            /RaBu

            1 Reply Last reply Reply Quote 0
            • P
              pix last edited by

              @RaBu:

              Hallo Pix,

              super, vielen Dank.

              Noch bin ich nicht ganz am Ziel - es sieht so aus, als ob der Status nun richtig in Abhängigkeit vom Datenpunkt "hm-rega.0.1802.Active" gesendet wird, allerdings wird im Log nicht der Status nicht richtig gezeigt,.. was ist hier falsch?

              Die Variante mit

              //var idAlarmanlage = "javascript.0.hm-rega.0.1802.Active" // ID des Datenpuktes Alarmanlage eintragen (sollte boolean typ sein)
              
              

              funktioniert leider nicht. `
              Das wär auch doppelt. Ich wusste nicht, dass die Alarmanlage in HM liegt. ist das eine Homematic Boolean Variable? Oder Werteliste?

              So wie du es weiter unten im Code benutzt hast ist es richtig. Allerdings fehl da noch das Semikolon am Ende der Zeile:

              var idAlarmanlage = "hm-rega.0.1802.Active";
              

              Ändere mal die Subscription am Ende um noch eine weitere Information zu erhalten:````
              on(idAlarmanlage, function (data) {
              var status = (data.state.val || data.state.val === 'scharf' || data.state.val == 1 || data.state.val === '1') ? true : false;
              log('Alarmanlage sendet Befehl <' + status + '> vom Typ ' + typeof data.state.val + ' zur Steuerung der Bewegungserkennung der Kamera');
              setMotionDetection(status);
              });

              
              Gruß
              
              Pix
              1 Reply Last reply Reply Quote 0
              • Y
                ykuendig last edited by

                Es werden auch die kleiner / grösser Zeichen um den Status nicht angezeigt.

                1 Reply Last reply Reply Quote 0
                • R
                  RaBu last edited by

                  Pix,

                  es handelt sich bei dem Datenpunkt (hm-rega.0.1802.Active) der ein Script in der CCU2 aktiviert/deaktiviert. Ich habe in vis einen Button mit dem ich dann das Script "Anwesenheitssimulation" aktiviere oder deaktiviere. Im Endausbau hängt dieses dann auch am Alarmanlagenstatus.

                  Ich habe jetzt das ";" ergänzt und die Subscription geändert, wie Du gesagt hast, allerdings ändert das nichts an der Ausgabe.

                  Der Hinweis von ykundig hat dann geholfen…

                  Die Zeile 7 hat jetzt nach dem "<" und vor dem ">" ein Leerzeichen.

                          if (body) log('Bewegungserkennung auf < ' + status + ' > geschaltet');
                  
                  

                  Damit wird im log der Status richtig angezeigt:

                  17:59:51.366	[info]	javascript.0 script.js.SetMotionDetect: Bewegungserkennung auf < true > geschaltet
                  17:59:53.093	[info]	javascript.0 script.js.SetMotionDetect: Alarmanlage sendet Befehl vom Typ boolean zur Steuerung der Bewegungserkennung der Kamera
                  17:59:53.390	[info]	javascript.0 script.js.SetMotionDetect: Bewegungserkennung auf < false > geschaltet
                  
                  

                  Ich weiss nicht weshalb, aber so funktioniert es, evtl. ein Problem mit dem Parser?

                  Vielen Dank an Euch Beide!

                  Schönen Gruß

                  /RaBu

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate
                  FAQ Cloud / IOT
                  HowTo: Node.js-Update
                  HowTo: Backup/Restore
                  Downloads
                  BLOG

                  351
                  Online

                  32.0k
                  Users

                  80.3k
                  Topics

                  1.3m
                  Posts

                  3
                  7
                  1070
                  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