NEWS
Problem mit Bewegungsmelder
-
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
-
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
-
obj(.newState) wird vom Callback der on-Überwachung übergeben, das ist schon ok so. Müsste identisch sein mit dem Inhalt der Variable bewegung.
-
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
-
Mit der Variable Helligkeit wird doch nur die Helligkeit überprüft.
Also ob es dunkel genug ist zum einschalten.
-
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 von
getState('hm-rpc.0.MEQ0642577.1.MOTION').val
und````
obj.newState.valif (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
-
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.
-
Das Script "Foto von Cam an Telegram" ist unter common angelegt.
Das Script "Licht schalten" unter der Gruppe Haus.
Falls das hilft?