NEWS
timeout beenden über mehrere blockly-scripte
-
Hallo Zusammen
Ich habe mehrere Blockly-scripte in denen ich einen timeout ausführe.
Zum Beispiel habe ich das blockly "Hundetüre" und "Drehgriff Westen".
Situation:
- Die Lichter im Garten wurden mit dem Blockly "Drehgriff Westen" eingeschalten.
- Der Hund geht über seine automatische Hundetüre raus und somit wir das Blockly Hundetüre gestartet und somit der timeout der Hundetüre.
In diesem Fall würde nun nach drei Minuten die Lichter im Garten ausgehen, obwohl der "Drehgriff Westen" noch offen ist.
Kann ich das timeout der Hundetüre im Blockly "Dregriff Westen" irgendwie unterbrechen?
Danke im voraus für Eure Vorschläge.
Gruss
-
@sentinel997 sagte in timeout beenden über mehrere blockly-scripte:
Hallo Zusammen
Ich habe mehrere Blockly-scripte in denen ich einen timeout ausführe.
Zum Beispiel habe ich das blockly "Hundetüre" und "Drehgriff Westen".
Situation:
- Die Lichter im Garten wurden mit dem Blockly "Drehgriff Westen" eingeschalten.
- Der Hund geht über seine automatische Hundetüre raus und somit wir das Blockly Hundetüre gestartet und somit der timeout der Hundetüre.
In diesem Fall würde nun nach drei Minuten die Lichter im Garten ausgehen, obwohl der "Drehgriff Westen" noch offen ist.
Kann ich das timeout der Hundetüre im Blockly "Dregriff Westen" irgendwie unterbrechen?
Danke im voraus für Eure Vorschläge.
Gruss
Es gibt prinzipiell 3 Möglichkeiten:
- Du kannst im Drehgriff Wohnraum Trigger ein "stop Timeout" Baustein einbauen. Das bedingt das beide Trigger sich im gleichen Skript befinden, und würde verhindern das der Timeout aktiv wird, sobald der Drehgriff im Wohnraum entsprechend betätigt wurde.
- Du kannst im Timeout den Status des Drehgriffs mit abfragen, und die Lichter im Garten (und nur die) nicht löschen wenn der entsprechend gesetzt ist.
- Du kannst im Drehgriff Wohnraum Trigger zusätzlich noch einen Benutzerdefinierten State (oder eine Variable, wenn beide in einem Skript sind) setzen, der dann im Timeout abgefragt wird.
Nebenbei: Du holst im Trigger auf den Drehgriff den Wert des Drehgriffs mehrfach aus der Objektdatenbank. das ist ineffektiv. Es gibt im Bereich Trigger einen Baustein der mit Objekt ID vorgelegt ist. Diesen kann man auf Wert umstellen, und im Trigger an Stelle von
einsetzen. Das ist an der Stelle deutlich effektiver.
Zusätzlich hast du auch das gegenteilige Problem:
- Per Drehgriff werden 2 der 4 Lampen eingeschaltet die von der Hundetüre geschaltet werden
- Die Hundetüre geht auf
- Per Drehgriff werden die Lampen wieder ausgeschaltet.
Dann ist für den Rest der Zeit nur ein Teil der durch die Hundetüre geschalteten Leuchten an.
Mein Vorschlag dazu ist verhältnismässig einfach:
Du legst einen State an "Anforderung_SA05_SA04", Typ Zahl
Im Trigger für die Hundetüre (wenn du die leuchten einschaltest) fügst Du dem Wert dieses States den Wert 1 hinzu (per binär "oder") an statt diese beiden Leuchten zu schalten
Im Timeout der Hundetüre "entfernst" du den Wert 1 wieder (per (Wert oder 1) -1)
Im Trigger für den Drehgriff (wenn du die leichten einschaltest) fügst Du dem Wert dieses States den Wert 2 hinzu (per binär "oder") an statt diese beiden Leuchten zu schalten, und enfernst den Wert 2 (per (Wert oder 2) - 2) wieder.Als letztes brauchst du dann noch einen Trigger auf die Anforderung. Wenn der Wert des Trigger > 0 ist machst du beide Leuchten an, wenn er 0 ist machst du beide Leuchten aus.
A.
I -
Guten Morgen, Danke für deine Ausführung.
Den ersten Teil konnte ich bereits umsetzen und testen. Funktioniert tadellos. Und der "Nebenbei" Tipp ist eine super Sache.
Zu dem "gegenteiligen Problem": Da muss ich mich nochmals richtig einlesen. Habe noch nicht ganz verstanden was Du meinst. Muss es mir aber nochmals bei einer ruhigen Minuten durchlesen.
Ich melde mich nochmals, nachdem ich es umgesetzt habe.
Gruss