NEWS
Kamera Steuerung (PTZ) mit Bewegungsmelder htp
-
@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:25vielleicht liegt es ja daran
-
@kasperfunsurfer sagte
compile failed: at script.js.Skript_4:25
?? Das Skript hat doch keine 25 Zeilen.
-
@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 -
@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. -
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 } });
-
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......
-
@kasperfunsurfer sagte:
Aber der Bewegungsmelder wird immer noch nicht zurückgesetzt
Ja, na klar ! idMotion ist ein Array von IDs. Ersetze bitte
setState(idMotion, false);
durch
setState(dp.id, false);
-
@paul53 sagte in Kamera Steuerung (PTZ) mit Bewegungsmelder htp:
setState(idMotion, false);
Die Fehlermeldung ist dann weg. Die Bewegungsmelder setzen sich immer noch nicht zurück. Das nächste Problem ist dann die Kamera nicht mehr in Position fährt wenn ich ```setState(dp.id, false); eingebe.
Achso vielen DANK für den gedult -
@kasperfunsurfer
Füge mal ein Log ein, um zu sehen, was passiert:on(idMotion, function(dp) { log(dp.id + ': ' + dp.state.val); // eingefügte Log-Zeile if(dp.state.val && !timer) { // Bewegung erkannt
-
@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 !