NEWS
Bewegungsmelder Script Blockly
-
Hallo Community,
ich habe zwar schon die Suche bemüht aber so richtig weis ich nicht, wonach ich eigentlich suchen muss.
Folgendes habe ich vor:
Wenn Bewegung –-> Licht einschalten für X Minuten.
Nach X Minuten --> Licht auf 50% dimmen
Nach weiteren Y Minuten, Licht auf 10% dimmen
nach weiteren z Minuten, Licht aus.
Und so sieht mein Blockly- Script dazu aus:
Das funktioniert soweit auch einwandfrei, doch es gibt ein Problem:
Sobald Bewegungsmelder presence von true auf false geht, dimmt das Licht richtig runter. Wenn jetzt eine neue Bewegung kommt, dann dimmt er das Licht auch wieder richtig hoch aber im Hintergrund läuft der falls- Trigger vom ersten false- Ereignis einfach weiter und schaltet das Licht dann aus, anstatt, dass das erneute Triggern einer Bewegung das ganze script einfach resettet.
Ich habe diesen Reset versucht mit dem timeout zu erzwingen aber das funktioniert auch nicht.
Wie bekomme ich es hin, dass er die "Shutdown- Phase" sofort abbricht, sobald Bewegungsmelder presence erneut auf true springt?
Vielen Dank im Voraus für eure Zeit!
-
Du arbeitest innerhalb des Timeout mit Verzögerungen, diese verursachen das Problem. Ist Timeout abgelaufen werden die enthaltenen Aktionen abgearbeitet, dann hilft das „stop timeout“ nicht mehr.
Setze bei der Verzögerung der Geräteaktion den Haken bei „Lösche wenn läuft“ und zusätzlich musst Du oben im „falls“ auch bei jedem Aktor minimale Verzögerungen (z.B. 100 ms) und den Haken setzen.
Alternativ müsstest Du im „sonst falls“ für jeden Aktor ein eigenes Timeout statt der normalen Verzögerung verwenden.
-
Okay, das funktioniert, vielen Dank!
Aber leider verstehe ich noch nicht so ganz die Logik dahinter. Sind die Verzögerungen dasselbe wie timeouts? also werden diese auch durch den Befehl stop timeout gestoppt? Und warum braucht es die Verzögerungen beim Einschalten des Lichts, damit es funktioniert?
-
Sind die Verzögerungen dasselbe wie timeouts? also werden diese auch durch den Befehl stop timeout gestoppt? Und warum braucht es die Verzögerungen beim Einschalten des Lichts, damit es funktioniert? `
Timeout pausiert praktisch die Abarbeitung der darin enthaltenen Aktionen.Die „Verzögerung“ gilt jeweils nur für diese eine Aktion bei der sie gesetzt wurde.
Es läuft pratisch sofort ein interner Timer und nach Ablauf wird die Aktion ausgeführt.
Wenn der Haken bei „löschen wenn läuft“ gesetzt ist kann diese Verzögerung durch einen neuen Befehl für dieses Objekt abgebrochen werden.
Du brichst also die Ausschaltverzögerung durch den Einschaltbefehl ab.
Bei einschalten wäre normal keine Verzögerung nötig, aber um den Haken setzen zu können muss zumindest eine winzige Verzögerung gesetzt werden.
Bei Deiner Umsetzung sind die Haken beim einschalten entscheidend, beim ausschalten sind sie unwichtig weil das einschalten „sofort“ passiert und nicht abgebrochen werden muss.
-
Wenn Du langsam runter dimmen möchtest könnte auch dieser Befehl für Dich interessant sein.
Je größer die Zahl, desto langsamer wird gedimmt, geht auch beim einschalten. Leider weiß ich den Umrechnungsfaktor dafür nicht mehr aus dem Kopf. Das dimmen führt dann die Bridge selbst aus und nicht mehr das Script.
runter dimmen
{"on":false,"transitiontime":70}
hoch dimmen
{"on":true,"transitiontime":70}
![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201812 ... 8f4ad2.jpg">https://uploads.tapatalk-cdn.com/20181230/f47643e65455a87d80148787678f4ad2.jpg</link_text>" /> -
Hi,
ich möchte gerne das Thema auch noch einmal aufgreifen.
Mein Bewegungsmelder im Flur arbeitet auch noch nicht so, wie ich es möchte.Der Melder von Homematic ist so in der CCU2 eingestellt, dass er alle 2 Minuten eine potentielle Bewegung meldet.
Das Licht soll bei Bewegung mindestens 5min an bleiben. Erkennt der Bewegungsmelder innerhalb dieser Zeit wieder eine Bewegung, soll das Licht nicht ausgeschaltet werden.Aktuell ist es aber so, dass nach 5min. das Licht immer ausgeschaltet wird, obwohl Bewegung im Flur ist.
Ich vermute ebenfalls ein Problem mit der Nutzung des Timeouts.Habt ihr eine Vermutung an welcher Stelle bei Blockly nicht korrekt aufgesetzt ist?
-
Ich denke der Fehler ist das du den timeout nur dann löscht wenn eine Bewegung erkannt wird UND es dunkel ist. Wenn das Licht an ist ist es aber wahrscheinlich nicht dunkel
Setz doch den stop timeout mal global vor den falls Block - dann müsste es gehen.
A.
-
Unfassbar....es kann so einfach sein....aber wie immer...man sieht den Wald vor lauter Bäumen nicht.
Danke dir für die schnelle Rückmeldung.