NEWS
Tür-, Fensterkontakt, Entprellen, Blockly
-
Hallo zusammen,
ich bräuchte bitte Hilfe bei einem Blockly.
Ich habe 2 Tür-Fensterkontakte an der Garage befestigt.Leider habe ich das Problem, dass das Garagentor vermutlich etwas auf ab geht und der Kontakt kurz schließt, wieder öffnet. Insgesamt ändert sich der Status wenn ich das richtig mitbekomme, 3 mal.
Ich würde gerne das ganze "entprellen". Leider schaffe ich es irgendwie nicht. Ich bräuchte daher bitte einen Ansatz, wie ich es gelöst bekomme.Dort reagiere ich auf diesen Datenpunkt:
In Telegram bekomme ich dann meistens 2-3 Nachrichten.
Das hätte ich eigentlich gedacht, könnte ich mit "Pause" abfangen. Aber leider klappt das nicht.Wie geht man eine Entprellen am besten an?
Danke -
Würde ich so machen
Falls der Trigger war ist wird der Timeout gestartet.
Wenn dieser abgelaufen ist bekommst du die Telegram.
Falls der Trigger zwischenzeitlich auf falsch geht, wird der Timeout gestoppt.Fall der tugger nicht true oder fals ist, musst du es noch mit einem Logigbaustein abfragen.
-
@david-g
Ich komme mit deinem Vorschlag leider nicht an das gewünschte Ergebnis.
Hier kommen leider auch 3 Meldungen:
Und das alles Zeitgleich.Ich habe auch mit diesem Skript getestet:
Das bringt aber auch nicht das gewünschte Ergebnis.
Der Datenpunkt wird leider sehr schnell hintereinander getriggert von dem Zigbee Schalter. Das muss ich irgendwie raus bekommen, damit zukünftige Projekte sauber laufen und nicht verrückt spielen.
-
@wusa sagte: Das bringt aber auch nicht das gewünschte Ergebnis.
Dann ist die Entprelldauer von 1 s zu kurz.
-
Wie hoch müsste die Dauer sein?
Ich will etwas steuern, wenn die Garage zu fahren beginnt.
Da will ich halt nicht "zu lange" warten.Erst wenn ich das mit den Telegram Nachrichten hin bekomme, will ich weiter machen.
Soll ich auf 2 Sekunden hoch gehen, oder ist das immer noch zu kurz?
Wie sieht das Skript generell aus? -
@wusa sagte: Wie hoch müsste die Dauer sein?
Keine Ahnung. Das zeigt Dir der zeitliche Abstand zwischen erster und letzter Nachricht. Genauer als Telegram wäre eine Debug-Ausgabe.
Das Skript lässt sich stark vereinfachen:
@wusa sagte in Tür-, Fensterkontakt, Entprellen, Blockly:
Ich will etwas steuern, wenn die Garage zu fahren beginnt.
Da will ich halt nicht "zu lange" warten.Die Nachricht wird mit dem ersten Trigger gesendet. Während der Sperrdauer werden nur weitere Nachrichten blockiert.
-
Danke für die Hilfe.
Manchmal klappt es leider mit 1 Sekunde nicht. Ich lasse es daher mal auf 2 Sekunden stehen.
Das Problem ist glaube ich, dass der Magnet sich an die Garage zieht von dem Fensterkontakt. Der Magnet und die Garage sind miteinander Magnetisch. Vermutlich löst dies das Problem aus. Bin mir aber nicht sicher.
So sieht das ganze jetzt aus. Aber ich verstehe es noch nicht ganz.
Falls nicht timeout? Und setze timeout auf null? Das verstehe ich noch nicht.
Den Rest verstehe ich. -
@wusa sagte: Falls nicht timeout? Und setze timeout auf null? Das verstehe ich noch nicht.
Es wird die Timer-Variable timeout als Sperrvariable "missbraucht". Wenn sie
undefined
(nach Skriptstart) odernull
ist, erfolgt keine Sperre, wenn der Timer läuft, wird gesperrt.@wusa sagte in Tür-, Fensterkontakt, Entprellen, Blockly:
So sieht das ganze jetzt aus.
Nur einen Trigger-Block verwenden!!
-
@paul53 sagte in Tür-, Fensterkontakt, Entprellen, Blockly:
Nur einen Trigger-Block verwenden!!
Das ist Absicht. Ich frage 2 verschiedene Fensterkontakte ab.
Einer ist am Tor oben befestigt, einer unten. So habe ich wirklich definierte Zustände.Es wird die Timer-Variable timeout als Sperrvariable "missbraucht". Wenn sie undefined (nach Skriptstart) oder null ist, erfolgt keine Sperre, wenn der Timer läuft, wird gesperrt.
Ich glaube ich habs verstanden. Werde morgen nochmal nachdenken.
Momentan scheint es gut zu funktionieren. Mal sehen, wie ich das mit meinem weiteren Projekt umsetzen kann.
Da müssen dann beides Zustände gleichzeitig abgefragt werden.Danke für die Hilfe
-
@wusa sagte: Ich frage 2 verschiedene Fensterkontakte ab.
Habe übersehen, dass es verschiedene Meldungen sind. Dann muss im unteren Trigger
timeout2
abgefragt und auf null gesetzt werden.