NEWS
Rollläden nur in bestimmtem Zimmer steuern
-
@Martin-0
Es gibt einen extra Block im Blockly dafür. (der mit dem "clear" im Screenshot)
Und dieser Block dient dazu zu verhindern das wenn der Trigger ein zweites mal angestossen wird während der Timeout noch läuft nicht ein 2. timeout gestartet wird.
Das mit dem "sicher umgeschaltet" habe ich nicht verstanden. Der Trigger feuert bei "jeder" Änderung des Datenpunktes. Du schaust 1 Sekunde später nach ob der immer noch umgeschaltet ist - das wuerde ja bedeuten das der Datenpunkt zwischendurch einfach mal nur kurz auf Wahr und dann wieder auf Falsch springt. In dem Fall wird der Timeout doppelt gestartet.
Noch schlechter ist es wenn der Datenpunkt innerhalb 1 Sekunde von falsch auf wahr auf falsch und wieder auf wahr wechselt, weil er instabil ist. Dann hättest Du Insgesamt 3 Timeouts laufen, von denen 2 dann auch noch die Aktionen an den Rolläden auslösen wollen. -
So?
-
@Martin-0
Anders herum. Der "stop timeout" Block muss vor den Timeout, nicht dahinter.Auch: Setz mal bitte die Haken bei "löschen falls läuft" in den Ansteuerungen mit Verzögerung.
Und: Die Variable "Echo_name" sollte das "wert von object ID Echo Device Name" in den Falls blöcken ersetzen. Die Texte mit den korrekten Namen brauchst du fuer den Vergleich schon.
-
@Asgothian
Verstanden mit dem Timeout habe ich das jetzt nicht.
Was macht das denn an der Stelle? -
Wenn der Trigger das erste mal kommt wird ein Timeout gestartet.
3 Sekunden später soll etwas passieren.
Wenn der Trigger aber nach 2 Sekunden noch einmal aktiv wird, dann sorgt der "stop timeout" das der erste gestartete Timeout abgebrochen wird. Danach wird Wieder ein Timeout gestartet, der 3 Sekunden später eine Aktion auslöst. Die Aktion wird also nur 1 mal ausgeführt, nicht mehrmals.
Und nochmal zur Variable "Echo Name" - im Kontext deines alten Skriptes:
-
@Asgothian
Ah ok.
Es gibt nur ein Problem: Jetzt fahren alle Rollläden runter -
@Martin-0 Siehe Screenshot in meiner Antwort. Du hast den falschen Baustein durch die Variable "Echo Name" ersetzt.
-
Noch als Erklärung, warum es Sinn macht die lokale Variable zu benutzen.
Stell Dir den Objektbaum wie ein Nachschlagewerk vor. Du kannst da zu jedem Objekt den wert nachschlagen. (Buch auf, Seite finden, wert lesen, buch zu).
Wenn du jetzt zum gleichen Objekt den Wert mehrmals in einem Skript brauchst, macht es Sinn das Du dir den im Vorfeld einmal aus dem Nachschlagewerk holst und speicherst, an statt jedes mal von neuem nachzuschlagen.
Trotzdem musst du den geholten Wert weiterhin mit den "Konstanten" ("Wohnzimmer", "Antons Zimmer" ... ) vergleichen wenn du sicher stellen willst das im richtigen Zimmer die Rolläden fahren
-
@Asgothian
Jetzt aber:
-
@Martin-0
Jo.. so ist schon schöner
p.s. ich bin jetzt erstmal weg. Weitere Antworten erst in einer Stunde oder so.