NEWS
[Blocky] Trigger only one time
-
Was mir öfters gefehlt hat, ist ein Einmal-Trigger. Zum Beispiel wenn die Alarmanlage scharf ist und jemand kommt wieder nach Hause, soll diese ja nur einmalig getriggert werden oder ab eine bestimmte Uhrzeit soll etwas einmalig eingeschaltet werden, wenn Bewegung erkannt wird. Man würde z.B. dafür in der schedule noch ein Trigger auf dem Bewegungsmelder setzen, der sich dann automatisch unsubscribed, wenn es einmal ausgeführt wurde.
Natürlich kann man das programmatisch lösen, aber es wäre für die nicht Programmierer unter uns schön es auch mit Blockly machen zu können. Das wäre ja auch gar nicht so schwer, denn man müsste dem Trigger nur in eine Variable packen und noch ein "stop trigger"-Blockly zur Verfügung stellen, der ein unsubscribe ausführt.
https://trello.com/c/aE8m3bK7/286-block … y-one-time
-
Hallo ldittmar
Ein Trigger überwacht Zustände und reagiert auf deren Änderung.
Das macht er immer. Sonst wäre es kein Trigger.
Wenn ein Trigger seine Aktionen nur einmalig ausführen soll setzt man am besten ein Flag.
Trigger in Trigger machen KEINEN Sinn.
Grüße
-
Trigger in Trigger machen KEINEN Sinn. `
Hi Ratanplan,natürlich machen Trigger im Trigger Sinn! Folgendes Beispiel:
Trigger: Warte bis Alarmknopf gedrückt wurde
Starte zweiten Trigger: Wenn Haustür geschlossen wurde, setze Alarm auf scharf
Jetzt MUSS der zweite Trigger ja beendet werden, wenn ich will ja nicht dass der Alarm immer schaft gestellt wird, wenn die Tür zu geht.
Noch ein Beispiel:
Trigger: Nachruhe Knopf wurde gedrückt
Starte zweiten Trigger: Wenn das Lich im Schlafzimmer ausgeschaltet wird, dann beginnt die Nachtruhe
Auch hier muss der zweite Trigger gestoppt werden.
Beispiel im Garten:
Trigger: Starte Rasensprenger im Garten um 22 Uhr wenn Terassentür zu ist (also niemand sich im Garten befindet). Sollte die Tür offen sein:
Starte zweiten Trigger: Warte bis die Terrassentür geschlossen wurde und starte dann den Rasensprenger.
Hier muss ebenfalls den zweiten Trigger beendet werden.
Grüße,
ldittmar
-
Was ldittmar vorhat ist gar nicht so abwegig. In reinem JS gibt es subscribe und unsubscribe, um Trigger zu aktivieren und (z.B. nach dem Auslösen) wieder zu entfernen.
So etwas als Reaktion auf einen weiteren Trigger auszuführen (also geschachtelt) ist IMO legitim. Dabei sollte aber darauf geachtet werden, dass der Trigger nicht schon aktiv ist (z.b. bei zweimaligem Auslösen des äußeren Triggers).
-
Also… hier das Ganze mal als JS mit 3 Triggern: (Kurzfassung vom dem was ich zuhause nutze)
var setAlarmOn, setAlarmOff; on({id: "amazon-dash.0.ac-63-be-09-fc-15.pressed"/*Alarmanlage einschalten*/, change: "ne"}, function (obj){ console.log('Alarmanlage Knopf gedrückt!'); setAlarmOn = on({id: "hm-rpc.0.MEQ0031988.1.STATE"/*EG_Haustuer_Sensor.STATE*/, change: "ne"}, function (obj2){ if (obj2.state.val == false) { unsubscribe(setAlarmOn); console.log('Alaranlage scharf geschaltet.'); setTimeout(function () { setAlarmOff = on({id: "hm-rpc.0.MEQ0031988.1.STATE"/*EG_Haustuer_Sensor.STATE*/, change: "ne"}, function (obj3){ if (obj3.state.val == false) { console.log('Alarmanlage aus'); unsubscribe(setAlarmOff); } }); }, 3000); } }); });
-
Was ldittmar vorhat ist gar nicht so abwegig. In reinem JS gibt es subscribe und unsubscribe, um Trigger zu aktivieren und (z.B. nach dem Auslösen) wieder zu entfernen.
So etwas als Reaktion auf einen weiteren Trigger auszuführen (also geschachtelt) ist IMO legitim. Dabei sollte aber darauf geachtet werden, dass der Trigger nicht schon aktiv ist (z.b. bei zweimaligem Auslösen des äußeren Triggers). `
was waere der unterschied zwischen dieser loesung und einer if abfrage ? Trigger immer aber ausfuerhung nur wen IF (value check) = true ?
-
Dabei sollte aber darauf geachtet werden, dass der Trigger nicht schon aktiv ist (z.b. bei zweimaligem Auslösen des äußeren Triggers). `
Deshalb bleibe ich bei meiner Aussage.Viel zu umständlich, gefährlich und unübersichtlich. Fehlersuche ohne einen richtigen Debugger so gut wie unmöglich.
Grüße
-
was waere der unterschied zwischen dieser loesung und einer if abfrage ? Trigger immer aber ausfuerhung nur wen IF (value check) = true ? `
Danke Dutchman.
Mein reden.
Grüße
-
was waere der unterschied zwischen dieser loesung und einer if abfrage ? Trigger immer aber ausfuerhung nur wen IF (value check) = true ? `
Ohne bewerten zu wollen:Die Logik wird anders abgebildet. Bei komplexeren Logiken kann es übersichtlicher sein, wenn zusammen bleibt was zusammen gehört.
-
Ohne bewerten zu wollen:
Die Logik wird anders abgebildet. Bei komplexeren Logiken kann es übersichtlicher sein, wenn zusammen bleibt was zusammen gehört. `
Da bin ich bei Dir!Muss man aber nicht über aktivierte/nicht aktivierte Trigger lösen
Ich bin bei dem Thema raus.
Liebe Grüße
-
Mein Gedanke ist: warum soll ein Trigger 24 Stunden aktiv sein, wenn er z.B. nur einmal am Tag gebraucht wird? Ich halte mein Speicher gerne sauber.
Grüße,
ldittmar