29.02.2024, 14:46
Wenn ich das richtig überblicke müsstest Du die Position des Rolladen prüfen und, wenn er seine Endstellung erreicht hat, den Timer wieder stoppen. Das geht, wenn Du die ID des Timers einer Variablen zuweist und clearInterval mit dieser ID als Parameter aufrufst:
Das ist natürlich unvollständig, denn der Endwert, auf den Du prüfen musst, hängt davon ab oder der Rolladen rauf oder runter geht.
PS
Code:
let timerForShutter = setInterval(update, 2000);
update();
function update() {
//var slider = document.getElementById("XSlider");
fetch('http://192.168.188.121/cm?cmnd=ShutterPosition%20?').then(function (response) {
response.text().then(function (text) {
const Status = JSON.parse(text);
console.log("Anzeige der Constante", Status); // Anzeige FireFox F12 => Entwicklerwerkzeug: "" Object { POWER: "ON" } ""
const data = Status.Shutter1.Position;
document.getElementById('Status').innerHTML = data;
console.log("Anzeige", data);
document.getElementById("XSlider").value = data;
// Hat der Rolladen seine Endstellung erreicht?
if (data == 0) {
// Timer stoppen:
clearInterval(timerForShutter);
}
});
});
}
PS
Zitat:das Problem, dass wenn die Webseite geöffnet ist, der Intervall dauernd anliegt und später dann werden noch meherer Device abgefrage. Das würde ne menge Datenaustausch zwischen den Devices und der Webseite (dann auch mobil auf dem Handy) bedeuten.Für das Problem gibt es noch eine andere Lösung: Mit Websockets kann der Server bzw. Tasmota von sich aus Daten zum Client bzw. Browser senden. Das setzt natürlich voraus, dass Tasmota das unterstützt. Müsste man überprüfen.
Glaube denen, die die Wahrheit suchen, und zweifle an denen, die sie gefunden haben.
(Andrι Gide (1869-1951), frz. Schriftst., 1947 Nobelpreis)
(Andrι Gide (1869-1951), frz. Schriftst., 1947 Nobelpreis)