NEWS
Lampe blinken lassen => Set State im Intervall
-
Hi,
ich möchte meine Lampe, die an eine smarte Steckdose angeschlossen ist, per ioBroker JS Skript blinken lassen => 10x ein- und wieder ausschalten.
Hätte dafür eine Blink-Funktion geschrieben:
function blink() { for (var i = 0; i < 10; i++) { setState("shelly.Relay0.Switch",true) setTimeout(() => { setState("shelly.Relay0.Switch",false); }, 1000); } } blink();Die Lampe blinkt jedoch nur einmal und bleibt dann ausgeschaltet.
Was mache ich in der Schleife mit dem SetTimeout falsch?
Danke und LG
-
Hi,
ich möchte meine Lampe, die an eine smarte Steckdose angeschlossen ist, per ioBroker JS Skript blinken lassen => 10x ein- und wieder ausschalten.
Hätte dafür eine Blink-Funktion geschrieben:
function blink() { for (var i = 0; i < 10; i++) { setState("shelly.Relay0.Switch",true) setTimeout(() => { setState("shelly.Relay0.Switch",false); }, 1000); } } blink();Die Lampe blinkt jedoch nur einmal und bleibt dann ausgeschaltet.
Was mache ich in der Schleife mit dem SetTimeout falsch?
Danke und LG
@chco das ist kein Thema zum Forum!
ich hab das mal in die richtige (??) Kategorie verschoben. -
Hi,
ich möchte meine Lampe, die an eine smarte Steckdose angeschlossen ist, per ioBroker JS Skript blinken lassen => 10x ein- und wieder ausschalten.
Hätte dafür eine Blink-Funktion geschrieben:
function blink() { for (var i = 0; i < 10; i++) { setState("shelly.Relay0.Switch",true) setTimeout(() => { setState("shelly.Relay0.Switch",false); }, 1000); } } blink();Die Lampe blinkt jedoch nur einmal und bleibt dann ausgeschaltet.
Was mache ich in der Schleife mit dem SetTimeout falsch?
Danke und LG
probiersmal so:
let counter=0; let valId =""shelly.Relay0.Switch" let myInt= setInterval(async function () { counter++; let theState=getState(valId).val setState(valId, theState=!theState) if (counter==10) {clearInterval(myInt); myInt= null;} }, 2000);bei deiner version wird das extrem schnell hintereinader ausgeführt - da ist keine pause drin !
-
probiersmal so:
let counter=0; let valId =""shelly.Relay0.Switch" let myInt= setInterval(async function () { counter++; let theState=getState(valId).val setState(valId, theState=!theState) if (counter==10) {clearInterval(myInt); myInt= null;} }, 2000);bei deiner version wird das extrem schnell hintereinader ausgeführt - da ist keine pause drin !
@liv-in-sky : Funktioniert perfekt, danke!
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden