diff --git a/fhem/FHEM/98_DOIF.pm b/fhem/FHEM/98_DOIF.pm index 07efa5bc7..c28fb2da8 100644 --- a/fhem/FHEM/98_DOIF.pm +++ b/fhem/FHEM/98_DOIF.pm @@ -556,7 +556,7 @@ DOIF_cmd ($$$) } readingsSingleUpdate ($hash, "cmd_count", $repeatnr,1); } else { - return undef if ($last_cmd == $nr and AttrVal($pn,"do","") ne "always"); + return undef if ($last_cmd == $nr and (AttrVal($pn,"do","") ne "always" and AttrVal($pn,"do","") ne "resetwait")); delete ($defs{$hash->{NAME}}{READINGS}{cmd_count}); } } @@ -1237,9 +1237,11 @@ DOELSEIF ([light] eq "off" and [sensor:humidity]<60)

    attr di_fan wait 120:0:180

    -Zurücksetzen des Waittimers mit "do resetwait"
    +Zurücksetzen des Waittimers für das gleiche Kommando

    -Im Gegensatz zu "do always" wird ein Waittimer mit "do resetwait" auch dann zurückgesetzt, wenn die gleiche Bedingung wiederholt wahr wird.
    +Im Gegensatz zu do always wird ein Waittimer mit dem Attribut do resetwait auch dann zurückgesetzt, wenn die gleiche Bedingung wiederholt wahr wird.
    +Damit können Ereignisse ausgelöst werden, wenn etwas innerhalb einer Zeitspanne nicht passiert.
    +Das Attribut do resetwait impliziert eine beliebige Wiederholung wie do always. Diese lässt sich allerdings mit dem Attribut repeatsame einschränken s. u.

    Anwendungsbeispiel: Meldung beim Ausbleiben eines Events

    @@ -1262,15 +1264,24 @@ attr di_frost do always

    Mit dem Attribut repeatsame <maximale Anzahl von cmd_1>:<maximale Anzahl von cmd_2>:... wird die maximale Anzahl hintereinander folgenden Ausführungen festgelegt.

    -Anwendungsbeispiel: Die Meldung soll maximal drei mal erfolgen mit einer Pause von mindestens 10 Minuten
    +Anwendungsbeispiel: Die Meldung soll maximal dreimal erfolgen mit einer Pause von mindestens 10 Minuten

    define di_washer DOIF ([Watt]<2) (set pushmeldung "washer finished")
    attr di_washer repeatsame 3
    attr di_washer cmdpause 600


    +Das Attribut repeatsame lässt sich mit do always oder do resetwait kombinieren. +Wenn die maximale Anzahl für ein Kommando ausgelassen oder auf Null gesetzt wird, so gilt für dieses Kommando der Defaultwert "einmalige Wiederholung"; +in Kombination mit do always bzw. do resetwait gilt für dieses Kommando "beliebige Wiederholung".
    +
    +Anwendungsbeispiel: cmd_1 soll beliebig oft wiederholt werden, cmd_2 maximal zweimal
    +
    +attr di_repeat repeatsame 0:2
    +attr di_repeat do always

    +
    Ausführung eines Kommandos nach einer Wiederholung einer Bedingung

    -Mit dem Attribut waitsame <Zeitspanne in Sekunden für cmd_1>:<Zeitspanne in Sekunden für das cmd_2>:... wird ein Kommando erst dann ausgeführt, wenn innerhalb einer definierten Zeitspanne die entsprechende Bedingung zwei mal hintereinander wahr wird.
    +Mit dem Attribut waitsame <Zeitspanne in Sekunden für cmd_1>:<Zeitspanne in Sekunden für das cmd_2>:... wird ein Kommando erst dann ausgeführt, wenn innerhalb einer definierten Zeitspanne die entsprechende Bedingung zweimal hintereinander wahr wird.

    Anwendungsbeispiel: Rollladen soll hoch, wenn innerhalb einer Zeitspanne von 2 Sekunden ein Taster betätigt wird: