FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: mike.d am 15 September 2018, 09:44:43

Titel: DOIF bricht nicht ab...
Beitrag von: mike.d am 15 September 2018, 09:44:43
ich komm leider gar nicht weiter mit dem Abbruch eines DOIF.
Er soll überprüfen, ob mein Siebträger tatsächlich heizt indem er die Temperatur nach 5min checkt.

Mein Ansatz:

Internals:
   CFGFN      ./FHEM/00_fhem_7_devices.cfg
   DEF        ([Kaffeemaschine] eq "on" and ([Kaffeemaschine:temperature] < 40))
   (set pushmsg msg 'Siebträger' 'Siebträger heizt nicht!' 'mike' 0 ' ')
   (set Sonos_Kueche Speak 10 de 'Achtung! Der Siebtraeger heitzt nicht!')
   ({Log 1, "Siebtraeger heizt nicht. Aktuelle Temperatur: " . [Kaffeemaschine:temperature]})
DOELSEIF ([Kaffeemaschine] eq "on" and ([Kaffeemaschine:temperature] > 40))(
   {Log 1, "Siebtraeger heizt gut. Aktuelle Temperatur: " . [Kaffeemaschine:temperature]})
   MODEL      FHEM
   NAME       di_KaffeemaschineHeiztNicht
   NR         598
   NTFY_ORDER 50-di_KaffeemaschineHeiztNicht
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2018-09-15 09:20:58   Device          Kaffeemaschine
     2018-09-15 09:25:57   cmd             2
     2018-09-15 09:25:57   cmd_event       Kaffeemaschine
     2018-09-15 09:25:57   cmd_nr          2
     2018-09-15 09:20:58   e_Kaffeemaschine_STATE off
     2018-09-13 22:11:34   mode            enabled
     2018-09-15 09:25:57   state           cmd_2
     2018-09-15 09:25:57   wait_timer      no timer
   Regex:
   attr:
     cmdState:
     wait:
       0:
         420
       1:
         300
     waitdel:
   condition:
     0          InternalDoIf($hash,'Kaffeemaschine','STATE') eq "on" and (ReadingValDoIf($hash,'Kaffeemaschine','temperature') < 40)
     1          InternalDoIf($hash,'Kaffeemaschine','STATE') eq "on" and (ReadingValDoIf($hash,'Kaffeemaschine','temperature') > 40)
   devices:
     0           Kaffeemaschine
     1           Kaffeemaschine
     all         Kaffeemaschine
   do:
     0:
       0          set pushmsg msg 'Siebträger' 'Siebträger heizt nicht!' 'mike' 0 ' '
       1          set Sonos_Kueche Speak 10 de 'Achtung! Der Siebtraeger heitzt nicht!'
       2          {Log 1, "Siebtraeger heizt nicht. Aktuelle Temperatur: " . [Kaffeemaschine:temperature]}
     1:
       0              {Log 1, "Siebtraeger heizt gut. Aktuelle Temperatur: " . [Kaffeemaschine:temperature]}
     2:
   helper:
     event      schalter: on
     globalinit 1
     last_timer 0
     sleepdevice Kaffeemaschine
     sleepsubtimer -1
     sleeptimer -1
     timerdev   Kaffeemaschine
     timerevent schalter: on
     triggerDev Kaffeemaschine
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: Kaffeemaschine
       state: cmd_2
     timerevents:
       schalter: on
     timereventsState:
       schalter: on
     triggerEvents:
       schalter: on
     triggerEventsState:
       schalter: on
   internals:
     0           Kaffeemaschine:STATE
     1           Kaffeemaschine:STATE
     all         Kaffeemaschine:STATE
   itimer:
   readings:
     0           Kaffeemaschine:temperature
     1           Kaffeemaschine:temperature
     all         Kaffeemaschine:temperature
   trigger:
   uiState:
   uiTable:
Attributes:
   do         always
   wait       420:300


Leider bricht er die wait-time nicht ab, wenn die Temperatur über 40°C steigt.

Kann mir jemand weiterhelfen!?
Titel: Antw:DOIF bricht nicht ab...
Beitrag von: Ellert am 15 September 2018, 12:48:08
do resetwait
Titel: Antw:DOIF bricht nicht ab...
Beitrag von: mike.d am 15 September 2018, 18:51:24
vielen Dank....  das zusammen mit event-on-change-reading auf die Temperatur hat das Problem gelöst.

DOIF bleibt zu komplex für meinen Kopf! :D
Titel: Antw:DOIF bricht nicht ab...
Beitrag von: Ellert am 16 September 2018, 10:16:08
Zitat von: mike.d am 15 September 2018, 18:51:24
DOIF bleibt zu komplex für meinen Kopf! :D

Es gibt auch die Möglichkeit DOIF im Perl-Modus zu betreiben, dann entfallen die meisten steuernden Attribute und man kann das Verhalten selbst gestalten.
Titel: Antw:DOIF bricht nicht ab...
Beitrag von: Damian am 16 September 2018, 12:57:06
Zitat von: Ellert am 16 September 2018, 10:16:08
Es gibt auch die Möglichkeit DOIF im Perl-Modus zu betreiben, dann entfallen die meisten steuernden Attribute und man kann das Verhalten selbst gestalten.

siehe: https://forum.fhem.de/index.php/topic,84969.msg836657.html#msg836657

Es steht jetzt in der Doku auch:

ZitatDer Perl-Modus kommt weitgehend ohne Attribute aus, er ist aufgrund seiner Flexibilität, der Möglichkeit strukturiert zu programmieren und seiner hohen Performance insb. bei umfangreichen Automatisierungsaufgaben dem FHEM-Modus vorzuziehen.