NEWS
Kamera Steuerung (PTZ) mit Bewegungsmelder htp
-
@paul53 sagte in Kamera Steuerung (PTZ) mit Bewegungsmelder htp:
setState(dp.id, false);
Mal ohne Witz was ist jetzt anders ? Habe nur die Log Zeile eingefügt und auf einmal geht alles wie es soll !!! Ging vorher die ganze Zeit nicht richtig. Echt komisch !!!
21:25:14.607 info javascript.0 Stop script script.js.Skript_56_neuer_versuch
21:25:15.987 info javascript.0 Start javascript script.js.Skript_56_neuer_versuch
21:25:15.988 info javascript.0 script.js.Skript_56_neuer_versuch: registered 2 subscriptions and 0 schedules
21:25:28.688 info javascript.0 script.js.Skript_56_neuer_versuch: mihome.0.devices.sensor_motion_aq2_158d000236b7e6.state: true
21:25:38.703 info javascript.0 script.js.Skript_56_neuer_versuch: mihome.0.devices.sensor_motion_aq2_158d000236b7e6.state: false
21:25:57.158 info javascript.0 script.js.Skript_56_neuer_versuch: mihome.0.devices.sensor_motion_aq2_158d0002e922d3.state: true
21:26:07.167 info javascript.0 script.js.Skript_56_neuer_versuch: mihome.0.devices.sensor_motion_aq2_158d0002e922d3.state: false -
@kasperfunsurfer sagte in Kamera Steuerung (PTZ) mit Bewegungsmelder htp:
request(url + '/CGI-COMMAND/param.cgi?cmd=pushhostalarm');
Ist es möglich den Befehl 5 sec verzögert abzusetzen ? Die beiden Befehle kommen zu schnell hintereinander.
-
@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.
-
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 ?
-
@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
-
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.
-
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 } });
-
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
-
@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 } });
-
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: falseDesweiteren 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
-
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 !
-
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 -
@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: trueZwischen beiden BWM ist nur 1 ms Abstand ! Wie kann das sein ?
-
@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 -
@kasperfunsurfer
Dann versuche es mal mit getrennten Triggernconst 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); });
-
@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); });
-
@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); });
-
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 -
@kasperfunsurfer
Damit ich ich die Zeilennummern in den Warnungen zuordnen kann, muss ich das Skript so sehen, wie es bei Dir läuft. -
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.....