NEWS
SOLVED: Handbuch verständnis Frage
-
Hallo zusammen,
Im Handbuch gibt es ein Beispiel bei welchem steht das die Funktion nur einmal ausgeführt wird:
https://github.com/ioBroker/ioBroker.ja … uere-state
Meine Frage ist jetzt, warum wird das nicht zweimal ausgeführt? Wegen dem "clear running" oder weil derselbe Wert nochmal gesetzt wird?
Ich würde gerne meinen Wheinachtsbaum per Broadlink Adapter schalten. Leider reagieren nicht alle Lampen bei dem ersten mal drücken. (Das ist bei der mitgelieferten Fernbedienung auch so.).
So dachte ich mir ich schicke den Befehl einfach ein paar mal hintereinader. Das scheint auch zu klappen (oder der braodlink sendet einfach ein stärkeres signal). Interessieren warum das nur einmal gesendet wird und ob das in meinem Fall auch so ist würde mich das schon:
vielen Dank vorab!
Jens
-
warum machst du es auf diese art und weise ?
du setzt ein un den selber wert mit einem delay von 1000MS zur gleiche zeit, das ergibt keinen sin die schlagen sich gegeneinander im weg.
wen du einen auf 1000MS, de anderen auf 2000MS usw setzt wuerde ich es verstehen.
Zudem sorgt natuerchlich der clear running beim letzten wert dafuer das alle andere vorigen time-outs geloescht werden.
Wen du das weck laesst wuerder er es doppelt aus fueren, aber auch dan ist 2 mal ur gleichen zeit (1000MS) nicht gerade sinvol.
Was ist dein ziel ?
-
Ach so, die werden dann gleichzeitig ausgeführt? Ich dachte die würden jeweils um 1 sekunde verzögert nach dem vorherigen ausgeführt.
Ich möchte das jeweilige Komando mehrfach senden, da die Leuchten nicht immer beim ersten schalten reagieren (das ist auch mit der original fernbedienung so).
Jetzt habe ich nochmal in den code geschaut.. da ist kein threading drin.. also müsten die doch alle nacheinander mit jeweils 1000 ms hintereinander ausgeführt werden(?)
setStateDelayed("broadlink.1.learnedSignals.Weihnachtsbaum"/*Weihnachtsbaum*/, true, 1000, false); setStateDelayed("broadlink.1.learnedSignals.Weihnachtsbaum"/*Weihnachtsbaum*/, true, 1000, false); setStateDelayed("broadlink.1.learnedSignals.Weihnachtsbaum"/*Weihnachtsbaum*/, true, 1000, false); setStateDelayed("broadlink.1.learnedSignals.Weihnachtsbaum"/*Weihnachtsbaum*/, true, 1000, false); setStateDelayed("broadlink.1.learnedSignals.Weihnachtsbaum"/*Weihnachtsbaum*/, true, 1000, false);
-
Meine Frage ist jetzt, warum wird das nicht zweimal ausgeführt? Wegen dem "clear running" oder weil derselbe Wert nochmal gesetzt wird? `
Hallo sabix
Das liegt an dem "clear running" / "löschen falls läuft".
Timer sind eine schöne Sache, aber mit Vorsicht einzusetzen!
Der Timer in dem Steuere-Baustein, bewirkt KEINE Pause im Programmablauf.
Es wird also keine Sek. gewartet bis der nächste Baustein ausgeführt wird.
Ein Timer bewirkt nur, das die Aktion später ausgeführt wird.
Alle Steuere-Bausteine mit der gleichen Objekt-ID benutzen den selben Timer.
Timer die gestoppt werden führen ihre Aktion NICHT aus.
Da in dem zweiten Baustein "löschen falls läuft" gesetzt ist, wird der erste Befehl nicht ausgeführt.
Hier ein Beispiel, das man selbst leicht ausprobieren kann.
Timer immer mit Bedacht einsetzen.
Grüße
-
Danke, verstanden.!
Ich nehme das löschen des Befehls raus und ändere die delays das die Befehle nach und nach abgearbeitet werden.
Jetzt ist mir auch klar warum in dem Handbuch steht das der Befehl nur einmal ausgeführt wird.
Danke und Gruß
-
Änderst Du bitte in Deinem ersten Beitrag den Betreff.
z.B.
[gelöst] Blockly Handbuch Verständnis Frage
Dann finden das auch andere Blockly Interessierte.
Einfach in dem ersten Beitrag auf "ändern" klicken.
Danke