NEWS
Logik- bzw. Verständnisfehler, mehrere Bewegungssensoren
-
Hallo,
ich habe 4 Zigbee Bewegungssensoren und möchte bei Bewegungserkennung das Licht für 15 Minuten anschalten. Nun dachte ich, dass das Programm bei dem Befehl "Pause für 15min" da gefangen ist und erst nach den 15min aus der Schleife kommt bzw. solange nicht auf einen anderen Bewegungssensor regiert.
Offensichtlich ist das nicht so. In meinem Logfile sehe ich einerseits, dass die Debug-Meldung innerhalb einer 1 Sekunde 2x auftaucht (warum?) und dass ich auch Meldungen erhalte, obwohl das Programm in der Schleife steckt (< 15min).
Wie setze ich das Blockly-Skript korrekt, damit es bei Bewegungserkennung einer der 4 Melder, das Licht für 15min anschaltet? -
@sunshineh was sind das für Triggerdatenpunkte/Bewegungsmelder?
Du möchtest ein und die selbe Lampe steuern?
Dann müsstest du schon mal den anderen Triggerblock nehmen und alle vier da rein packen, geht wenn du auf das Zahnrad klickst -
@crunchip sagte in Logik- bzw. Verständnisfehler, mehrere Bewegungssensoren:
Dann müsstest du schon mal den anderen Triggerblock nehmen und alle vier da rein packen, geht wenn du auf das Zahnrad klickst
Das ist sehr zu empfehlen, auch wenn es dann aber etwas schwerer wird über den debug den Auslöser zu sehen.
Das löst aber nicht das Problem von @sunshineh
Dazu bräuchte er eine Sperrvariable mit timeout.Ob das aber wieder das ist was er wirklich will, ist eine andere Frage.
Wenn nach 14,5 Minuten nochmal jemand durchläuft geht dann nämlich das Licht trotzdem nach 15 Minuten auf.
Hier braucht er einen saldierenden Zähler für ein Treppenhauslicht, so dass das Licht immer nach der Letztene Bewegung noch 15 Minuten leuchtet, oder..... -
@sunshineh sagte: bei Bewegungserkennung einer der 4 Melder, das Licht für 15min anschaltet?
Triggere auf "ist größer als letztes" mit allen 4 BWM:
Anmerkung: Man muss erst eine dummy-Variable erstellen, um auf die Timer-Variable timeout zugreifen zu können.
@homoran sagte in Logik- bzw. Verständnisfehler, mehrere Bewegungssensoren:
dass das Licht immer nach der Letztene Bewegung noch 15 Minuten leuchtet
Oder ist dieses Verhalten gewünscht? Dann so:
-
@paul53 Vielen Dank!
Ich habe nun das Skript wie folgt nachgebaut:
Und das sind die Meldungen vom Test - ich meine, die erkannten Bewegungen:
Leider ist das Verhalten total komisch. Das Licht geht nach einigen Sekunden wieder aus, lässt auch auch bei Bewegung nicht wirklich anschalten bzw. nur für ein paar Sekunden, manchmal auch Minuten usw.
Das Licht, dass ich ansteuere ist ein großer 100W LED-Strahler (fehlt da evtl. die Ohmsche Last?). Das Licht ist über das Xiaomi Aqara LLKZMK11LM Zwei-Wege-Steuermodul angeschlossen.
-
@sunshineh was hast du da für ei en grünen Baustein für timeout?
alle 15 Minuten statt in 15 Minutenist das der Intervall Baustein und du hast das Intervall "timeout " genannt?
-
@homoran
Ich habe mir nun mal folgendes Testskript erstellt:
Dabei ist mir aufgefallen, dass ich was grundsätzlich nicht verstanden habe.Das ist was ich will:
Bei Bewegung oder bei Click des Tasters möchte ich irgendwas machen, z.B. das Licht anschalten. dann nach 1 Minute wieder ausschalten.Wenn ich mir die Ausgaben ansehe, so wir
1.Die Bewegungserkennung nicht wieder erkannt, wenn einmal der Bewegungssensor ausgelöst hat
2.Mit dem Taster dagegen, wird jeder Tastendruck erkannt, auch wenn er mehrmals hintereinander stattfindet.
3.Der TimeOut wird sooft hintereinander ausgeführt, wie die "Bewegungserkennung" erkannt wurde.Kann ich das Skript nicht irgendwie so aufbauen, dass eine Schleife nur prüft, ob irgendein Sensor auf true geht und dann eine Timervariable setzt, die parallel nach Ablauf das Licht wieder ausschaltet? Sorry, ich fang erst ganz neu mit Blockly an...
-
@sunshineh sagte in Logik- bzw. Verständnisfehler, mehrere Bewegungssensoren:
Ich habe mir nun mal folgendes Testskript erstellt:
dir fehlt ein stop timeout.
Wenn das skript innerhalb des Timeouts ein zweites mal gestartet wird läuft der selbe Timeout mehrfach und kann nicht mehr gestoppt werden.
Du triggerst auf größer als letztes.
Taster sind üblicherweise immer true -
@sunshineh Also wenn es nicht zwingend ein Blockly sein muss, warum dann nicht den SmartControl Adapter nehmen? Der macht dir genau sowas sehr einfach:
https://github.com/Mic-M/ioBroker.smartcontrol