Hi
Habe gerade einen Diof angelegt
([Dummy_Waschmaschine] eq "STANDBY") (set ECHO_G000JN0573370NNU speak Die Wäsche ist fertig bitte leer machen und ausschalten)
attr do always
attr repeatcmd 20
attr repeatsame 5
Dieser soll bei Waschmaschine STANDBY am Echo alle 20 sek. was ausgeben und das 5 mal, jedoch sollte er bei Waschmaschine ungleich STANDBY schon vorher aufhören eventuell zb. nach dem 3 mal
In der Commandref steht
Anwendungsbeispiel: Nach dem Eintreffen des Ereignisses wird die push-Meldung stündlich wiederholt, bis Frost ungleich "on" ist.
define di_push DOIF ([frost] eq "on")(set pushmsg "danger of frost")
attr di_push repeatcmd 3600
Eine Begrenzung der Wiederholungen kann mit dem Attribut repeatsame vorgenommen werden
attr di_push repeatsame 3
Jedoch macht er immer 5 Wiederholungen und hört nicht vorher auf obwohl Waschmaschine ungleich STANDBY ist. Was hab ich da denn jetzt falsch verstanden
Sinnvoll wäre hier sicherlich ein list vom <DOIF-Device>.
Nach den bisherigen Informationen würde ich Folgendes sagen:
statt
attr repeatcmd 20
wohl eher
attr <DOIF-Device> repeatcmd 20
Gilt dann natürlich analog für die restlichen attr-Angaben.
Sorry
Hier ein list
Internals:
CFGFN
DEF ([Dummy_Waschmaschine] eq "STANDBY") (set ECHO_G000JN0573370NNU speak Die Wäsche ist fertig bitte leer machen und ausschalten)
MODEL FHEM
NAME Waschmaschine_Fertig_Wiederholung
NR 11979
NTFY_ORDER 50-Waschmaschine_Fertig_Wiederholung
STATE initialized
TYPE DOIF
.attraggr:
.attrminint:
READINGS:
2018-11-11 00:19:13 cmd 0
2018-11-11 00:19:13 mode enabled
2018-11-11 00:19:13 state initialized
Regex:
attr:
cmdState:
cmdpause:
repeatcmd:
20
repeatsame:
5
wait:
waitdel:
condition:
0 ::InternalDoIf($hash,'Dummy_Waschmaschine','STATE') eq "STANDBY"
devices:
0 Dummy_Waschmaschine
all Dummy_Waschmaschine
do:
0:
0 set ECHO_G000JN0573370NNU speak Die Wäsche ist fertig bitte leer machen und ausschalten
1:
helper:
globalinit 1
last_timer 0
sleeptimer -1
internals:
0 Dummy_Waschmaschine:STATE
all Dummy_Waschmaschine:STATE
itimer:
uiState:
uiTable:
Attributes:
do always
repeatcmd 20
repeatsame 5
repeatcmd sorgt dafür, dass immer wieder ein wait_timer gesetzt wird - unter Berücksichtigung von repeatsame.
Ohne alternativen Ausführungszweig wird der wait_timer nicht vorzeitig beendet.
Soll dieser wait_timer-Rhythmus vorzeitig beendet werden, braucht man - wie auch sonst - einen alternativen Ausführungszweig. Dazu reicht die Ergänzug eines einfachen
DOELSE ()
In diesem Fall kann man evtl. auch auf das do always verzichten ...
Danke für die Erklärung.
Macht auch alles Sinn
Hat mir sehr geholfen