NEWS
Blocky Script nur einemal in einer gewissen Zeit ausführen
-
Nabend,
kann mir jemand sagen, wie ich es im Blockly hin bekomme, dass trotz mehrmaligem Triggern das script doch nur einmal ausgeführt wird? Zumindest in einem gewissen Zeitraum.
Ich würde gerne mit einem Hmip-WCR6 meine Sonos Lautsprecher bedienen. Klappt auch soweit. Leider macht er mir bei einem Langen Tastendruck mehrere Lieder vor. Nervt nur ein bisschen...
Der Taster Triggert mindestens zwei mal( anscheinend einmal beim drücken und einmal beim loslassen). Wenn ich länger gedrückt halte sogar noch öfters. Am Taster selber bekomme ich das wohl nicht umgestellt. Also müsste ich das irgendwie im Blockly hin bekommen.Danke schonmal für die Hilfe!
-
@nicor sagte in Blocky Script nur einemal in einer gewissen Zeit ausführen:
Der Taster Triggert mindestens zwei mal
zeig mal dein blockly
-
@crunchip
Hier der Ausschnitt um den es geht -
@nicor bin zwar auch nicht so fit darin, aber hast du es mal anstatt "wurde aktualisiert", mit "ist größer als", oder "ist wahr", probiert.
Gegebenenfalls mal mit nem debug output prüfen, ob mehrfach geschaltet wird -
@nicor sagte: im Blockly hin bekommen.
Siehe hier. Weshalb nicht PRESS_SHORT? Damit braucht man keine "Klimmzüge".
-
@crunchip Habs Probiert. Mit "ist Wahr" macht er auch mehrere Sprünge und mit "größer als" triggert er gar nicht.
-
@paul53 Weil alle PRESS_SHORT schon belegt sind. Bediene mit den "kurzen" Licht an/aus und Radiosender. Mit dem Timeout sollte es aber funktionieren. Hab ein normales Java Script gefunden mit dem es funktioniert. Ich arbeite aber lieber mit Blockly. Da kann ich mir wenigstens ein bisschen selbst helfen. Beim Script von Hand erstellen bin ich völlig überfordert.
Mit dem funzt es jedenfalls. Die Variable "alreadyTriggered" habe ich von Hand unter Objekten als Logikwert erstellt.
console.log("Bereits getriggert: "+this.getState("javascript.0.variables.alreadyTriggered").val); setTimeout(()=>{ this.setState("javascript.0.variables.alreadyTriggered",false); console.log("=== Wieder freigegeben ==="); },1200); if(!this.getState("javascript.0.variables.alreadyTriggered").val){ this.setState("javascript.0.variables.alreadyTriggered",true); this.setState("sonos.0.root.192_168_178_82.next", true );