NEWS
Countdown
-
Hallo Leute,
Folgendes beschäftigt mich schon seit Tagen.
Habe folgendes Script für einen Countdown:
createState('countdown', 10); createState('afterCount', false); createState('countTrigger', false); function count() { setTimeout(function () { var timer = getState('countdown').val || 10; if (timer > 1) { setState('countTrigger', false); setState('countdown', timer - 1); count(); } else { setState('countdown', 0); setState('afterCount', true); } }, 1000); } on('countTrigger', function (obj) { if (obj.newState.val === true || obj.newState.val === 'true' || obj.newState.val == 1) { setState('countdown', 10); // 2h30min = 150min = 9000s setState('afterCount', false); count(); } }); // Wenn Wama an, Counter starten on('hm-rega.0.Waschmaschine', function (obj) { // Homematic Variable if (obj.newState.val === true || obj.newState.val === 'true' || obj.newState.val === 'läuft' || obj.newState.val == 1) { setState('countTrigger', true); } });
Soweit so gut, das funktioniert perfekt.
Möchte diesen in der Vis anzeigen, damit ich sehe wieviel Zeit bis zum Scharfstellen der Alarmanlage noch übrig ist.
Wenn ich jetzt aber den count Trigger mit einen Taster in der Vis triggere , zählt er zwar aber nicht korrekt. Zuerst in 2er Schritten usw….
Wenn ich den count Trigger händisch auf true stelle läuft er normal durch.
Was mache ich hier falsch?
mfg Daniel
-
Hat das noch keiner gehabt?
mhm
-
Füge mal ein change: "ne" in dein on ein.
on({id: 'countTrigger', change: "ne"}, function (obj)
Dann wird nur reagiert, wenn sich der Wert von countTrigger geändert hat. Ich vermute mal, dass die Funktion mehrfach parallel ausgeführt wird.
Außerdem erschließt sich mir dieser Teil hier nicht:
var timer = getState('countdown').val || 10];
Warum "||10"?
-
Ich denke mal du hast das Script von hier: viewtopic.php?f=23&t=737&fbclid=IwAR0XN … lvm2VGG7eU von Bluefox. Dort wird ein Schalter betätigt und nach Ablauf den Countdown ein anderer Schalter geschaltet. Stimmt das soweit? Wenn ja, musst du natürlich die zusätzlichen Aktionen rauslöschen.