Hallo liebes Forum,
ich habe eine Instar-Kamera, die per MQTT eine Nachricht an IoBroker sendet, sobald eine Bewegung erkannt wird.
Im einem Skipt lasse ich bei Änderung des MQTT-Objekts eine Variable auf "true" (Bewegung erkannt) bzw. "false" setzen (sobald nach 10 Sekunden keine Bewegung mehr erkannt wurde).
Die Boolean-Variable steuern dabei eine VIS, die dann das Kamerabild anzeigt.
Das Skript ist folgendes:
var timer = null;
setState("0_userdata.0.vis.showHaustuerCam2", false);
on({id: "mqtt.1.instar.***.status.alarm.triggered", change: 'any'}, function (obj) {
console.log("HaustürCam-Event-Trigger");
if(!getState("0_userdata.0.vis.showHaustuerCam2").val){
console.log("showHaustuerCam auf true");
setState("0_userdata.0.vis.showHaustuerCam2", true);
}
if(timer){
console.log("Reset Timer");
clearTimeout(timer);
}
timer = setTimeout(function() {
timer = null; // Timer abgelaufen, jetzt löschen
setState("0_userdata.0.vis.showHaustuerCam2", false);
console.log("showHaustuerCam durch Timer auf false");
}, 10000);
});
Bis vor kurzem hat alles bestimmt mehr als ein halbes Jahr wie gewünscht funktioniert.
Seit kurzem (ich habe eigentliche keine Updates gemacht und das System nicht verändert) ist es jedoch so, dass die Boolean-Variable "showHaustuerCam2" endlos lange flackert, sobald sich jemand länger vor der Kamera bewegt.
Die Kamera sendet bei jeder Bewegung eine Nachricht, aber das Skript ist ja so programmiert, dass der Timer, der die Variable auf true setzt, immer wieder resettet wird.
Aus irgendeinem Grund funktioniert dies aber nicht (mehr).
Es wird dann stundenlang die Variable "showHaustuerCam2" zwischen true und false hin und her gesetzt, die Variable flackert also. Das hin und her setzen passiert dabei jede Sekunde. Es ist auf jeden Fall nicht das MQTT-Objekt, dass sich dann noch verändert (wie man am LOG gut sehen kann).
Ich habe überhaupt keine Erklärung, warum dies nun plötzlich so ist. Zunächst dachte ich, das vielleicht mein gesamtes System (ioBroker läuft auf einem NAS) überlastet ist und daher das "True-Setzen" des Timers stundenlang "nachgeholt" wird und das Löschen des Timers nicht funktioniert. Aber ein Neustart des Systems etc. hat zu keiner Verbesserung geführt.
Interessant ist auch, dass im LOG nichts von dem "Flackern" der Variable zu sehen ist:
2020-11-18 12:03:33.442 - [32minfo[39m: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
2020-11-18 12:03:33.443 - [32minfo[39m: javascript.0 (165) script.js.common.Haustuerkamera: showHaustuerCam auf true
2020-11-18 12:03:34.474 - [32minfo[39m: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
2020-11-18 12:03:34.474 - [32minfo[39m: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
2020-11-18 12:03:35.488 - [32minfo[39m: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
2020-11-18 12:03:35.488 - [32minfo[39m: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
2020-11-18 12:03:36.505 - [32minfo[39m: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
2020-11-18 12:03:36.506 - [32minfo[39m: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
2020-11-18 12:03:37.526 - [32minfo[39m: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
2020-11-18 12:03:37.527 - [32minfo[39m: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
2020-11-18 12:03:38.560 - [32minfo[39m: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
2020-11-18 12:03:38.560 - [32minfo[39m: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
2020-11-18 12:03:48.561 - [32minfo[39m: javascript.0 (165) script.js.common.Haustuerkamera: showHaustuerCam durch Timer auf false
Wie man im Log sehen kann, funktioniert eigentlich alles wie gewünscht:
Sobald die Kamera nichts mehr triggert, wird die Variable auf False gesetzt.
Ich habe außerdem das Ändern der Variable einmal mit flot getracket.
Auch da kann man schön sehen, dass der Wert flackert.

Ich habe leider überhaupt keine Idee, warum das alles so ist, vor allem weil es bis vor zwei bis drei Wochen noch alles problemlos funktioniert hat.
Vielleicht hat jemand ja eine Idee????