Hat das DOIF wieder oder immernoch ein Problem?

Begonnen von misux, 28 April 2018, 22:41:06

Vorheriges Thema - Nächstes Thema

misux

HI! Ich habe am 25.04 ein Problem mit einem anderen DOIF gehabt was ein im Update zuvo war... nach neuem Update ging es wieder... Nun habe ich ein neues Problem was heute erst aufgefallen ist weil der Zustand vorher nicht gegeben war:

Das ist das DOIF was heute gesponnen hat... Vorher lief es wochenlang problemlos:

Internals:
DEF       
([Tageslicht_indoor] eq "Nacht" and [?TVTime:state] eq "off" and [?15:00-22:00]) (set WZBodenLed on, set WZEZ_WZFLed on)
DOELSEIF
([?Tageslicht_indoor] eq "Nacht" and [TVTime:state] eq "off" and [?15:00-22:00]) (set WZBodenLed on, set WZEZ_WZFLed on)
DOELSEIF
([TVTime:state] eq "off" and [22:00-05:00] and [?PartyTime:state] eq "off")
(set WZEZ_WZFLed on-for-timer 600) (set WZBodenLed on-for-timer 900)
DOELSEIF
([?TVTime:state] eq "off" and [?22:00-05:00] and [PartyTime:state] eq "off") (set WZBodenLed off) (set WZEZ_WZFLed off)

   MODEL      FHEM
   NAME       DOIFWzEzBeleuchtung
   NR         108
   NTFY_ORDER 50-DOIFWzEzBeleuchtung
   STATE      cmd_3
   TYPE       DOIF
   READINGS:
     2018-04-28 22:25:13   Device          TVTime
     2018-04-28 22:25:14   cmd             3.2
     2018-04-28 22:25:14   cmd_event       TVTime
     2018-04-28 22:25:14   cmd_nr          3
     2018-04-28 22:25:14   cmd_seqnr       2
     2018-04-26 16:34:48   e_PartyTime_state off
     2018-04-28 22:25:13   e_TVTime_state  off
     2018-04-28 20:19:12   e_Tageslicht_indoor_STATE Nacht
     2018-04-22 09:21:18   mode            enabled
     2018-04-28 22:25:14   state           cmd_3
     2018-04-28 22:00:00   timer_01_c01    29.04.2018 15:00:00
     2018-04-28 22:00:00   timer_02_c01    29.04.2018 22:00:00
     2018-04-28 22:00:00   timer_03_c02    29.04.2018 15:00:00
     2018-04-28 22:00:00   timer_04_c02    29.04.2018 22:00:00
     2018-04-28 05:00:01   timer_05_c03    28.04.2018 22:00:00
     2018-04-28 05:00:01   timer_06_c03    29.04.2018 05:00:00
     2018-04-28 05:00:01   timer_07_c04    28.04.2018 22:00:00
     2018-04-28 05:00:01   timer_08_c04    29.04.2018 05:00:00
     2018-04-28 20:34:12   wait_timer      no timer
   Regex:
   condition:
     0          InternalDoIf($hash,'Tageslicht_indoor','STATE') eq "Nacht" and ReadingValDoIf($hash,'TVTime','state') eq "off" and DOIF_time($hash,0,1,$wday,$hms)
     1          InternalDoIf($hash,'Tageslicht_indoor','STATE') eq "Nacht" and ReadingValDoIf($hash,'TVTime','state') eq "off" and DOIF_time($hash,2,3,$wday,$hms)
     2          ReadingValDoIf($hash,'TVTime','state') eq "off" and DOIF_time($hash,4,5,$wday,$hms) and ReadingValDoIf($hash,'PartyTime','state') eq "off"
     3          ReadingValDoIf($hash,'TVTime','state') eq "off" and DOIF_time($hash,6,7,$wday,$hms) and ReadingValDoIf($hash,'PartyTime','state') eq "off"
   days:
   devices:
     0           Tageslicht_indoor
     1           TVTime
     2           TVTime
     3           PartyTime
     all         Tageslicht_indoor TVTime PartyTime
   do:
     0:
       0          set WZBodenLed on, set WZEZ_WZFLed on
     1:
       0          set WZBodenLed on, set WZEZ_WZFLed on
     2:
       0          set WZEZ_WZFLed on-for-timer 600
       1          set WZBodenLed on-for-timer 900
     3:
       0          set WZBodenLed off
       1          set WZEZ_WZFLed off
     4:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      off
     globalinit 1
     last_timer 8
     sleepdevice Tageslicht_indoor
     sleepsubtimer -1
     sleeptimer -1
     timerdev   TVTime
     timerevent off
     triggerDev TVTime
     timerevents:
       off
     timereventsState:
       state: off
     triggerEvents:
       off
     triggerEventsState:
       state: off
   internals:
     0           Tageslicht_indoor:STATE
     1           Tageslicht_indoor:STATE
     all         Tageslicht_indoor:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
     4          -1
     5          4
     6          -1
     7          6
   itimer:
   localtime:
     0          1525006800
     1          1525032000
     2          1525006800
     3          1525032000
     4          1524945600
     5          1524970800
     6          1524945600
     7          1524970800
   perlblock:
   readings:
     1           TVTime:state
     2           TVTime:state
     3           PartyTime:state
     all         TVTime:state PartyTime:state
   realtime:
     0          15:00:00
     1          22:00:00
     2          15:00:00
     3          22:00:00
     4          22:00:00
     5          05:00:00
     6          22:00:00
     7          05:00:00
   time:
     0          15:00:00
     1          22:00:00
     2          15:00:00
     3          22:00:00
     4          22:00:00
     5          05:00:00
     6          22:00:00
     7          05:00:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
     4          2
     5          2
     6          3
     7          3
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
   timers:
     2           4  5
   trigger:
   triggertime:
     1524970800:
       localtime  1524970800
       hash:
     1525006800:
       localtime  1525006800
       hash:
     1525032000:
       localtime  1525032000
       hash:
   uiState:
   uiTable:
Attributes:
   room       2 DOIF
   wait       900


So, nun zu dem fehlverhalten:

TVTime war on. Irgendwann kam dann der [Tageslicht_indoor] eq "Nacht" Zustand dazu und 900sek später ging dann (set WZBodenLed on, set WZEZ_WZFLed on) was aber NICHT passieren durfte weil TVTime ja "on" war...

Weiß jemand warum das auf einmal nicht mehr funktioniert?

Vielen Dank!

Ellert

2018-04-28 22:25:13   e_TVTime_state  off

misux

Ja, das ist ja normal... Das Problem was um ca 20uhr, 900sek später ist dann das Licht on gegangen obwohl TVTime ON war....

Damian

Zitat von: misux am 29 April 2018, 07:08:02
Ja, das ist ja normal... Das Problem was um ca 20uhr, 900sek später ist dann das Licht on gegangen obwohl TVTime ON war....

Dann musst du von dem vermeintlichen Zustand auch den list-Output posten.

Man kann allerdings davon ausgehen, dass Bedingungen nie falsch ausgewertet werden können, denn das ist Sache des Perlinterpreters.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

misux

Hi, bin gerade mal wieder zu doof... Bei mir macht er bei list-Output DOIFWzEzBeleuchtung eine Unknown command Fehlermeldung...  ::)

Frank_Huber

Zitat von: misux am 29 April 2018, 09:17:24
Hi, bin gerade mal wieder zu doof... Bei mir macht er bei list-Output DOIFWzEzBeleuchtung eine Unknown command Fehlermeldung...  ::)
Nur list DOIFWz...

Gesendet von meinem S60 mit Tapatalk


misux


Frank_Huber

Im fehlerzustand?

Gesendet von meinem S60 mit Tapatalk


misux

  ::) ähm... Naja... Im Prinzip schon... Aber genau gesagt nein... Ok... Ich hätte das list gleich machen müssen als es geschaltet hat obwohl es nicht sollte...  :-\ okay... Ich versuche es heute zu wiederholen.

Frank_Huber

Siehst du. Und schon ist der list mehr oder weniger nutzlos. [emoji6]

Gesendet von meinem S60 mit Tapatalk


misux

Ach verdammt! Ich weiss es jetzt! Mann muss nur drüber reden...  ::) Hab einen Geistesblitz... Es ist halt noch nie vorgekommen das TVTime ON gegangen ist als der 900sek Timer schon im gange war! Meistens was TVTime schon davor on oder erdt als der Timer die Lichter schon eingeschaltet hat...

Also, puh.. Dann zu meier Frage:

wie sage ih dem 900sekTimer das er abbrechen soll wenn z. B. TVTime "on" wird während der Timer schon läuft!?

Frank_Huber

Da bin ich mir nicht 100 Prozent sicher, denke aber mit Attribut do resetwait.
Aber da melden sich sicher noch die Profis zu Wort.

Gesendet von meinem S60 mit Tapatalk


Damian

Zitat von: misux am 29 April 2018, 10:02:02
Ach verdammt! Ich weiss es jetzt! Mann muss nur drüber reden...  ::) Hab einen Geistesblitz... Es ist halt noch nie vorgekommen das TVTime ON gegangen ist als der 900sek Timer schon im gange war! Meistens was TVTime schon davor on oder erdt als der Timer die Lichter schon eingeschaltet hat...

Also, puh.. Dann zu meier Frage:

wie sage ih dem 900sekTimer das er abbrechen soll wenn z. B. TVTime "on" wird während der Timer schon läuft!?

Ein Wait-Timer wird immer dann abgebrochen, wenn ein anderer Zweig zuschlägt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

misux

#13
Also ist es nicht möglich das wait abzubrechen wenn das wait vom ersten zweig kommt?


Damian

Zitat von: misux am 29 April 2018, 15:49:31
Also ist es nicht möglich das wait abzubrechen wenn das wait vom ersten zweig kommt?

Warum denn nicht?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF