NEWS
Kamera Steuerung (PTZ) mit Bewegungsmelder htp
-
@kasperfunsurfer
Das sieht nach von Blockly generiertem Code aus. Für das Senden einer URL gibt es den Block request (unter Aktionen). -
Servus Paul,
ne eigentlich nicht. Habe es so immer Internet gefunden. Von Blockly habe ich ja noch weniger Ahnung.
Das script sollte eigentlich so Funktionieren:
Bewegung erkannt Bewegungsmelder auf True nach 30 sec über das Scipt den Bewegungsmelder wieder auf false setzen und den http Befehl aufrufen.
Grüße
-
@kasperfunsurfer sagte:
Habe es so immer Internet gefunden.
Der Poster hat Blockly verwendet.
@kasperfunsurfer sagte in Kamera Steuerung (PTZ) mit Bewegungsmelder htp:
Bewegung erkannt Bewegungsmelder auf True nach 30 sec über das Scipt den Bewegungsmelder wieder auf false setzen
Der BWM setzt den Datenpunkt nach einer eingestellten Verzögerungszeit von allein auf false, wenn keine Bewegung mehr erkannt wird. Außerdem ist der Datenpunkt in der Regel "read only".
-
So habe jetzt nochmal bisschen probiert.
ar request = require('request'); var url = 'http://*******/param.cgi?cmd=preset&-act=goto&-number=1'; var Trigger = ["mihome.0.devices.sensor_motion_aq2_158****.state","mihome.0.devices.sensor_motion_aq2_158****.state"]; on({id: Trigger, value: true}, function () { request(url); });
wie setzt man die Bewegungsmelder nach 30sec wieder zurück auf false ? Würde sonst über 2 min dauern !
Wo kommt der 2 Befehl hin http://******/CGI-COMMAND/param.cgi?cmd=pushhostalarm ? -
@paul53
Versuche es mal so.const idMotion = ["mihome.0.devices.sensor_motion_aq2_158****.state","mihome.0.devices.sensor_motion_aq2_158****.state"]; const url = 'http://IP-Address:Port/param.cgi?cmd='; var timer = null; on(idMotion, function(dp) { if(dp.state.val && !timer) { // Bewegung erkannt request(url + 'preset&-act=set&-status=1&-number=0'); timer = setTimeout(function() { request(url + 'pushhostalarm'); timer = null; }, 30000); // nach 30 s } });
-
@kasperfunsurfer sagte:
wie setzt man die Bewegungsmelder nach 30sec wieder zurück auf false ? Würde sonst über 2 min dauern !
Die 2 min stören doch nicht, da nur die Flanke false --> true ausgewertet wird.
var request = require('request');
ist in neueren Versionen des Javascript-Adapters nicht erforderlich.
-
@paul53 der Bewegungsmelder wird nicht zurückgesetzt und mit dem pushhostalarm haut es auch nicht hin !
-
@kasperfunsurfer sagte:
der Bewegungsmelder wird nicht zurückgesetzt
Wenn er sich zurücksetzen läßt, dann füge ein setState() ein.
timer = setTimeout(function() { request(url + 'pushhostalarm'); setState(idMotion, false); timer = null; }, 30000); // nach 30 s
-
@paul53 der Bewegungsmelder wird immer noch nicht zurückgesetzt. Merkwürdiger weise geht das bei dem Script was ich als erstes eingefügt habe. Die Cgi Kommandos sind leider auch unterschiedlich so das man ein url nicht nehmen kann.
………./CGI-COMMAND/param.cgi?cmd=pushhostalarm
………./param.cgi?cmd=preset&-act=goto&-number= -
@kasperfunsurfer sagte:
Merkwürdiger weise geht das bei dem Script was ich als erstes eingefügt habe.
In dem Skript wird der Datenpunkt mit ack = true zurückgesetzt, nicht der Bewegungsmelder, denn an den wird nicht gesendet.
-
@paul53 ich meinte das hier.
Ich habe leider zu wenig Ahnung davon....// Wenn Bewegungsobjekt geändert wurde erkannt on({id: 'mihome.0.devices.sensor_motion_aq2_1************.state', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; // Wenn Bewegung erkannt if ((function (){var val = getState("mihome.0.devices.sensor_motion_aq2_1*state").val; if (val === 'true') return true; if (val === 'false') return false; return !!val;})() == true) { // Bewegungsmelder "zurücksetzen" setStateDelayed("mihome.0.devices.sensor_motion_aq2_1*************.state", false, 5000, true); } });
-
-
Ja genau damit Funktioniert es komischer weise.
-
@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);