Autor Thema: Verständnis frage DOIF  (Gelesen 111 mal)

Offline Freee84neu

  • New Member
  • *
  • Beiträge: 41
Verständnis frage DOIF
« am: 10 November 2018, 23:30:49 »
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

Offline OdfFhem

  • Full Member
  • ***
  • Beiträge: 114
Antw:Verständnis frage DOIF
« Antwort #1 am: 11 November 2018, 00:12:53 »
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.

Offline Freee84neu

  • New Member
  • *
  • Beiträge: 41
Antw:Verständnis frage DOIF
« Antwort #2 am: 11 November 2018, 00:22:30 »
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

Offline OdfFhem

  • Full Member
  • ***
  • Beiträge: 114
Antw:Verständnis frage DOIF
« Antwort #3 am: 11 November 2018, 07:50:23 »
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 ...

Offline Freee84neu

  • New Member
  • *
  • Beiträge: 41
Antw:Verständnis frage DOIF
« Antwort #4 am: 11 November 2018, 08:01:03 »
Danke für die Erklärung.

Macht auch alles Sinn

Hat mir sehr geholfen

 

decade-submarginal