FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: BorisKsoll am 27 März 2018, 18:42:52

Titel: Schalter - kurze Impulse unterdrücken
Beitrag von: BorisKsoll am 27 März 2018, 18:42:52
Hallo,

ich habe gerne klassische Schalter - keine Taster. Ich schalte mein Licht über zwei notify - eines für ein und eines für aus:

P52:reading:.on set Badlicht on

P52:reading:.off set Badlicht off

Die Schalter laufen über Firmata (Arduino).

Mein Problem: ab und zu flackert das Licht kurz auf. Ich möchte also gerne, dass kurze Schaltimpulse "abgefangen" werden. Wenn der Schalter nicht für mindestens 0,1 Sekunden geschaltet wird, dann soll nichts passieren. (Nicht länger, da sonst bei einen gewollten Schalten eine merkliche Schaltverzögerung entsteht).

Das klassische Entprellen verhindert ja nur eine Mehrfachauslösung des gleichen Events.

Ich vermute, dass ich da jetzt mit if etwas machen müsste - um dann nach 0,1sek zu prüfen ob sich der Zustand nochmals geändert hat (und wenn ja, verwerfen - sonst Änderung umsetzen). Wäre das der richtige Weg oder geht es leichter? Gibt es vielleicht ein Attribut, dass ich nicht gefunden habe?

Vielen Dank
Boris
Titel: Antw:Schalter - kurze Impulse unterdrücken
Beitrag von: Thorsten Pferdekaemper am 27 März 2018, 18:57:55
Hi,
und warum ist das kein "klassisches Entprellen"? Zumindest auf der Arduino-Seite sollte das doch ein ganz normales Entprellen tun, oder?
Gruß,
   Thorsten
Titel: Antw:Schalter - kurze Impulse unterdrücken
Beitrag von: BorisKsoll am 27 März 2018, 21:49:27
Entprellen wäre ja bei Mehrfachimpulsen nur einen durchzulassen. Ich will aber null Impulse bei nur kurzer Aktivierung (durch el. Störung - Vermutlich durch Schwankungen des Wiederstandes in den teilweise recht langen Leitungen zum Schalter).

Ich möchte es FHEM-Seitig lösen. Auf dem Arduino läuft Firmata ohne Modifikationen - da möchte ich keine zweite Baustelle öffnen.
Titel: Antw:Schalter - kurze Impulse unterdrücken
Beitrag von: Damian am 27 März 2018, 21:57:35
define di_badlicht DOIF ([P52:reading] eq "on") (set Badlicht on) DOELSE (set Badlicht off)
attr di_badlicht wait 0.5:0.5


wait entprellt in diesem Fall.
Titel: Antw:Schalter - kurze Impulse unterdrücken
Beitrag von: BorisKsoll am 27 März 2018, 22:14:10
Super!

Das löst exakt mein Problem - genial.

Vielen Dank!

wait
Das Attribut verzögert die Befehlsausführung, nach wahr werden einer Bedingung.
Laufende Wait-Timer werden bei einem eingeleiteten Statuswechsel des DOIF abgebrochen, daher werden die zu verzögernden Befehle nicht mehr ausgeführt.