Hauptmenü

Falscher Status

Begonnen von Sirel, 06 Dezember 2017, 17:47:12

Vorheriges Thema - Nächstes Thema

Sirel

Hallo zusammen,
ich beobachte ein Verhalten, welches ich mir nicht so recht erklären kann.
Bedingung 1 und 2 sind nahezu identisch, außer das in Bedingung 2 noch der Status eines anderen DOIFs geprüft wird — quasi als andere Form der Zeitangabe. Könnte ich auch analog für den ersten Bedingungsblock machen

Jetzt gerade sind alle Bedingungen für cmd 1 erfüllt. Wechsel ich auf absent, springt das DOIF auch richtigerweise auf cmd 1. Kurz darauf, wie im List zu sehen, dann aber auf cmd 5 — wohl weil das andere DOIF triggert. Die Bedingung 1 ist aber weiterhin wahr. Weshalb springt das Modul dann auf cmd 5?

Hier mein DOIF
Internals:
   DEF        ([rgr_Bewohner] =~ /gone|absent/ and [Helligkeit] =~ /Nacht/ and [16:00-22:00]) (set struc_RL_Gaestezimmer [FILTER=position_2>0] Runter, set struc_RL_EG_Gesamt [FILTER=position_2>0] Runter)
DOELSEIF ([rgr_Bewohner] =~ /gone|absent/ and [Helligkeit] =~ /Nacht/ and [di_Lichtsteuerung_unten_absent:cmd] == 2) (set RL_.*:FILTER=position_2>0 Runter) (set BL_.*:FILTER=room=(Badezimmer_OG|Flur_OG):FILTER=STATE!=(An|On) on-for-timer 180)
DOELSEIF ([rgr_Bewohner] =~ /gone|absent/ and [[wakeupzeit]-23:00|8] and  [Helligkeit] =~ /Tag/) (set struc_RL_Alle [FILTER=position_2<5] Hoch, set BL_Bettlampe:FILTER=state!=off off)
DOELSEIF ([rgr_Bewohner] =~ /gone|absent/ and [10:30-23:00|7] and  [Helligkeit] =~ /Tag/) (set struc_RL_Alle [FILTER=position_2<5] Hoch) DOELSE
   NAME       di_Rollladensteuerung_Absent
   NR         124
   NTFY_ORDER 50-di_Rollladensteuerung_Absent
   STATE      cmd_5
   TYPE       DOIF
   READINGS:
     2017-12-06 17:30:14   Device          di_Lichtsteuerung_unten_absent
     2017-12-06 17:30:13   cmd             5
     2017-12-06 17:30:13   cmd_event       di_Lichtsteuerung_unten_absent
     2017-12-06 17:30:13   cmd_nr          5
     2017-12-06 17:30:14   e_di_Lichtsteuerung_unten_absent_cmd 1.1
     2017-12-06 17:29:53   e_rgr_Bewohner_STATE absent
     2017-12-06 17:30:13   state           cmd_5
     2017-12-06 16:36:38   timer_01_c01    07.12.2017 16:00:00
     2017-12-06 16:36:38   timer_02_c01    06.12.2017 22:00:00
     2017-12-06 16:36:38   timer_03_c03    07.12.2017 09:20:00|8
     2017-12-06 16:36:38   timer_04_c03    06.12.2017 23:00:00|8
     2017-12-06 16:36:38   timer_05_c04    07.12.2017 10:30:00|7
     2017-12-06 16:36:38   timer_06_c04    06.12.2017 23:00:00|7
   Regex:
   condition:
     0          InternalDoIf($hash,'rgr_Bewohner','STATE') =~ /gone|absent/ and InternalDoIf($hash,'Helligkeit','STATE') =~ /Nacht/ and DOIF_time($hash,0,1,$wday,$hms)
     1          InternalDoIf($hash,'rgr_Bewohner','STATE') =~ /gone|absent/ and InternalDoIf($hash,'Helligkeit','STATE') =~ /Nacht/ and ReadingValDoIf($hash,'di_Lichtsteuerung_unten_absent','cmd') == 2
     2          InternalDoIf($hash,'rgr_Bewohner','STATE') =~ /gone|absent/ and DOIF_time($hash,2,3,$wday,$hms,"8") and  InternalDoIf($hash,'Helligkeit','STATE') =~ /Tag/
     3          InternalDoIf($hash,'rgr_Bewohner','STATE') =~ /gone|absent/ and DOIF_time($hash,4,5,$wday,$hms,"7") and  InternalDoIf($hash,'Helligkeit','STATE') =~ /Tag/
   days:
     2          8
     3          8
     4          7
     5          7
   devices:
     0           rgr_Bewohner Helligkeit
     1           rgr_Bewohner Helligkeit di_Lichtsteuerung_unten_absent
     2           rgr_Bewohner Helligkeit
     3           rgr_Bewohner Helligkeit
     all         rgr_Bewohner Helligkeit di_Lichtsteuerung_unten_absent
   do:
     0:
       0          set struc_RL_Gaestezimmer [FILTER=position_2>0] Runter, set struc_RL_EG_Gesamt [FILTER=position_2>0] Runter
     1:
       0          set RL_.*:FILTER=position_2>0 Runter
       1          set BL_.*:FILTER=room=(Badezimmer_OG|Flur_OG):FILTER=STATE!=(An|On) on-for-timer 180
     2:
       0          set struc_RL_Alle [FILTER=position_2<5] Hoch, set BL_Bettlampe:FILTER=state!=off off
     3:
       0          set struc_RL_Alle [FILTER=position_2<5] Hoch
     4:
       0         
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      wait_timer: 06.12.2017 17:33:22 cmd_1_2 rgr_Bewohner
     globalinit 1
     last_timer 6
     sleeptimer -1
     timerdev   di_Lichtsteuerung_unten_absent
     timerevent wait_timer: 06.12.2017 17:33:22 cmd_1_2 rgr_Bewohner
     triggerDev di_Lichtsteuerung_unten_absent
     timerevents:
       wait_timer: 06.12.2017 17:33:22 cmd_1_2 rgr_Bewohner
     timereventsState:
       wait_timer: 06.12.2017 17:33:22 cmd_1_2 rgr_Bewohner
     triggerEvents:
       wait_timer: 06.12.2017 17:33:22 cmd_1_2 rgr_Bewohner
     triggerEventsState:
       wait_timer: 06.12.2017 17:33:22 cmd_1_2 rgr_Bewohner
   internals:
     0           rgr_Bewohner:STATE Helligkeit:STATE
     1           rgr_Bewohner:STATE Helligkeit:STATE
     2           rgr_Bewohner:STATE Helligkeit:STATE
     3           rgr_Bewohner:STATE Helligkeit:STATE
     all         rgr_Bewohner:STATE Helligkeit:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
     4          -1
     5          4
   itimer:
     all         wakeupzeit
   localtime:
     0          1512658800
     1          1512594000
     2          1512634800
     3          1512597600
     4          1512639000
     5          1512597600
   readings:
     1           di_Lichtsteuerung_unten_absent:cmd
     all         di_Lichtsteuerung_unten_absent:cmd
   realtime:
     0          16:00:00
     1          22:00:00
     2          09:20:00
     3          23:00:00
     4          10:30:00
     5          23:00:00
   time:
     0          16:00:00
     1          22:00:00
     2          [wakeupzeit]
     3          23:00:00
     4          10:30:00
     5          23:00:00
   timeCond:
     0          0
     1          0
     2          2
     3          2
     4          3
     5          3
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
   timers:
     0           0  1
     2           2  3
     3           4  5
   trigger:
   triggertime:
     1512594000:
       localtime  1512594000
       hash:
     1512597600:
       localtime  1512597600
       hash:
     1512634800:
       localtime  1512634800
       hash:
     1512639000:
       localtime  1512639000
       hash:
     1512658800:
       localtime  1512658800
       hash:
   uiState:
   uiTable:
Attributes:
   timerWithWait 1
   verbose    0
   wait       :,15:rand(1800)+2700:rand(3600)


Dank vorab,
Max

Damian

Zitat aus der Commandref:

ZitatDie Angaben werden immer von links nach rechts abgearbeitet. Zu beachten ist, dass nur die Bedingungen überprüft werden, die zum ausgelösten Event das dazughörige Device bzw. die dazugehörige Triggerzeit beinhalten. Kommt ein Device in mehreren Bedingungen vor, so wird immer nur ein Kommando ausgeführt, und zwar das erste, für das die dazugehörige Bedingung in der abgearbeiteten Reihenfolge wahr ist.

das Verhalten kannst du mit http://fhem.de/commandref_DE.html#DOIF_checkall beeinflussen, z. B. checkall all
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Sirel

Hi Damian,
wie immer, besten Dank! Ich war davon ausgegangen, dass das gesamt Modul neu getriggert wird, sofern ein Device innerhalb der Bedingungen triggert.

Bis demnächst,
Max