05.10.2022, 10:00
Ich habe bei ioBroker ein Problem eröffnet. Das ist ziemlich länglich geworden - es geht mir im Wesentlichen jetzt um diesen Post.
Die Variable "switchStatus" wird aus einem Objekt ausgelesen und in der gezeigten "if/then/else" Abfrage ausgewertet.
Im "then"-Zweig wird, wie man sieht, im Loop eine Meldung ausgegeben udn der Wert der Variablen "switchStatus" neu ermittelt. Aber es gibt keine Ende-Bedingung. Meines Erachtens müsste der Loop damit eben endlos laufen. Tatsächlich wird, wenn der "switchStatus" auf false geht, der "else"-Zweig angestoßen. Die Logik verstehe ich nicht, die "if"-Abfrage ist Vergangenheit, wieso weiß "setInterval()" was von dem else-Zweig?
Irgendeine logische Erklärung wäre mir lieb.
Code:
var switchStatus, Intervall;
on({id: "shelly.0.SHSW-1#E8DB84D401CC#1.ext.switch1"/*Switch*/, change: "ne"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
switchStatus = (obj.state ? obj.state.val : "");
console.log(('Scriptanfang Status: ' + String(switchStatus)));
if (switchStatus == true) {
Intervall = setInterval(async function () {
console.log(('Loopanfang Status: ' + String(switchStatus)));
switchStatus = (obj.state ? obj.state.val : "");
}, 20000);
} else {
console.log(('Else Status: ' + String(switchStatus)));
(function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
}
});
Die Variable "switchStatus" wird aus einem Objekt ausgelesen und in der gezeigten "if/then/else" Abfrage ausgewertet.
Im "then"-Zweig wird, wie man sieht, im Loop eine Meldung ausgegeben udn der Wert der Variablen "switchStatus" neu ermittelt. Aber es gibt keine Ende-Bedingung. Meines Erachtens müsste der Loop damit eben endlos laufen. Tatsächlich wird, wenn der "switchStatus" auf false geht, der "else"-Zweig angestoßen. Die Logik verstehe ich nicht, die "if"-Abfrage ist Vergangenheit, wieso weiß "setInterval()" was von dem else-Zweig?
Irgendeine logische Erklärung wäre mir lieb.