Hauptmenü

DOIF funktioniert nicht

Begonnen von tfriedrich85, 20 Mai 2025, 22:37:48

Vorheriges Thema - Nächstes Thema

tfriedrich85

Hallo,

irgendwie verhällt sich dieses DOIF nicht erwartungsgemäß.
Ich möchte mit dem letzten DOELSEIF zwei readingsproxys (Steckdosen) immer einschalten, sobald jemand zu Hause ist. Das funktioniert aber nicht.
Täglich ab ca 20 Uhr sind die Steckdosen aus und auch ein "checkall" Befehl schaltet die Steckdosen nicht wieder an.
Wo könnte denn hier der Fehler zu finden sein?


Internals:
   CFGFN     
   DEF        ([08:00-00:29] and [Bewohner] eq "home" ) (set Master on;)
DOELSEIF ([Bewohner] eq "home" and ![00:31-06:30] and [FritzBox:box_wlan_5GHz] eq "off") (set FritzBox wlan on;)
DOELSEIF ([Bewohner] eq "home" and ![00:30-08:00] and [prxPort3d.2:state] eq "off") (set prxPort3d.2 on)
DOELSEIF ([Bewohner] eq "home" and [08:30]) ({TemperaturAnsage("Wetter", "Sonos_Kueche")})
DOELSEIF ([Bewohner] eq "absent") (sleep 60 ; set Master off; set FritzBox wlan off ; set FritzBox guestwlan off )
DOELSEIF ([Bewohner] eq "absent" and [E3b.4:"^on$"] ) (set mybot message Vorsicht! Jemand befindet sich in der Wohnung! Obwohl von uns keiner da ist.)
DOELSEIF ([Bewohner] eq "home") (set prxPort24.0 on; set prxPort22.7 on;)
DOELSE ()
   FUUID      682ce3a8-f33f-e3f7-8ef9-c2d3cf3fa123b2ff
   MODEL      FHEM
   NAME       Wohnung
   NOTIFYDEV  prxPort3d.2,global,Bewohner,E3b.4,FritzBox
   NR         14210
   NTFY_ORDER 50-Wohnung
   STATE      initialized
   TYPE       DOIF
   VERSION    29460 2024-12-29 20:25:48
   eventCount 32
   Helper:
     DBLOG:
       cmd:
         logdb:
           TIME       1747772328.32496
           VALUE      0
       mode:
         logdb:
           TIME       1747772328.32496
           VALUE      enabled
       state:
         logdb:
           TIME       1747772328.32496
           VALUE      initialized
   READINGS:
     2025-05-20 22:29:53   cmd             0
     2025-05-20 22:29:53   mode            enabled
     2025-05-20 22:29:53   state           initialized
     2025-05-20 22:29:53   timer_01_c01    21.05.2025 08:00:00
     2025-05-20 22:29:53   timer_02_c01    21.05.2025 00:29:00
     2025-05-20 22:29:53   timer_03_c02    21.05.2025 00:31:00
     2025-05-20 22:29:53   timer_04_c02    21.05.2025 06:30:00
     2025-05-20 22:29:53   timer_05_c03    21.05.2025 00:30:00
     2025-05-20 22:29:53   timer_06_c03    21.05.2025 08:00:00
     2025-05-20 22:29:53   timer_07_c04    21.05.2025 08:30:00
   Regex:
     accu:
     bar:
     barAvg:
     collect:
     cond:
       Bewohner:
         0:
           &STATE     ^Bewohner$
         1:
           &STATE     ^Bewohner$
         2:
           &STATE     ^Bewohner$
         3:
           &STATE     ^Bewohner$
         4:
           &STATE     ^Bewohner$
         5:
           &STATE     ^Bewohner$
         6:
           &STATE     ^Bewohner$
       E3b.4:
         5:
           &STATE     ^E3b.4$
       FritzBox:
         1:
           box_wlan_5GHz ^FritzBox$:^box_wlan_5GHz:
       prxPort3d.2:
         2:
           state      ^prxPort3d.2$:^state:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms) and ::InternalDoIf($hash,'Bewohner','STATE') eq "home"
     1          ::InternalDoIf($hash,'Bewohner','STATE') eq "home" and !::DOIF_time($hash,2,3,$wday,$hms) and ::ReadingValDoIf($hash,'FritzBox','box_wlan_5GHz') eq "off"
     2          ::InternalDoIf($hash,'Bewohner','STATE') eq "home" and !::DOIF_time($hash,4,5,$wday,$hms) and ::ReadingValDoIf($hash,'prxPort3d.2','state') eq "off"
     3          ::InternalDoIf($hash,'Bewohner','STATE') eq "home" and ::DOIF_time_once($hash,6,$wday)
     4          ::InternalDoIf($hash,'Bewohner','STATE') eq "absent"
     5          ::InternalDoIf($hash,'Bewohner','STATE') eq "absent" and ::EventDoIf('E3b.4',$hash,'^on$',1)
     6          ::InternalDoIf($hash,'Bewohner','STATE') eq "home"
   days:
   do:
     0:
       0          set Master on;
     1:
       0          set FritzBox wlan on;
     2:
       0          set prxPort3d.2 on
     3:
       0          {TemperaturAnsage("Wetter", "Sonos_Kueche")}
     4:
       0          sleep 60 ; set Master off; set FritzBox wlan off ; set FritzBox guestwlan off
     5:
       0          set mybot message Vorsicht! Jemand befindet sich in der Wohnung! Obwohl von uns keiner da ist.
     6:
       0          set prxPort24.0 on; set prxPort22.7 on;
     7:
       0         
   helper:
     NOTIFYDEV  prxPort3d.2,global,Bewohner,E3b.4,FritzBox
     globalinit 1
     last_timer 7
     sleeptimer -1
   internals:
     all         Bewohner:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
     4          -1
     5          4
   intervalfunc:
   localtime:
     0          1747807200
     1          1747780140
     2          1747780260
     3          1747801800
     4          1747780200
     5          1747807200
     6          1747809000
   readings:
     all         FritzBox:box_wlan_5GHz prxPort3d.2:state
   realtime:
     0          08:00:00
     1          00:29:00
     2          00:31:00
     3          06:30:00
     4          00:30:00
     5          08:00:00
     6          08:30:00
   time:
     0          08:00:00
     1          00:29:00
     2          00:31:00
     3          06:30:00
     4          00:30:00
     5          08:00:00
     6          08:30:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
     4          2
     5          2
     6          3
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
   timers:
     0           0  1
     1           2  3
     2           4  5
     3           6
   trigger:
     all         E3b.4
   triggertime:
     1747780140:
       localtime  1747780140
       hash:
     1747780200:
       localtime  1747780200
       hash:
     1747780260:
       localtime  1747780260
       hash:
     1747801800:
       localtime  1747801800
       hash:
     1747807200:
       localtime  1747807200
       hash:
     1747809000:
       localtime  1747809000
       hash:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   do         always

Per

Einiges fällt mir auf:
  • Code nicht in Code Tags
  • ; statt ,
  • leeres DOELSE, zusätzlich do always
  • unübersichtliche Sortierung der Bedingungen
  • der Meesagebot wird nie eine Meldung
    schicken, weil der Fall schon vorher angefangen wird
  • fhem sleep statt DOIF wait (kann richtig sein, das Ergebnis ist aber ein anderes)
  • wer oder was schaltet die FB 20 Uhr aus?