Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Problem mit Bewegungsmelder

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Problem mit Bewegungsmelder

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

      Folgendes Problem ist bei mir aufgetreten.

      Ich habe einen Bewegungsmelder für Aussen (HM-Sen-MDIR-O-2).

      Mit diesem BWM laufen 2 Scripte.

      Erstes Script - Bewegungsmelder schaltet Aussenbeleuchtung:

      //http://forum.iobroker.net/viewtopic.php?f=21&t=2225
      
      on({id: 'hm-rpc.0.MEQ0642577.1.MOTION',
          change: 'any' 
      }, function (obj) {                                                                                          // Bewegung überwachen
          var bewegung = getState('hm-rpc.0.MEQ0642577.1.MOTION').val;                                             // hier aber auch obj.newState.val
          var helligkeit = getState('hm-rpc.0.MEQ0642577.1.BRIGHTNESS').val;
          if (obj.newState.val === true) {                                                                         // Bewegung true                                    
              log("---> Licht - Gallerie - ausgelöst durch Bewegungsmelder............","info")
              if (helligkeit < 70) {                                                                               // Helligkeitsgrenzwert bei Bedarf ändern
                  setState("hm-rpc.0.NEQ1316057.3.ON_TIME"/*Gartenlicht vorn ein - aus.ON_TIME*/, 300);            // 300s Einschaltdauer
                  setState("hm-rpc.0.NEQ1316057.3.STATE"/*Gartenlicht ein - aus.STATE*/, true);                    // schalte Lampe an
                  log("---> Licht - Gartenlicht vorn an für 300 Sekunden............" ,"info");
              } else { 
                  log("---> Licht - Licht zu hell um anzuschalten da Helligkeit: " + helligkeit + " %"  ,"info");  // Helligkeitswert vom Melder sind keine Prozent
              }
          }
      });
      

      Zweites Script - BWM sendet Foto von Kamera:

      // Script: TelegramBild
      // Script: Bild und Text per Telegram verschicken, wenn ein Sensor auslöst
      // Script: 15.05.2016
      // Script: V0.81
      // Autor: thomassch
      // Grundidee: http://forum.iobroker.net/viewtopic.php?f=21&t=2609&p=24557&hilit=telegram#p24557
      // Verwendet: https://github.com/kevva/download
      
      // weiteres: https://github.com/calvinmetcalf/copyfiles
      
      // IPCams: Dericam 32GB / 16GB
      
      // History
      // 29.05.2016 V0.81  download Funktion entfernt und durch request ersetzt
      
      var logging = true;
      var request = require('request');    // Modul Request muss in Javascript-Einstellungen vorhanden sein
      var fs      = require('fs');
      var xCopyFiles = require('copyfiles'); // Modul Copyfiles zum Dateikopieren über Javascript-Einstellungen
      
      var dest = '/surveillance/Image/';
      var foto_urlTerrasse   =    "http://192.168.xxx.xxx/tmpfs/auto.jpg?usr=xxx&pwd=xxx"; // IP Webcam Snapshot Terrasse
      var foto_urlVorgarten =    "http://192.168.xxx.xxx/tmpfs/auto.jpg?usr=xxx&pwd=xxx"; // IP Webcam Snapshot Vorgarten
      var txtaction = "..."; // Telegram Text
      var xBildpfad = "..."; // Bild mit Pfad
      
      if (logging) log("TelegramBild - Script start", "info");
      
      // Funktion zum Versenden einer Meldung und Bild über Telegramm
      // myObj   : Auslöseobjekt
      // myText  : wird im Telegramm als Objekttext (Klartext) angezeigt
      // txtTrue : wird bei auslösen = 1 im Telegram angezeigt
      // txtFalse: wird bei auslösen = 0 im Telegram angezeigt (hier nicht verwendet)
      // txtOrt  : Übergabe der WebCam Adresse
      // txtBild : lokaler Name für das Bild dass dann versendet wird
      
      // EInzelbild verschicken
      function xaktionCam(myObj, myText, txtTrue, txtFalse, txtUrlOrt, txtBild)
      {
          if (logging) log("TelegramBild.xaktionCam - start", "info");
          if (myObj.newState.val === true) {
              txtaction = txtTrue;
      
              // erst mal Text
              var myTel = myText + "" + txtaction;
              if (logging) log("TelegramBild.xaktionCam - state = 1: " + myTel, "info");
              setState("telegram.0.communicate.response", myTel);
      
              // dann von Cam downloaden
              myDownload(txtUrlOrt, dest, txtBild+".jpeg");
      
              // Bild versenden
              setTimeout(function(){
                  sendTo('telegram.0', dest+txtBild);
                  if (logging)  log("TelegramBild.xaktionCam - Bild versendet" + dest+txtBild+'.jpeg', "info");
              }, 6000); // 6 sek warten bevor man das JPG verschickt
      
              // Bild kopieren in VIS Verzeichnis für Anzeige im Webübersichtsbild      
              setTimeout(
                  function()
                  {
                      xBildpfad = dest+txtBild+".jpeg";
                      if (logging)  log("TelegramBild.xaktionCam - CopyFiles xBildpfad: "+ xBildpfad, "info");
                      new xCopyFiles([xBildpfad,'/homes/admin/opt/iobroker/iobroker-data/files/vis.0/Haus'],true,function (err){ 
                          if (logging)  log("TelegramBild.xaktionCam - CopyFiles err: "+ err, "info"); 
                          if (err) {
                             if (logging)  log("TelegramBild.xaktionCam - CopyFiles Error", "info");
                          } else {
                             if (logging)  log("TelegramBild.xaktionCam - CopyFiles ok", "info");
                          }
                      });
              }, 30000); // 20 sek warten bevor man das JPG umkopiert   
          }
      
      }
      
      // Funktion zum Download von WebCam Website
      function myDownload(mySource, myDest, myBildName)
      {
          // dann Bild von Cam Laden
          request.get({url: mySource, encoding: 'binary'}, function (err, response, body) {
              fs.writeFile(myDest + myBildName + ".jpeg", body, 'binary', function(err) {
                  if (err) {
                      if (logging) log("TelegramBild.xaktionCam - Fehler beim Bild: "+ myBildName + "speichern", "warn");
                      } else {
                      if (logging) log("TelegramBild.xaktionCam - Bild: " + myBildName + " gespeichert", "info");
                  }
              });
          });
      }
      
      // Alle Cams aufnehmen und verschicken
      function xaktionCamAlle(myObj, myText)
      {
        if (logging) log("xaktionCamAlle - start", "info");
        if (myObj.newState.val === true) {
      
            // erst mal Text
            var myTel = myText;
            if (logging) log("TelegramBild.xaktionCamAlle - state = 1: " + myTel, "info");
            setState("telegram.0.communicate.response", myTel);
      
            // erst mal aktuelle Bilder von den Cams holen
            myDownload(foto_urlTerrasse,   dest, "BildAlarmTerrasse");
            myDownload(foto_urlVorgarten, dest, "BildAlarmVorgarten");
            //myDownload(foto_urlGarten, dest, "BildAlarmGarten");
            //myDownload(foto_urlWohn,   dest, "BildAlarmWohnzimmer");
      
            // Die Bilder per Telegramm nach 20 sekunden verschicken
            setTimeout(
              function()
              {
                sendTo('telegram.0', dest+"BildAlarmTerrasse"+'.jpeg');
                sendTo('telegram.0', dest+"BildAlarmVorgarten"+'.jpeg');
                //sendTo('telegram.0', dest+"BildAlarmGarten"+'.jpeg');
                //sendTo('telegram.0', dest+"BildAlarmWohnzimmer"+'.jpeg');
              }, 20000); // 20 sek warten bevor man das JPG verschickt
      
            // und nun alle 4 umkopieren
            // Bild kopieren in VIS Verzeichnis für Anzeige im Webübersichtsbild      
            setTimeout(
              function()
              {
                  new xCopyFiles([dest+"BildAlarmTerrasse.jpeg"      ,'/homes/admin/opt/homes/admin/opt/iobroker/iobroker-data/files/vis.0/main/Haus'],true,function (err){ });
                  new xCopyFiles([dest+"BildAlarmVorgarten.jpeg"    ,'/homes/admin/opt/iobroker/iobroker-data/files/vis.0/main/Haus'],true,function (err){ });
                  //new xCopyFiles([dest+"BildAlarmGarten.jpeg"    ,'/iobroker/iobroker-data/files/vis.0/main/Haus'],true,function (err){ });
                  //new xCopyFiles([dest+"BildAlarmWohnzimmer.jpeg",'/iobroker/iobroker-data/files/vis.0/main/Haus'],true,function (err){ });
              }, 30000); // 30 sek warten bevor man das JPG umkopiert
      
        }
      }
      
      // Auslöser
      on({id: "hm-rpc.0.NEQ0264718.1.STATE",          val: true}, function(obj) { xaktionCam(obj, "Die Innentür wurde "       ,"geöffnet",""      , foto_urlVorgarten  ,   "BildVorgarten"); }); // Innentür
      on({id: "hm-rpc.0.MEQ0642577.1.MOTION",         val: true}, function(obj) { xaktionCam(obj, "Vorgarten Bewegungsmelder "   ,"ausgelöst",""     , foto_urlVorgarten,   "BildTerrasse"); }); // Garten
      //on({id: "hm-rpc.0.MEQxxx.1.PRESS_SHORT",    val: true}, function(obj) { xaktionCam(obj, "Klingelsensor "            ,"es klingelt",""   , foto_urlGarage,   "BildKlingel"); }); // Klingelsensor
      //on({id: "hm-rpc.0.MEQxxx.1.STATE",          val: true}, function(obj) { xaktionCam(obj, "Garagentor "               ,"wird geöffnet","" , foto_urlGarage,   "BildGaragentor"); }); // Garagentor
      //on({id: "hm-rpc.0.MEQxxx.1.STATE",          val: true}, function(obj) { xaktionCam(obj, "Haustür "                  ,"wird geöffnet","" , foto_urlGarage,   "BildHausTuer"); }); // Garagentor
      //on({id: "hm-rpc.0.MEQxxx.1.STATE",          val: true}, function(obj) { xaktionCam(obj, "Waschraum Tür "            ,"wird geöffnet","" , foto_urlGarten,   "BildWaschRaumTuer"); }); // Waschraumtüre
      
      // AlarmEreignis
      //on({id: "hm-rega.0.3047",  change:"ne"},                    function(obj) { xaktionCamAlle(obj, "!!! xxxx Alarm","ausgelöst xxxx !!!"); });
      //on({id: "hm-rega.0.1790",  change:"ne"},                    function(obj) { xaktionCamAlle(obj, "!!! Voralarm","ausgelöst!!!"); });
      

      Der BWM hat folgende Einstellung:

      Empfindlichkeit Auslösen bei "jedem" Sensor-Impuls

      Wahl des Sendeabstandes "klassisch"

      Sendeabstand "240s"

      Innerhalb des Sendeabstandes erkannte Bewegung senden "X"

      Helligkeitsfilter "8"

      Die übertragene Helligkeit ist das Minimum der letzten 8 Werte (Messung alle 6 Minuten)

      LED-Leuchtzeit (gn/rt) "0,01"s (0 - 1.27)

      Wenn der Bewegungsmelder eine Bewegung erkennt, wird ein Bild gemacht.

      Wird zwar nicht abgespeichert, aber das ist ein anderes Problem.

      Und dann von allein nach ~240s wird das Licht geschalten (also Lichtscript ausgeführt) und dann noch einmal das Foto-Script ausgeführt.

      Was beisst sich da?

      Die Einstellungen vom Bewegungsmelder?

      Log:

      javascript.0	2017-04-24 14:46:56.284	info	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - Bild versendet/surveillance/Image/BildTerrasse.jpeg
      javascript.0	2017-04-24 14:46:50.372	warn	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - Fehler beim Bild: BildTerrasse.jpegspeichern
      javascript.0	2017-04-24 14:46:50.290	info	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - state = 1: Vorgarten Bewegungsmelder ausgelöst
      javascript.0	2017-04-24 14:46:50.290	info	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - start
      javascript.0	2017-04-24 14:46:50.290	info	script.js.Haus.Bewegungsmelder_schaltet_Vorgarten_Licht: ---> Licht - Licht zu hell um anzuschalten da Helligkeit: 217 %
      javascript.0	2017-04-24 14:46:50.289	info	script.js.Haus.Bewegungsmelder_schaltet_Vorgarten_Licht: ---> Licht - Gallerie - ausgelöst durch Bewegungsmelder............
      javascript.0	2017-04-24 14:46:31.626	info	script.js.Haus.Anwesenheitscontrol: Anwesenheitsliste Baba
      javascript.0	2017-04-24 14:46:31.625	info	script.js.Haus.Anwesenheitscontrol: Anwesenheit genereller Status true
      javascript.0	2017-04-24 14:46:31.625	info	script.js.Haus.Anwesenheitscontrol: Anwesenheit Nadine false
      javascript.0	2017-04-24 14:46:31.624	info	script.js.Haus.Anwesenheitscontrol: Anwesenheit Jeannette false
      javascript.0	2017-04-24 14:46:31.623	info	script.js.Haus.Anwesenheitscontrol: Anwesenheit Max false
      javascript.0	2017-04-24 14:46:31.621	info	script.js.Haus.Anwesenheitscontrol: Anwesenheit Baba true
      javascript.0	2017-04-24 14:46:31.618	info	script.js.Haus.Anwesenheitscontrol: Ausloeser: Jeannette
      host.Datenserver2	2017-04-24 14:45:04.844	info	instance system.adapter.weatherunderground.0 terminated with code 0 (OK)
      weatherunderground.0	2017-04-24 14:45:01.531	info	starting. Version 1.0.2 in /volume2/homes/admin/opt/iobroker/node_modules/iobroker.weatherunderground, node: v4.4.2
      host.Datenserver2	2017-04-24 14:45:00.292	info	instance system.adapter.weatherunderground.0 started with pid 1333
      javascript.0	2017-04-24 14:45:00.239	info	script.js.Test.Servicemeldung: Anzahl Homematic-Servicemeldungen: 0
      javascript.0	2017-04-24 14:45:00.239	info	script.js.Test.Servicemeldung: Homematic-Servicemeldungen:
      javascript.0	2017-04-24 14:43:11.400	info	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - CopyFiles ok
      javascript.0	2017-04-24 14:43:11.400	info	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - CopyFiles err: undefined
      javascript.0	2017-04-24 14:43:11.397	info	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - CopyFiles xBildpfad: /surveillance/Image/BildTerrasse.jpeg
      javascript.0	2017-04-24 14:43:08.666	info	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - CopyFiles ok
      javascript.0	2017-04-24 14:43:08.666	info	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - CopyFiles err: undefined
      javascript.0	2017-04-24 14:43:08.656	info	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - CopyFiles xBildpfad: /surveillance/Image/BildVorgarten.jpeg
      javascript.0	2017-04-24 14:42:47.398	info	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - Bild versendet/surveillance/Image/BildTerrasse.jpeg
      fritzdect.0	2017-04-24 14:42:47.314	info	polling! fritzdect is alive
      javascript.0	2017-04-24 14:42:44.656	info	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - Bild versendet/surveillance/Image/BildVorgarten.jpeg
      javascript.0	2017-04-24 14:42:41.477	warn	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - Fehler beim Bild: BildTerrasse.jpegspeichern
      javascript.0	2017-04-24 14:42:41.393	info	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - state = 1: Vorgarten Bewegungsmelder ausgelöst
      javascript.0	2017-04-24 14:42:41.393	info	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - start
      javascript.0	2017-04-24 14:42:41.393	info	script.js.Haus.Bewegungsmelder_schaltet_Vorgarten_Licht: ---> Licht - Licht zu hell um anzuschalten da Helligkeit: 215 %
      javascript.0	2017-04-24 14:42:41.392	info	script.js.Haus.Bewegungsmelder_schaltet_Vorgarten_Licht: ---> Licht - Gallerie - ausgelöst durch Bewegungsmelder............
      javascript.0	2017-04-24 14:42:38.726	warn	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - Fehler beim Bild: BildVorgarten.jpegspeichern
      javascript.0	2017-04-24 14:42:38.650	info	script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - state = 1: Die Innentür wurde geöffnet
      

      Gruss Superdad

      1 Reply Last reply Reply Quote 0
      • eric2905
        eric2905 last edited by

        Hi,

        ich bin zwar nicht der Scripter, aber etwas sehe ich:

        on({id: 'hm-rpc.0.MEQ0642577.1.MOTION',
            change: 'any' 
        }, function (obj) {                                                                                          // Bewegung überwachen
            var bewegung = getState('hm-rpc.0.MEQ0642577.1.MOTION').val;                // hier aber auch obj.newState.val
            var helligkeit = getState('hm-rpc.0.MEQ0642577.1.BRIGHTNESS').val;
            if (obj.newState.val === true) {                                                                  // Bewegung true
        

        Du fragst in der on-Command

        if (obj.newState.val === true) { 
        

        ab, aber ""newState" wird vorher nirgends definiert / gefüllt.

        Oder übersehe ich da was?

        Gruß,

        Eric

        1 Reply Last reply Reply Quote 0
        • AlCalzone
          AlCalzone Developer last edited by

          obj(.newState) wird vom Callback der on-Überwachung übergeben, das ist schon ok so. Müsste identisch sein mit dem Inhalt der Variable bewegung.

          1 Reply Last reply Reply Quote 0
          • eric2905
            eric2905 last edited by

            Wie gesagt, bin ich nicht der Scripter …

            Woher weiß die Routine, das "bewegung" und nicht "helligkeit" genommen werden soll?

            Ich sehe 2 Definitionen vor der if-Abfrage.

            Gruß,

            Eric

            Von unterwegs getippert

            1 Reply Last reply Reply Quote 0
            • S
              Superdad last edited by

              Mit der Variable Helligkeit wird doch nur die Helligkeit überprüft.

              Also ob es dunkel genug ist zum einschalten.

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

                @eric2905:

                Wie gesagt, bin ich nicht der Scripter …

                Woher weiß die Routine, das "bewegung" und nicht "helligkeit" genommen werden soll?

                Ich sehe 2 Definitionen vor der if-Abfrage.

                Gruß,

                Eric

                Von unterwegs getippert `

                on({id: 'hm-rpc.0.MEQ0642577.1.MOTION',
                    change: 'any' 
                }, function (obj) {    
                

                reagiert nur auf Bewegung. Wenn auch auf jede Meldung, auch die Meldung, dass keine Bewegung stattfindet (warum "any" und nicht "ne"?). Mit der Helligkeit hat das nix zu tun. Die Helligkeit wird erst später und nur bei Bewegung abgefragt.

                Wie es im Kommentar schon steht sie die Werte vongetState('hm-rpc.0.MEQ0642577.1.MOTION').valund````
                obj.newState.val

                
                

                if (obj.newState.val === true) {
                kann man schön abkürzen mit
                if (obj.state.val) {

                
                Aber was genau ist das Problem? Beschreib nochmal den IST und den SOLL Zustand.
                
                Gruß
                
                Pix
                1 Reply Last reply Reply Quote 0
                • S
                  Superdad last edited by

                  Hallo pix,

                  Also, das Script mit der Kamera und der Lichtschaltung im Garten werden beide ausgeführt.

                  Aber nach 240s werden beide Scripte von selbst noch einmal ausgeführt werden.

                  Ich denke, dass es mit dem Bewegungsmelder zusammen hängt.

                  1 Reply Last reply Reply Quote 0
                  • S
                    Superdad last edited by

                    Das Script "Foto von Cam an Telegram" ist unter common angelegt.

                    Das Script "Licht schalten" unter der Gruppe Haus.

                    Falls das hilft?

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    821
                    Online

                    31.7k
                    Users

                    79.8k
                    Topics

                    1.3m
                    Posts

                    4
                    8
                    1425
                    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