Entprellung HM-OU-LED16--Taster

Begonnen von RaTom, 13 März 2013, 16:59:02

Vorheriges Thema - Nächstes Thema

RaTom

Hallo *!

In FHEM-user wurde schon im Oktober 2012 festgestellt, dass der "Taster" der HM-OU-LED16 eine nicht vorhersagbare Anzahl von Messages sendet.

Bei einem Taster ist das in soweit tragisch, als dass jede Message als Zustandswechsel interpretiert wird und damit das gewünschte Schaltergebnis - wenn überhaupt - nur zufällig stattfindet...

Wie sähe denn ein sinnvoller Ansatz, das Problem zu beseitigen, aus?
  • Lässt sich etwas in Fhem ändern? (Hallo
Martin!)
  • Oder bin ich in der Applikation gefragt?
    Dabei müsste ich berechnen, ob zwischen der aktuellen und der vorhergehenden Message eine bestimmte Mindestzeit vergangen ist. Wenn nicht, müsste ich den Trigger / das Notify verwerfen.[/list]
    Irgendwie bin ich für die erste Methode ;-)

    Was meint Ihr?
    Oder ist das Problem bereits gelöst?

    Vielen Dank und mfG
    RaTom

    rudolfkoenig

    > Lässt sich etwas in Fhem ändern? (Hallo Martin!)

    Bin nicht sicher, dass Martin hier mitliest.

    > Dabei müsste ich berechnen, ob zwischen der aktuellen und der vorhergehenden Message eine bestimmte Mindestzeit vergangen ist. Wenn nicht, müsste ich den Trigger / das Notify verwerfen.

    Wie waere es mit http://fhem.de/commandref.html#event-min-interval ?

    RaTom

    Nach einem Update, sowohl des fhem als auch von mir, konnte ich das Attribut event-min-interval state:2 einbauen. ;-)

    Es verhindert wie gewünscht die Mehrfachmeldungen! Die eingestellten zwei Sekunden mögen zu lang erscheinen, aber schneller kann man mit den Tasten nicht agieren.

    Rudolf: Vielen Dank!

    Nur klappte die (Um-)Schaltung der LED-Farbe erst einmal nicht immer. Das Verhalten schien zufällig. Seitdem ich aber eine Verzögerung vor dem Schalten der LED eingebaut habe, konnte ich das Fehlverhalten nicht mehr reproduzieren. Vermutlich benötigt die HM-OU-LED16 etwas Zeit zwischen ihrer Aussendung des Tastendrucks und der Empfangsbereitschaft für den LED-Farb/Status-Wechsel. Insbesondere, wenn die Quittierung 'mal wieder negativ ausfällt.

    Hier mein Code:define Statusanzeige CUL_HM 123456
    attr Statusanzeige event-min-interval state:2
    [...]

    define Statusanzeige_LED_16 CUL_HM 12345610
    [...]

    define Toggle dummy
    define Toggle.Notify notify Toggle:(an|aus) {\
      my $Statusanzeige_LED = "Statusanzeige_LED_16";;\
      my $AnFarbe = "orange";;\
      my $AusFarbe = "off";;\
      \
      my $Event = "%EVTPART0";;\
      my $AlterStatus  = OldValue("%NAME");;\
      my $An = "an";;\
      my $Aus = "aus";;\
      \
      if ($Event ne $AlterStatus ) {\
        my $Teilkommando="define ".$Statusanzeige_LED.".At at +00:00:01 set ".$Statusanzeige_LED." led ";;\
        \
        if ($Event eq $An) {\
          fhem $Teilkommando.$AnFarbe;;\
        }\
        elsif ($Event eq $Aus) {\
          fhem $Teilkommando.$AusFarbe;;\
        }\
      }\
    }